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

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

保罗

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

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

我猜你可以用WeakReference做到这一点

 // beginning of application WeakReference ref = new WeakReference < > ( new Object ( ) ) ; // .... // end of application if ( ref . get ( ) == null ) { System . out . println ( "gc" ) ; } else { System . out . println ( "no gc" ) ; }