引言
heap用来存放应用系统创建的对象和数组,地址是逻辑连续的
-
heap是在运行期动态分配内存大小,自动进行垃圾回收 -
垃圾回收主要就是回收
heap内存
堆参数配置以及实战
虚拟机打印GC日志
- Xlog:gc (PrintGC PrintGCDetails)
- Xlog:gc+heap=trace(PrintHeapAtGC)
GC日志格式
GC与垃圾回收器息息相关,本文以G1为准
- GC发生的时间
- 日志级别信息,日志类型标记
- GC识别号(第几次GC)
- GC类型和说明GC的原因
- GC前容量->GC后容量(该区域总容量)
- GC持续时间
heap的参数
- -Xms:初始堆大小,默认物理内存的1/64
- -Xmx:最大堆大小,默认物理内存的1/4
- -Xmn:新生代大小,默认整个堆的3/8
- -XX:+HeapDumpOnOutOfMemoryError
- -XX:+HeapDumpPath
- -XX:NewRatio:老年代与新生代的壁纸
- -XX:SurvivorRatio:Eden区和Survivor区的比例关系
笔者的思考:设置新生代大小的意义?
新生代大小设置得太小就会频繁发生GC,新生代大小设置得太大就只会发生Full GC
Stack的参数
- -Xss:通常只有几百K,决定了函数调用的深度
元空间的参数
- -XX:MetaspaceSize:初始空间大小