前言:是否需要把不用的对象设置为null?
1、开始写代码测试(所有测试都要加上以下指令)
jvm参数-Xms20m -Xmx20m -Xmn10m -XX:+PrintGCDetails -XX:SurvivorRatio=8 -XX:PretenureSizeThreshold=2097152
简单解释一下:
-Xms20m -Xmx20m
这两个指令限制堆内存固定为20m不允许扩容-Xmn10m
代表分配给新生代的总内存为10m-XX:SurvivorRatio=8
代表Eden区和Survivor的比例8:1,即新生代被分为3部分,分别8m,1m,1mXX:PretenureSizeThreshold=2097152
,这个指令用的比较少,在虚拟机中,普通对象都在新生代分配内存,但是大对象是直接在老年代分配,至于多大算大对象,就是这个参数来设置的,我设置的是2m用来测试(2097152 =2 * 1024 * 1024 ),设置2m是方便我测试,保证我在下面代码设置1m的MB_1对象,内存是在新生代分配,而不是直接进入老年代-XX:+PrintGCDetails
打印垃圾回收日志
2021年3月14日大约 4 分钟