本文研究的主要是jvm中的flag设置详解的相关内容,具体介绍如下。
一、堆大小设置
-xmx3550m:设置jvm最大可用内存为3550m。
-xms3550m:设置jvm初始可用内存为3550m。
-xmn2g:设置年轻代大小为2g。
-xss128k:设置每个线程的堆栈大小为128k
-xx:newsize=4:设置年轻代大小为4
-xx:newratio=4:设置年轻代(包括eden和两个survivor区)与老年代(除去持久代)的比值为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5
-xx:survivorratio=4:设置年轻代中eden区与survivor区的大小比值.设置为4,则两个survivor区与一个eden区的比值为2:4,一个survivor区占整个年轻代的1/6
-xx:maxpermsize=16m:设置持久代大小为16m.
-xx:pretenuresizethreshold=n,大于n的对象直接放入老年代
-xx:maxtenuringthreshold=0:设置垃圾最大年龄.如果设置为0的话,则年轻代对象不经过survivor区,直接进入年老代.
-xx:+useparalleloldgc:配置年老代垃圾收集方式为并行收集.
整个堆大小 = 年轻代大小 + 老年代大小 + 持久代大小。
二、收集器设置
-xx:+useserialgc:设置串行收集器
-xx:+useparallelgc:设置并行收集器
-xx:+useparalledloldgc:设置并行年老代收集器
-xx:+useconcmarksweepgc:设置并发收集器
三、垃圾回收统计信息
-xx:+printgc
-xx:+printgcdetails
-xx:+printgctimestamps
-xloggc:filename
四、并行收集器设置
-xx:parallelgcthreads=n:设置并行收集器收集时使用的cpu数.并行收集线程数.
-xx:maxgcpausemillis=n:设置并行收集最大暂停时间
-xx:gctimeratio=n:设置垃圾回收时间占程序运行时间的百分比.公式为1/(1+n)
五、并发收集器设置
-xx:+cmsincrementalmode:设置为增量模式.适用于单cpu情况.
-xx:parallelgcthreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的cpu数.并行收集线程数.
下面举个例子:
假设有个名为testmem.java 的文件
1
2
|
javac testmem.java java -verbose:gc -xms20m -xmx20m -xmn10m -xx:+printgcdetails -xx:survivorratio= 8 testmem |
-xms20m:jvm中java堆的初始大小为20m。(包括新生代和老年代)
-xmx20m:jvm中java堆的最大大小为20m,也就是说不可扩展。(包括新生代和老年代)
-xmn10m:新生代的大小为10m
-xx:+printgcdetails:打印详细gc信息
-xx:survivorratio=8:新生代中一个enden与一个survivor区的空间比例是8:1,则两个survivor区与一个eden区的比值为2:8,一个survivor区占整个年轻代的1/10
知道上面的的flag信息之后,我们可以得到以下信息:
java堆的总大小为20m = 20 * 1024k = 20480k
新生代的大小:10m = 10 * 1024k = 10240k
eden space:10240k * 8/10 = 8192k
from space:10240k * 1/10 = 1024k
to space:10240k * 1/10 = 1024k
老年代的大小:20m - 10m = 10m = 10240k
总结
以上就是本文关于jvm中的flag设置详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
原文链接:http://blog.csdn.net/hp910315/article/details/50964778