参数相当的多,特别是-XX的参数,有近千个,都列出来有些疯狂,因此只列出了可能会用到的参数(有中文说明的),那些不常用的估计一辈子也用不到。这就不少了,这么多的参数,我的建议是:见一个,学一个,消灭一个。
1. 标准参数(运行java,可以看详细说明)
(1)-client:代码编译快速,JVM启动迅速,占用内存范围小,运行时间短。
-hotspot 即 -client,已经不推荐使用。JVM 默认值。
(2)-server:优化代码编译(启动JIT编译,关于JIT,参见《JIT 是啥东东?》),JVM启动较慢,占用内存范围大,运行时间长。
(3)-verbose[:class|gc|jni]:打印详细的输出(class、gc、jni)
(4)-cp:类路径
(5)-classpath:类路径
(6)-version:打印版本号
(7)-showversion:打印版本号并显示参数说明
(8)-fullversion:打印详细的版本号
(9)-agentlib:[=]
(10)-agentpath:[=]
(11)-javaagent:[=]
(12)-d32
(13)-d64
(14)-ea[:packagename...|:classname]
(15)-enableassertions[:packagename...|:classname]
(16)-da[:packagename...|:classname]
(17)-disableassertions[:packagename...|:classname]
(18)-esa
(19)-enablesystemassertions
(20)-dsa
(21)-disablesystemassertions
(22) -D[name]=[value]:设置一个系统属性
(23) -jre-restrict-search
(24) -jre-no-restrict-search
2. -X 参数 (运行java -X,可以看详细说明)
(1)-Xtm
(2)-Xbootclasspath[/a|/p]:<path>
(3)-Xdebug
(4)-Xfuture
(5)-Xcheck:jni
(6)-Xshare:off
(7)-Xshare:auto
(8)-Xshare:on
(9)-Xnoclassgc
(10) -Xss<size> : 设置每个线程的堆栈大小。默认值:1M(JDK5.0),256k(JDK5.0之前)。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
(11) -Xoss<size>
(12) -Xms<size> :Heap的最小值。默认是物理内存的1/64。
(13) -Xmx<size>: Heap的最大值。默认是物理内存的1/4。
(14) -Xmn<size> :直接指定年轻代的大小。此值对系统性能影响甚大,Sun官方推荐为Heap的3/8。
(15) -Xrs
(16) -Xrunhprof[:help]|[:option=value, ...]
(17)- Xmaxjitcodesize<size>
(18) -Xsqnopause
(19) -Xoptimize
(20) -Xmixed
(21) -Xint
(22) -Xincgc
(23) -Xconcgc
(24) -Xprof
(25) -Xaprof
(26) -Xloggc:<file>:指定垃圾收集日志文件。
(27) -Xcomp
(28) -Xbatch
(29) -Xconcurrentio
(30) -Xgenconfig
(31) -Xverifyheap
3. -XX 参数
(1)XX:MinHeapFreeRatio=:设定Heap剩余空间最小值百分比,如果小于此值,JVM会增大Heap空间直到-Xmx。默认值:40%。如果把-Xms和-Xmx设置成相等后,则不起作用。
(2)XX:MaxHeapFreeRatio=:设定Heap剩余空间最大值百分比,如果大于此值,JVM会减小Heap空间直到-Xms。默认值:70%。如果把-Xms和-Xmx设置成相等后,则不起作用。
(3)-XX:+PrintGCDetails:显示GC详细信息。
(4)-XX:+PrintGCTimeStamps:显示每次GC开始的时间戳。
(5)-XX:+PrintGCApplicationConcurrentTime:显示应用执行的时间。
(6)-XX:+PrintGCApplicationStoppedTime:显示应用被暂停的时间。
(7)-XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。
(8)-XX:NewRatio=:设定年老代与年轻代(包括Eden和两个Survivor区)的比值。比如设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个Heap的1/5。
(9)-XX:SurvivorRatio=:设定年轻代中Eden区与Survivor区的比值。默认值32。比如设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个 Survivor区占整个年轻代的1/6。Survivio的空间过大会造成浪费,过小会使一些年轻对象潜逃到年老代。
(10)-XX:NewSize=:设置年轻代最小值。
(11)-XX:MaxNewSize=:设置年轻代最大值。
(12)-XX:+UseParNewGC:设置年轻代为并行收集。可与CMS收集同时使用。
(13)-XX:TargetSurvivorRatio:设置Survivor区使用的百分比。默认值是50%。
(14)-XX:MaxTenuringThreshold=:设置熬过年轻代多少次收集后移入年老代,CMS中默 认为0,熬过第一次GC就转入,不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代的存活时间,增加在年轻代即被回收的概率。
(15)-XX:+PrintTenuringDistribution:查看年老代收集信息。
(16)-XX:+UseConcMarkSweepGC:设置年老代为并发收集。
(17)-XX:PermSize=:设定永久代最小值。
(18)-XX:MaxPermSize=:设定永久代最大值。
参考文献:
1. 《A Collection of JVM Options 》
1. 标准参数(运行java,可以看详细说明)
(1)-client:代码编译快速,JVM启动迅速,占用内存范围小,运行时间短。
-hotspot 即 -client,已经不推荐使用。JVM 默认值。
(2)-server:优化代码编译(启动JIT编译,关于JIT,参见《JIT 是啥东东?》),JVM启动较慢,占用内存范围大,运行时间长。
(3)-verbose[:class|gc|jni]:打印详细的输出(class、gc、jni)
(4)-cp:类路径
(5)-classpath:类路径
(6)-version:打印版本号
(7)-showversion:打印版本号并显示参数说明
(8)-fullversion:打印详细的版本号
(9)-agentlib:
(10)-agentpath:
(11)-javaagent:
(12)-d32
(13)-d64
(14)-ea[:packagename...|:classname]
(15)-enableassertions[:packagename...|:classname]
(16)-da[:packagename...|:classname]
(17)-disableassertions[:packagename...|:classname]
(18)-esa
(19)-enablesystemassertions
(20)-dsa
(21)-disablesystemassertions
(22)
2. -X 参数
(2)-Xbootclasspath[/a|/p]:<path>
(3)-Xdebug
(4)-Xfuture
(5)-Xcheck:jni
(6)-Xshare:off
(7)-Xshare:auto
(8)-Xshare:on
(9)-Xnoclassgc
(10)
(18)
(1)XX:MinHeapFreeRatio=:设定Heap剩余空间最小值百分比,如果小于此值,JVM会增大Heap空间直到-Xmx。默认值:40%。如果把-Xms和-Xmx设置成相等后,则不起作用。
(2)XX:MaxHeapFreeRatio=:设定Heap剩余空间最大值百分比,如果大于此值,JVM会减小Heap空间直到-Xms。默认值:70%。如果把-Xms和-Xmx设置成相等后,则不起作用。
(3)-XX:+PrintGCDetails:显示GC详细信息。
(4)-XX:+PrintGCTimeStamps:显示每次GC开始的时间戳。
(5)-XX:+PrintGCApplicationConcurrentTime:显示应用执行的时间。
(6)-XX:+PrintGCApplicationStoppedTime:显示应用被暂停的时间。
(7)-XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。
(8)-XX:NewRatio=:设定年老代与年轻代(包括Eden和两个Survivor区)的比值。比如设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个Heap的1/5。
(9)-XX:SurvivorRatio=:设定年轻代中Eden区与Survivor区的比值。默认值32。比如设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个 Survivor区占整个年轻代的1/6。Survivio的空间过大会造成浪费,过小会使一些年轻对象潜逃到年老代。
(10)-XX:NewSize=:设置年轻代最小值。
(11)-XX:MaxNewSize=:设置年轻代最大值。
(12)-XX:+UseParNewGC:设置年轻代为并行收集。可与CMS收集同时使用。
(13)-XX:TargetSurvivorRatio:设置Survivor区使用的百分比。默认值是50%。
(14)-XX:MaxTenuringThreshold=:设置熬过年轻代多少次收集后移入年老代,CMS中默 认为0,熬过第一次GC就转入,不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代的存活时间,增加在年轻代即被回收的概率。
(15)-XX:+PrintTenuringDistribution:查看年老代收集信息。
(16)-XX:+UseConcMarkSweepGC:设置年老代为并发收集。
(17)-XX:PermSize=:设定永久代最小值。
(18)-XX:MaxPermSize=:设定永久代最大值。
参考文献:
1. 《A Collection of JVM Options 》
没有评论:
发表评论