若要在Idea上打印JVM相应GC日志,其实只需在Run/Debug Configurations上进行设置即可。
拿《深入Java虚拟机》书中的3-7代码例子来演示,如
1 public class JvmTest { 2 private static final int _1MB=1024*1024; 3 public static void main(String[] args) { 4 byte[] b1 = new byte[2*_1MB]; 5 byte[] b2 = new byte[2*_1MB]; 6 byte[] b3 = new byte[2*_1MB]; 7 byte[] b4 = new byte[4*_1MB]; 8 } 9 }
在main方法运行时,对Java堆大小进行限制设置,如设置堆大小为20MB,即可通过-Xms20M、-Xmx20M、-Mmn10M三个参数来进行设置。
若要在IDEA打印出对象在堆上内存的分配情况,需需在Run/Debug Configurations上进行配置,如图:
其中,-XX:+PrintGCDetails这是收集器日志参数输出,即开启了GC日志输出;-XX:SurvivorRatio=8意味着新生代中Eden区与一个Survivor区的空间比例是8:1。
设置完后,执行代码,即可在IDEA上打印出GC的日志信息: