JVM参数说明

Posted kankankankankan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM参数说明相关的知识,希望对你有一定的参考价值。

转载于https://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html文章

 

JVM参数说明

-Xms:初始堆大小  默认值=物理内存的1/64,当空余的堆内存小于40%时,JVM就会增大堆直到-Xmx设置值

-Xmx:最大堆大小 默认值=无聊内存的1/4,  当空余堆内存大于70%时,JVM会将堆大小减少直到-Xms设置值

-Xmn:年轻代  整个堆大小=年轻代大小+年老代大小+持久代大小。 增大年轻代后,将会减少年老代大小,此

值对系统性能影响较大。Sun官方推荐配置为整个堆大小的3/8

-XX:NewSize: 年轻代

-XX:MaxNewSize: 年轻代最大值

-XX:PermSize  持久代初始值

-XX:MaxPermSize  持久代最大值

-Xss  每个线程的堆栈大小   JDK5以后每个线程的堆栈大小为1M,之前是256k。 在相同物理内存下,减小这个

值能生成更多的线程,但操作系统对一个进程中的线程数也是有限制的,3000-5000。一般小的应用,如果栈不

是很深,应该128k够用的,大的应用建议使用256k。这个值对性能影响比较大,需先测试

-XX:NewRatio 年轻代(包括Eden和两个Survivor)与年老代的比值  --XX:NewRatio=4表示年轻代与年老代所占

比值为1:4,年轻代占整个堆栈的1/5 。 当Xms=Xmx并设置了Xmn的情况下,该参数可以不设置

-XX:SurvivorRatio  Eden区与Survivor区的大小壁纸 设置为8,表示两个Survivor区与一个Eden区的比值为2:8

一个Survivor区占整个年轻代的1/10

-XX:LargePageSizeInBytes  内存页的大小不可设置过大,会影响到perm的大小  一般值为128M

-XX:MaxTenuringThreshold  垃圾最大年龄。如果设为0的话,则年轻代对象不经过Survivor区,直接进入年老

代,对于年老代比较多的应用,则年轻代对象会在Survivor区进行多次复制,这会增加对象在年轻代的存活时间

增加年轻代被回收的概率,该参数只有在串行GC才有效

=========================

 

-server:一定要作为第一个参数,在多个CPU时性能佳 

 

-Xms:java Heap初始大小。 默认是物理内存的1/64。

 

-Xmx:java heap最大值。建议均设为物理内存的一半。不可超过物理内存。

 

-XX:PermSize:设定内存的永久保存区初始大小,缺省值为64M。(我用visualvm.exe查看的)

 

-XX:MaxPermSize:设定内存的永久保存区最大大小,缺省值为64M。(我用visualvm.exe查看的)

 

-XX:SurvivorRatio=2  :生还者池的大小,默认是2,如果垃圾回收变成了瓶颈,您可以尝试定制生成池设置

 

-XX:NewSize: 新生成的池的初始大小。 缺省值为2M。

 

-XX:MaxNewSize: 新生成的池的最大大小。  缺省值为32M。

 

如果 JVM 的堆大小大于 1GB,则应该使用值:-XX:newSize=640m -XX:MaxNewSize=640m -XX:SurvivorRatio=16,或者将堆的总大小的 50% 到 60% 分配给新生成的池。调大新对象区,减少Full GC次

 

+XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。 

 

-Xss:每个线程的Stack大小,“-Xss 15120” 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k. 

 

-verbose:gc 现实垃圾收集信息 

 

-Xloggc:gc.log 指定垃圾收集日志文件 

 

-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一 

 

-XX:+UseParNewGC :缩短minor收集的时间 

 

-XX:+UseConcMarkSweepGC :缩短major收集的时间 此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适。

 

-XX:userParNewGC 可用来设置并行收集【多CPU】

 

-XX:ParallelGCThreads 可用来增加并行度【多CPU】

 

-XX:UseParallelGC 设置后可以使用并行清除收集器【多CPU】

 

 

 

-Xmx4000M -Xms4000M -Xmn600M -XX:PermSize=500M -XX:MaxPermSize=500M -Xss256K -XX:+DisableExplicitGC -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:log/gc.log

 

<jvm-arg>-Xms2048m</jvm-arg>
<jvm-arg>-Xmx2048m</jvm-arg>
<jvm-arg>-Xmn512m</jvm-arg>
<jvm-arg>-Xss1m</jvm-arg>
<jvm-arg>-XX:PermSize=256M</jvm-arg>
<jvm-arg>-XX:MaxPermSize=256M</jvm-arg>
<jvm-arg>-XX:SurvivorRatio=8</jvm-arg>
<jvm-arg>-XX:MaxTenuringThreshold=15</jvm-arg>
<jvm-arg>-XX:+UseParallelOldGC</jvm-arg>
<jvm-arg>-XX:GCTimeRatio=19</jvm-arg>
<jvm-arg>-XX:+PrintGCDetails</jvm-arg>
<jvm-arg>-XX:+PrintGCTimeStamps</jvm-arg>

 

以上是关于JVM参数说明的主要内容,如果未能解决你的问题,请参考以下文章

JVM参数说明(转)

JVM参数说明

深入理解JVM—Java 6 JVM参数配置说明

jvm 参数说明

常用的JVM配置参数说明

常用的JVM配置参数说明