如何知道我的应用程序运行时期间是否运行了垃圾收集器?

时间:2012-02-01 23:51:46

标签: java

有没有什么方法可以让我们知道Java垃圾收集器是否在应用程序运行时运行?

3 个答案:

答案 0 :(得分:7)

您可以使用JVM参数-verbose:gc-XX:+PrintGCDetails来查看GC正在执行的操作。请查看http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html

的第3.2节

答案 1 :(得分:1)

List<GarbageCollectorMXBean> gcBeans = ManagementFactory.getGarbageCollectorMXBeans();
for (GarbageCollectorMXBean gcBean : gcBeans) {
    long numCollections = gcBean.getCollectionCount(); // it's possible for this to return -1 for a given collector
}

答案 2 :(得分:0)

我猜你可以用WeakReference

来做
// beginning of application
   WeakReference<Object> ref = new WeakReference < > ( new Object ( ) ) ;

// ....

// end of application
   if ( ref . get ( ) == null ) { System . out . println ( "gc" ) ; }
   else { System . out . println ( "no gc" ) ; }