`
hulianwang2014
  • 浏览: 726559 次
文章分类
社区版块
存档分类
最新评论
  • bcworld: 排版成这样,一点看的欲望都没有了
    jfinal

Java HotSpot VM命名参数选项详解

 
阅读更多


Java Hotspot VM 可选参数选项可以划分为四类:

Ø 行为选项改变了基本VM的行为。

Ø G1垃圾收集器选项(GarbageFirst (G1) Garbage Collection Options

Ø 性能调优选项就一个个能够用来调节VM性能的旋钮

Ø 调试选项一般跟踪、打印或是输出VM信息。在跟踪程序的处理流程非常有用,尤其对于不知道程序有问题而不知道问题到底处在哪里时就特别有用。

行为选项

Option and Default Value

Description

-XX:-AllowUserSignalHandlers

如果应用程序安装了信号处理器,就不会申诉(仅与Solaris和Linux系统有关)。

-XX:AltStackSize=16384

交替的信号栈大小(k 字节). (仅与Solaris 有关, 在5.0版本已经移除.)

-XX:-DisableExplicitGC

使方法System.gc()调用失效,当需要时 JVM 仍然执行垃圾回收。

-XX:+FailOverToOldVerifier

当新的类型检测器失败时切换到旧的认证器(jdk6引入此项)。

-XX:+HandlePromotionFailure

最年轻代集合不需要一个对所有存在对完全提升的保证。 (在1.4.2 升级到11引进) [5.0 和早期的版本为false]

-XX:+MaxFDLimit

猛烈将文件描写的数量增加到最大。 (仅与Solaris系统有关.)

-XX:PreBlockSpin=10

快速的旋运动变量数设定-XX:+UseSpinning.在进入操作系统线程同步代码前,控制最大旋转允许的跌代数。 (在1.4.2.引入)

-XX:-RelaxAccessControlCheck

放松访问控制检查验证 (在jdk6引入)

-XX:+ScavengeBeforeFullGC

年轻代GC优先于一个完全GC。 (在jdk1.4.1.引入)

-XX:+UseAltSigs

对于VM内部信号,应用轮换信号代替SIGUSR1 和SIGUSR2 . (仅与Solaris有关.)

-XX:+UseBoundThreads

绑定用户级别线程到kernel 线程. (仅与Solaris有关.)

-XX:-UseConcMarkSweepGC

为旧代(old generation)使用并发标记的搜索集合. (在1.4.1引入)

-XX:+UseGCOverheadLimit

使用一种策略,这种策略能够限制VM在内存溢出前花费在GC上的时间比例。 (在jdk 6进入.)

-XX:+UseLWPSynchronization

使用基于LWP-代替基于线程同步。(在jdk1.4.0. 仅针对Solaris)

-XX:-UseParallelGC

使用并行垃圾收集器对垃圾进行回收。 (在jdk 1.4.1引入)

-XX:-UseParallelOldGC

所有的集合使用并行垃圾收集器。能够自动化地设置这个选项 -XX:+UseParallelGC. (在jdk 5.0 升级到 6时引入.)

-XX:-UseSerialGC

使用序列的垃圾收集器. (在jdk 5引入.)

-XX:-UseSpinning

在同步进入到操作系统线程同步代码前,能够在Java监视器中单纯的旋转。 (仅与jdk1.4.2 到 5.0 有关.)

-XX:+UseTLAB

使用本地线程对象分配 (在jdk 1.4.0引入,众所周知的, UseTLE优先于那种.)

-XX:+UseSplitVerifier

使用StackMapTable 属性来作为新类型检测器。(在jdk 5.0引入.)[5.0: false]

-XX:+UseThreadPriorities

使用本地线程优先级。

-XX:+UseVMInterruptibleIO

线程中断前或是EINTR 在OS_INTRPT中对于I/O操作的结果 (在jdk 6 引入,仅与Solaris 有关)

G1(Garbage First)垃圾收集选项

Option and Default Value

Description

-XX:+UseG1GC

使用G1 (Garbage First) 收集器

-XX:MaxGCPauseMillis=n

对于最大GC停顿时间,设置一个目标。 这是一个软目标,于此同时JVM将会做最大努力去完成它。

-XX:InitiatingHeapOccupancyPercent=n

整个堆占据的百分比去开始一个并发GC循环。他被GC使用来触发一个基于整个堆占据的并发GC循环, 不仅仅只有一个地代(G1). 0值说明是“做实时GC循环”。默认值是45 。

-XX:NewRatio=n

旧/新代大小比例。默认是2.

-XX:SurvivorRatio=n

eden/survivor 空间大小比例。默认值是8

-XX:MaxTenuringThreshold=n

永久占用临界最大值。默认值是15.

-XX:ParallelGCThreads=n

在并行的垃圾收集阶段设置使用的线程数。默认值因JVM运行的平台的不同而不同。

-XX:ConcGCThreads=n

并发垃圾收集线程 将会使用默认值因JVM运行的平台的不同而不同.

-XX:G1ReservePercent=n

设置被保留作为吊顶的堆量,以减少可能的增量失败. 默认值是10.

-XX:G1HeapRegionSize=n

伴随G1 Java堆被子划分为统一的大小区域。这个参数的默认值取决于根据环境改造地基准堆得大小。最小是1M币,最大是32Mb。

性能优化选项

Option and Default Value

Description

-XX:+AggressiveOpts

打开点性能的编译器优化,它预计将在即将发布为默认. (在jdk 5 升级到6引入.)

-XX:CompileThreshold=10000

在编译之前,方法数量调用/分支[-client: 1,500]

-XX:LargePageSizeInBytes=4m

设置大页面使用Java堆的大小 (在1.4.0 更新中引入) [amd64: 2m.]

-XX:MaxHeapFreeRatio=70

在GC之后最大堆释放的百分比,这样来避免萎缩。

-XX:MaxNewSize=size

新代(字节)最大值自从1.4, MaxNewSize is 计算作为NewRatio一个方法. [1.3.1 Sparc: 32m; 1.3.1 x86: 2.5m.]

-XX:MaxPermSize=64m

永久代的大小[5.0 和 新的64 bit VMs 扩展了30%的大小; 1.4 amd64: 96m; 1.3.1 -client: 32m.]

-XX:MinHeapFreeRatio=40

GC之后,自由的堆得最小百分来避免扩展。

-XX:NewRatio=2

新/老代的比例[Sparc -client: 8; x86 -server: 8; x86 -client: 12.]-client: 4 (1.3) 8 (1.3.1+), x86: 12]

-XX:NewSize=2m

新代的默认大小 (字节) [5.0 和新的64 bit VMs 扩展了30% larger; x86: 1m; x86, 5.0 and older: 640k]

-XX:ReservedCodeCacheSize=32m

预留的缓存代码大小 (字节) – 最大代码缓冲大小. [Solaris 64-bit, amd64, and -server x86: 48m; in 1.5.0_06 and earlier, Solaris 64-bit and amd64: 1024m.]

-XX:SurvivorRatio=8

活跃区/幸免区(eden/survivor)的空间大小比例[Solaris amd64: 6; Sparc in 1.3.1: 25; other Solaris platforms in 5.0 and earlier: 32]

-XX:TargetSurvivorRatio=50

在清理完后幸存空间的百分率。.

-XX:ThreadStackSize=512

线程栈的大小(字节). (0 意味着使用默认的栈大小[Sparc: 512; Solaris x86: 320 (was 256 prior in 5.0 and earlier); Sparc 64 bit: 1024; Linux amd64: 1024 (was 0 in 5.0 and earlier); all others 0.]

-XX:+UseBiasedLocking

能使用带有偏见的锁,更多的细节,查看优化例子 ( 5.0 更新到 6引入.) [5.0: false]

-XX:+UseFastAccessorMethods

使用优化了Get Get<Primitive>Field版本.

-XX:-UseISM

使用内部的共享内存. [仅对Solaris 平台] 更多的细节,查阅内部的共享内存.

-XX:+UseLargePages

使用大的内存页 (5.0 更行引入.),更多的细节,请查阅Java对大内存页支持

-XX:+UseMPSS

使用多个页大小来支持对于栈w/4mb页. 不用伴随使用ISM,由于这取代了对于ISM的需要。 (1.4.0 更新引进,进对Solaris 9+支持.) [1.4.1 and earlier: false]

-XX:+UseStringCache

能够缓存一般分配的字符串。

-XX:AllocatePrefetchLines=1

最后一个对象分配使用在JIT编译代码产生的预取指令后,加载缓存线数默认的值是1. 最后分配的对象是一个实例以及如果它是一个数组便是值3.

-XX:AllocatePrefetchStyle=1

产生预取指令的代码样式.
0 – 没有预取指令产生,
1 – 在每个分配后,执行预取指令,
2 – 当预取指令执行了,使用TLAB 分配水印指针到闸门。

-XX:+UseCompressedStrings

使用字节数组能够以纯ASCII码来描述字符串。(JDK 6 更新版本21 性能发布时引入)

-XX:+OptimizeStringConcat

那儿有可能实现优化了字符串的拼接操作。(JDK 6升级到20时引入)

调试选项

略...

JVM 工作流概述图



分享到:
评论

相关推荐

    Troubleshooting Guide for Java SE 6 with HotSpot VM

    ### Java SE 6与HotSpot VM故障排除指南关键知识点解析 #### 一、概述 《Java SE 6与HotSpot VM故障排除指南》是Oracle公司于2008年11月发布的一份技术文档,旨在帮助开发人员、系统管理员和技术支持人员解决在...

    The Java HotSpot VM.pdf

    《Java HotSpot 虚拟机》文件中包含了关于Java虚拟机(JVM)的深入讨论,尤其是在HotSpot虚拟机上的即时编译(JIT)技术,以及Java语言的最新发展。文件内容侧重于以下几个核心知识点: 1. **Java HotSpot虚拟机的...

    Java HotSpot虚拟机的部分参数翻译

    本文将深入探讨Java HotSpot虚拟机的部分参数及其作用,帮助开发者更好地理解和调整JVM的配置,以优化应用程序性能。 一、JVM启动参数类型 Java HotSpot虚拟机的参数可以分为三类: 1. 标准选项(-X):由Sun ...

    hllvm.HotSpot VM Serial GC的一个问题1

    【Java HotSpot VM Serial GC详解】 HotSpot VM的Serial GC是一种单线程的垃圾收集器,主要用于新生代的垃圾回收,特别适用于轻量级和低内存的环境。在这个话题中,我们将深入探讨Serial GC在新生代(Young ...

    借HSDB来探索HotSpot VM的运行时数据.gist1

    HotSpot VM是Oracle JDK中默认的JVM实现,它提供了一种称为HSDB(HotSpot Debugger Bridge)的工具,用于在运行时查看和分析JVM内部的数据。本篇将通过HSDB的使用案例来探讨HotSpot VM的运行时数据。 首先,我们...

    Compilation in the HotSpot VM-Zoltan-Majo.pdf

    Compilation in the HotSpot VM 是一篇关于 Java 虚拟机(Java Virtual Machine,JVM)的技术文档, 由 Oracle 公司的 HotSpot 编译器团队的 Zoltán Majó 撰写。该文档详细介绍了 HotSpot JVM 中的编译过程,包括...

    Memory Management in the Java HotSpot Virtual Machine.pdf

    本文档提供了Java HotSpot虚拟机(JVM)中内存管理的广泛概述,特别是在Sun公司的Java 2平台标准版(J2SE)5.0版本的发布中。文档描述了可供使用的垃圾收集器(Garbage Collectors),给出了关于如何选择和配置收集...

    Java Performance Companion(Addison,2016)

    The authors, who are all leading Java performance and Java HotSpot VM experts, help you improve performance by using modern software engineering practices, avoiding common mistakes, and applying tips ...

    翻译《Memory Management in the Java HotSpot™ Virtual Machine》

    《Memory Management in the Java HotSpot™ Virtual Machine》一文深入探讨了Java HotSpot虚拟机中的内存管理机制,这是Java性能优化的关键领域。HotSpot虚拟机是Oracle JDK和JRE的一部分,以其高性能和优化能力而...

    借HSDB来探索HotSpot VM的运行时数据1

    在启动jdb时,通过`-XX:+UseSerialGC`选项启用串行垃圾收集器,并使用`-Xmx10m`限制Java堆大小为10MB,这样可以更好地控制和理解内存行为。通过`stop in`命令在`Test.fn`方法入口处设置断点,然后使用`run`命令启动...

    hotspot.tar.gz

    Hotspot VM提供了丰富的性能监控和调试工具,如JConsole、VisualVM、JFR(Java Flight Recorder)、JITWatch等,它们可以帮助开发者深入了解JVM的运行状态,定位性能瓶颈,进行问题排查。 总结来说,Hotspot JVM...

    java-jdk-hotspot源码

    学习JDK 源码必备,提起HotSpot VM,相信所有Java程序员都知道,它是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。 但不一定所有人都知道的是,这个目前看起来“血统纯正”的虚拟机在最初...

    The_Java_HotSpot_Performance_Engine_Architecture

    ### Java HotSpot 性能引擎架构相关知识点 #### 一、引言与概览 **Java HotSpot 虚拟机**是 Sun 公司针对 Java 平台设计的一款高性能虚拟机,它作为 Java SE 平台的核心组件,为商业关键型应用提供了强大的支持。...

    08-java11-hotspot-guide.pdf

    HotSpot虚拟机的技术细节并没有在摘录的内容中详细说明,但根据Java SE的官方文档和HotSpot的广泛知识,HotSpot虚拟机通过以下几个方面提高Java程序的性能: 1. 即时编译器:HotSpot虚拟机包含两个主要的JIT编译器...

    hllvm.借HSDB来探索HotSpot VM的运行时数据1

    【描述】:本篇文章旨在探讨Java内存模型中不同类型的变量——包括静态变量t1、实例变量t2和局部变量t3——在HotSpot VM中的存储位置。我们将借助HSDB(HotSpot Serviceability Agent的调试器)来探索实际运行时的...

    Design of the Java HotSpot.pdf

    Java HotSpot 客户端编译器设计 Java HotSpot 是 Sun Microsystems 开发的一款 Java 虚拟机(JVM),其中客户端编译器(Client Compiler)是 JVM 的核心组件之一。该编译器负责将 Java 字节码编译成机器代码,以...

    JavaVM运作原理

    以HotSpot VM为例,它使用了一种基于模板的优化技术。 ##### HotSpot VM实现细节 ```c void TemplateTable::iop2(Operation op) { transition(itos, itos); switch (op) { case add: __pop_i(rdx); __addl(rax, ...

    Hotspot VM源码

    HotSpot正是目前世界上java虚拟机的最好的实现。 HotSpot的基础代码是许多人辛勤劳动的结晶,这个过程迄今已持续了超过10年的时间(当然时间长并不意味着一定好,一半一半吧)。所以到现在为止,他的体积是很大的。...

Global site tag (gtag.js) - Google Analytics