当前位置: 移动技术网 > IT编程>开发语言>Java > JVM中的flag设置详解

JVM中的flag设置详解

2019年07月19日  | 移动技术网IT编程  | 我要评论

本文研究的主要是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 的文件

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设置详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网