我们知道每次创建新的对象都会保存到新生代中。新生代会使用垃圾回收器比如说 ParNew 垃圾回收器,将新生代进一步分成 Eden 区和两个 Survivor 区。当新生代满了的时候就会触发 Young GC。
本文会实战 Young GC 的场景,并且带大家查看 GC 日志。
模拟 Young GC 场景
首先我们将 JVM 的参数按如下所示设置:
|
|
以上参数都是 JDK1.8 版本的参数,其他版本略有不同,但也没差多少:
参数 | 含义 |
---|---|
-XX:InitialHeapSize -XX:MaxHeapSize |
初始堆大小和最大堆大小 |
-XX:NewSize -XX:MaxNewSize |
初始新生代大小和最大新生代大小 |
-XX:PretenureSizeThreshold=1048576 |
指定了大对象阈值是10MB |
-XX:+PrintGCDetils |
打印详细的gc日志 |
-XX:+PrintGCTimeStamps |
打印出来每次GC发生的时间 |
-Xloggc:gc.log |
设置将gc日志写入一个磁盘文件 |