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

JVM常用参数详解

程序员文章站 2022-05-23 22:03:50
该参数主要是控制新生代需要经历多少次GC晋升到老年代中的最大阈值。在JVM中用4个bit存储(放在对象头中),所以其最大值是15。如果该值=0则表示对象在Eden区gc后不经过Survivor区直接进入老年代。如果该值等于15,并非意味着,对象必须要经历15次YGC才会晋升到老年代中。例如,当sur... ......

 JVM常用参数详解

 jvm整个堆大小=年轻代大小 + 年老代大小 + 持久代大小,在jdk1.8及之后的版本由于永久代被元空间替代,所以jdk1.8中的堆=年轻代大小 + 年老代大小。本文使用的是jdk1.8

 1、堆大小设置(xx类型参数)

  • 初始化堆内存:-xx:initialheapsize=1024m(-xms1024m -简写)
  • 最大堆内存:-xx:maxheapsize=1024m (-xmx1024m -简写)

 例如:-xms1024m -xmx1024m -xx:+printgcdetails

JVM常用参数详解

 

 

 

2、-xss:线程的堆栈大小:-xss 默认是 512k~1024k 等价于 -xx:threadstacksize=512k 。该值等于零表示使用的是默认值。一般情况下无需设置

例如:-xms1024m -xmx1024m -xss512m -xx:+printgcdetails
JVM常用参数详解

 

 

 3、-xmn:设置年轻代大小。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,sun官方推荐配置为整个堆的3/8。

  是 -xx:newsize   和  -xx:maxnewsize 参数的简写新式

例如:-xms1024m -xmx1024m -xss512m -xx:+printgcdetails   我们不设置他的大小,看看默认值是否符合官方比例

JVM常用参数详解

 

 

 结论:maxnewsize*8/3=1024  符合

 例如:-xms1024m -xmx1024m -xmn512m -xss512m -xx:+printgcdetails  设置年轻代大小

JVM常用参数详解

 

 

 老年代被相应的减少

4、元空间-xx:metaspacesize :初始化的metaspace大小,控制元空间发生gc的阈值。gc后,动态增加或降低metaspacesize。在默认情况下,这个值大小根据不同的平台在12m到20m浮动。

   -xx:maxmetaspacesize:限制metaspace增长的上限,防止因为某些情况导致metaspace无限的使用本地内存,影响到其他程序。在本机上该参数的默认值为4294967295b(大约4096mb)

JVM常用参数详解

 

 

5、-xx:newratio
新生代(eden + 2*s)与老年代(不包括永久区)的比值 例如-xx:newratio=4 表示新生代:老年代 = 1:4 即老年代占整个对的4/5;默认值=2

 

例如:-xms20m -xmx20m -xx:+printgcdetails -xx:newratio=4

JVM常用参数详解

 

6、-xx:survivorratio:2个survivor区和eden区的比值 例如:-xx:survivorratio=8 表示 两个survivor区:eden区=2:8 ,每个survivor占 1/10 ;jvm默认=8

例如:-xms20m -xmx20m -xx:+printgcdetails -xx:newratio=4 -xx:survivorratio=8
JVM常用参数详解

 

7、 -xx:maxtenuringthreshold=3
该参数主要是控制新生代需要经历多少次gc晋升到老年代中的最大阈值。在jvm中用4个bit存储(放在对象头中),所以其最大值是15。如果该值=0则表示对象在eden区gc后不经过survivor区直接进入老年代。如果该值等于15,并非意味着,对象必须要经历15次ygc才会晋升到老年代中。例如,当survivor区空间不够时,便会提前进入到老年代中,但这个次数一定不大于设置的最大阈值。通过控制对象进入老年代的频率,可以控制老年代内存的大小,以此控制老年代的gc次数

查看默认值:

f:\workspace\idea\study\jalja-base-utils>jinfo -flag maxtenuringthreshold 46644
-xx:maxtenuringthreshold=15