示例代码如下:
package JVM3.gc;
/**
* 引用计数法特例:相互引用导致无法回收,但是Java不采用该方法,应该可用回收
*
*
* @author LJC
*
*
*/
public class ReferenceCountgc {
public Object instance=null;
private static final int _1MB=1024*1024;
private byte[] bigSize = new byte[2*_1MB]; //占用内存,方便GC日志中观察回收情况
public static void testGC() {
ReferenceCountgc obj1=new ReferenceCountgc();
ReferenceCountgc obj2=new ReferenceCountgc();
obj1.instance=obj2;
obj2.instance=obj1;
obj1=null;
obj2=null;
//GC一下,看看是否回收了上述两个对象
System.gc();
}
public static void main(String[] args) {
ReferenceCountgc.testGC();
}
}
一般情况下,当我们运行这些个Java程序的时候,如果程序正常没保存,并且自己的程序中没有打印语句,控制台上是不会显示任何东西的,是空的,但是如果我们想查看程序运行过程的GC日志,了解垃圾回收情况,那该咋办呢?
很简单!!!那就是加入JVM相关参数即可:
1.右键点击,选择Run as->Run Configuations,进入程序设置界面;
2.可以看到当前选择的是该程序的名字,再选择Arguments选项,在VM arguments中填写相关JVM参数:
-XX:+PrintGCTimeStamps -- 打印出GC的时间信息
-XX:+PrintGCDetails --打印出GC的详细信息
-verbose:gc --开启gc日志
3.然后点击Apply,Run运行即可:
这就是我们想要看到的GC日志了!!!