1. 堆内存相关参数
-
堆内存最小值
–Xms
- 堆内存最大值
–Xmx
//为 JVM 分配最小 2 GB 和最大 5 GB 的堆内存大小 -Xms2G -Xmx5G
-
新生代内存-XX:NewSize
和-XX:MaxNewSize
-XX:NewSize=256m -XX:MaxNewSize=1024m //NewSize 与 MaxNewSize 设为一致 -Xmn256m
-
设置老年代与新生代内存的比值
-XX:NewRatio=1
-
方法区的大小
-XX:MetaspaceSize //MetaspaceSize 的默认大小取决于平台 -XX:MaxMetaspaceSize=N #设置 Metaspace 的最大大小
MetaspaceSize 表示 Metaspace 使用过程中触发 Full GC 的阈值,默认的元空间的最大值是无限
注意: Full GC 的成本远高于 Minor GC,因此尽可能将对象分配在新生代
2. GC日志相关参数
-
打印对象分布
-XX:+PrintTenuringDistribution
-
# 强引用/弱引用/软引用/虚引用/finalize 相关的方法
-XX:+PrintReferenceGC
-
# 设置为 1 表示在 JVM 启动时立即输出一次安全点统计信息
-XX:PrintSafepointStatisticsCount=1
-
# 日志文件最多分割几个文件,超过之后从头文件开始写
-XX:NumberOfGCLogFiles=14
3. 其他参数
1. 垃圾回收占用的时间比例阈值,避免程序在运行时花费过多时间在垃圾回收
-XX:+UseGCOverheadLimit
2. 重复 String 值减少为单个全局 char []
数组来优化堆内存
-XX:+UseStringDeduplication
3. 对 String 对象使用 byte []
类型
-XX:+UseCompressedStrings
4. 设置堆空间最小空闲比例
//设置堆空间最小空闲比例,当堆空间的空闲内存小于这个数值时,JVM 便会扩展堆空间。
-XX:MinHeapFreeRatio
//设置堆空间最大空闲比例,当堆空间的空闲内存大于这个数值时,JVM 便会压缩堆空间。
-XX:MaxHeapFreeRatio