平时工作用过的JVM常用基本配置参数有哪些
-Xms
-Xmx
-Xmn
-Xms128m -Xmx4096m -Xss1024K -XX:MetaspaceSize=512m -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseSerialGC
分为K-V设值类型和布尔类型:
K-V设值类型:
-
KV设值类型
公式:
-XX:属性key=属性值value
case:
-XX:MetaspaceSize=128m
-XX:MaxTenuringThreshold=15
-Xms----> -XX:InitialHeapSize
-Xmx----> -XX:MaxHeapSize
-
Boolean类型:
-
公式:
-XX+或者-某个属性值
+表示开启,-表示关闭是否打印GC收集细节 -XX:+PrintGCDetails 开启 -XX:-PrintGCDetails 关闭
是否使用串行垃圾回收器:-XX:-UseSerialGC
具体参数:
-
-Xms
初始大小内存,默认为物理内存1/64,等价于-XX:InitialHeapSize
-
-Xmx
最大分配内存,默认物理内存1/4,等价于-XX:MaxHeapSize
-
-Xss
设置单个线程栈的大小,默认542K~1024K ,等价于-XX:ThreadStackSize
-
-Xmn
设置年轻代的大小
-
-XX:MetaspaceSize
设置元空间大小
元空间的本质和永久代类似,都是对JVM规范中方法区的实现,不过元空间与永久代最大的区别在于:元空间并不在虚拟机中,而是在本地内存中。 因此,默认元空间的大小仅受本地内存限制
-
-XX:+PrintGCDetails
输出详细GC收集日志信息
[名称:GC前内存占用->GC后内存占用(该区内存总大小)]
-
-XX:SurvivorRatio
设置新生代中Eden和S0/S1空间的比例
默认-XX:SurvivorRatio=8,Eden:S0:S1=8:1:1
-
-XX:NewRatio
设置年轻代与老年代在堆结构的占比
默认-XX:NewRatio=2 新生代在1,老年代2,年轻代占整个堆的1/3
NewRatio值若为k,则老年代占比:新生代占比 = k : 1
-
-XX:MaxTenuringThreshold
设置垃圾的最大年龄
默认-XX:MaxTenuringThreshold=15
如果设置为0,年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大的值,则年轻代对象回在Survivor区进行多次复制,这样可以增加对对象在年轻代的存活时间,增加在年轻代即被回收的概率。
-
-XX:+UseSerialGC
串行垃圾回收器
-
-XX:+UseParallelGC
并行垃圾回收器