1. 堆的内存结构
- 新生区(Young Generation Space)
- 伊甸园区(Eden)
- 幸存者0区(Survivor0)
- 幸存者1区(Survivor1)
- 老年区(Old/Tenure)
- 永久代(jdk7以前)/元空间(jdk8以后)
2.堆空间大小
- 默认情况下
- 初始内存大小:物理内存/64
- 最大内存大小:物理内存/4
- 设置堆空间
- Xms 设置堆空间(年轻代+老年代)的初始内存大小 -X 是jvm的运行参数 ms(memory start)
- Xmx 设置堆空间(年轻代+老年代)的最大内存大小
- 开发中建立将初始堆内存和最大堆内存设置成相同的值减少GC和系统的额外压力
3.常用参数
-XX:+PrintFlagsInitial:查看所有的参数的默认初始值
-XX:+PrintFlagsFinal:查看所有的参数的最终值(可能会存在修改,不再是初始值)
-Xms:初始堆空间内存(默认为物理内存的1/64)
-Xmx:最大堆空间内存(默认为物理内存的1/4)
-Xmn:设置新生代的大小(初始值及最大值)
-XX:NewRatio:配置新生代与老年代在堆结构的占比
-XX:SurvivorRatio:设置新生代中Eden和S0/S1空间的比例
-XX:MaxTenuringThreshold:设置新生代垃圾的最大年龄
-XX:+PrintGCDetails:输出详细的GC处理日志
-XX:+PrintGC 或 -verbose:gc :打印gc简要信息
-XX:HandlePromotionFalilure:是否设置空间分配担保