「这是我参与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%都来源于标记阶段。
本文已参与「新人创作礼」活动,一起开启掘金创作之路。