欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JVM中的flag设置详解

程序员文章站 2023-12-01 15:08:22
本文研究的主要是jvm中的flag设置详解的相关内容,具体介绍如下。 一、堆大小设置 -xmx3550m:设置jvm最大可用内存为3550m。 -xms3550m...

本文研究的主要是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:配置年老代垃圾收集方式为并行收集.

整个堆大小 = 年轻代大小 + 老年代大小 + 持久代大小。

JVM中的flag设置详解

二、收集器设置

-xx:+useserialgc:设置串行收集器
-xx:+useparallelgc:设置并行收集器
-xx:+useparalledloldgc:设置并行年老代收集器
-xx:+useconcmarksweepgc:设置并发收集器

JVM中的flag设置详解

三、垃圾回收统计信息

-xx:+printgc
-xx:+printgcdetails
-xx:+printgctimestamps
-xloggc:filename

JVM中的flag设置详解

四、并行收集器设置

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