模拟出频繁Young GC
JVM参数设置
设置堆内存,快速模拟出垃圾回收
-XX:NewSize=5242880 -XX:MaxNewSize=5242880 -XX:InitialHeapSize=10485760 -XX:MaxHeapSize=10485760 -XX:SurvivorRatio=8 -XX:PretenureSizeThreshold=10485760 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC
“-XX:InitialHeapSize”和“-XX:MaxHeapSize”就是初始堆大小和最大堆大小
“-XX:NewSize”和“-XX:MaxNewSize”是初始新生代大小和最大新生代大小
“-XX:PretenureSizeThreshold=10485760”指定了大对象阈值是10MB、
上面参数设置堆内存10MB,其中新生代是5MB内存空间,其中Eden区占4MB,每个Survivor区占0.5MB,
大对象必须超过10MB才会直接进入老年代,年轻代使用ParNew垃圾回收器,老年代使用CMS垃圾回收器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ul4vtdA-1620222535690)(F:\学习\学习笔记\jvm\images\堆内存设置.png)]
打印出JVM GC日志
-XX:+PrintGCDetils:打印详细的gc日志
-XX:+PrintGCTimeStamps:这个参数可以打印出来每次GC发生的时间
-Xloggc:gc.log:这个参数可以设置将gc日志写入一个磁盘文件
- 完整JVM参数设置
-XX:NewSize=5242880
-XX:MaxNewSize=5242880
-XX:InitialHeapSize=10485760
-XX:MaxHeapSize=10485760
-XX:SurvivorRatio=8
-XX:PretenureSizeThreshold=10485760
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:gc.log
示例代码
public static void main(String[] args) {
byte[] array1 = new byte[1024 * 1024];
array1 = new byte[1024 * 1024];
array1 = new byte[1024 * 1024];
array1 &