Java虚拟机(三)-jvm主要参数含义

716 阅读3分钟

「这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战

Heap Size

-Xmx:堆的最大值
-Xms:堆的最小值
-XX:MaxHeapSize:和Xmx是等价的,都是设置堆的最大值
-XX:InitialHeapSize:和xms等价的,都是设置堆的最小值

HeapSize动态调整

-XX:MinHeapFreeRatio:
指定jvm heap在使用率小于n的情况下,heap进行收缩,Xmx==Xms的情况下无效,默认40
-XX:MaxHeapFreeRatio:
指定jvm heap在使用率大于n的情况下,heap 进行扩张,Xmx==Xms的情况下无效,默认70
-XX:MinHeapDeltaBytes:
决定是否需要做或者尝试扩容的时候最小扩多少,默认为192K

New Size

Xmn:新生代有效内存最小值
NewSize:同xmn
MaxNewSize:新生代有效内存最大值
NewRatio: 新生代和老年的比值,默认为2
注意:当我们设置xmn等价于同时设置了NewSize和MaxNewSize,两个值一样

Eden/Survivor Size

SurvivorRatio:它定义了新生代中Eden区域和Survivor区域的比例,默认为8,也就是说Eden占新生代的8/10,From幸存区和To幸存区各占新生代的1/10\

Metaspace Size

MetaspaceSize: 元空间的初始大小,默认值为20M
MaxMetaspaceSize:元空间的最大值,MetaspaceSize和MaxMetaspaceSize建议设置成一样

PermSize

-XX:PermSize设置永久代最小空间大小。
-XX:MaxPermSize设置永久代最大空间大小。

MaxTenuringThreshold

-XX:MaxTenuringThreshold

  • 含义:这个参数主要是设置YGC的时候,新生代的对象正常情况下最多经过多少次YGC的过程晋升到老年代,值最大为15
  • 默认值:Parallel Scavenge中默认值为15,CMS中默认值为6,G1中默认值为15
  • 注意:某个对象其实并不是一定要达到这个值才会晋升到老年代,具体经过多少次ygc进行老年代,取决于当时的具体情况,比如survivor的内存大小,以及那些活对象的情况

CMS常见参数

-XX:+UseConcMarkSweepGC: 设置年老代为并发收集。
-XX:+UseParNewGC: 设置年轻代为并行收集。可与 CMS 收集同时使用。 JDK5.0 以上, JVM 会根据系统配置自行设置,所以无需再设置此值。
-XX:CMSFullGCsBeforeCompaction: 由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内 存空间进行压缩、整理。
-XX:+UseCMSCompactAtFullCollection: 打开对年老代的压缩。可能会影响性能,但是 可以消除碎片。
-XX:CMSInitiatingOccupancyFraction:当老年代使用达到该比例时会触发FullGC,默认值是92,单位是%
-XX:+CMSScavengeBeforeRemark:在CMS GC前启动一次minor gc,目的在于减少老年代对年轻代的引用,降低CMS GC标记阶段时的开销,一般CMS的GC耗时80%都来源于标记阶段。

本文已参与「新人创作礼」活动,一起开启掘金创作之路。