首先要打印gc log,需要加参数
打印简单的GC信息:-XX:+PrintGC
打印详细的GC信息:-XX:+PrintGCDateStamps,-XX:+PrintGCDetails
设置GC的日志路径: -Xloggc:/opt/sas/logs/gc.log-`date +"%Y%m%d_%H%M%S"`
设置GCLog为自动Rotation的,下面要跟GClog rotation的规则: -XX:+UseGCLogFileRotation
设置GClog最多为20个: -XX:NumberOfGCLogFiles=20
设置GClog最大为10M: -XX:GCLogFileSize=10M
如果-XX:+PrintGCDetails,会把Eden区,S区和Old区的收集前、收集后,总大小分别打印出来
如果-XX:+PrintGCDateStamps,只会打印是何种类型的GC,和Heap的总大小,现在以-XX:+PrintGCDateStamps为例
首先说一下堆收缩和扩张
Heap是会根据需要而增大和收缩的,当堆的剩余空间不能满足工作需求的时候,会自动扩展堆的大小,直到Xmx规定的大小。
当堆太大而所需的空间没有那么大的时候,堆又会自动收缩
下面是慢慢增大的场景