2012-04-05 67 views
2

有沒有一種方法可以查看JVM中哪些特定對象在特定的一代(伊甸園,舊等)中?我試圖找出一種方法來查看究竟哪些對象有問題。我正在使用JProfiler,記錄內存將在任何時間告訴你實時和GCed對象,但不告訴你對象在哪一代。任何其他工具告訴了這一點?我似乎無法找到任何這樣的GC調試選項。如何在JVM中查看特定代中的對象?

在附註中,使用JProfiler錄製內存似乎在應用程序上有太多開銷,所以要麼我無法長時間記錄內存(快速達到峯值內存),或者開銷會以某種方式干擾/影響應用行爲。另外,記錄內存。對此的任何建議(我是否缺少開關以避免這種情況)?我通常使用Dynamic Instrumentation選項,但據我記得我使用Sampling的幾次也有同樣的效果。

回答

0

yourkit能夠做你想做的。更確切地說,你可以看到次要的和主要的垃圾收集。

編輯: 有些人在SO同意我的意見。 Which Java profiler is better: JProfiler or YourKit?

+0

感謝,將檢查YourKit出來! – prams 2012-04-09 22:16:18

+0

@UmNyobe您是否指此功能? http://www.yourkit.com/features/index.jsp#generations – fglez 2013-03-07 10:32:09

+0

This one http://www.yourkit.com/docs/java/help/gc_telemetry.gif – UmNyobe 2013-03-07 10:35:41

0

啓用打印GC的jvm標誌: -XX:-PrintGCDetails在垃圾回收處打印更多詳細信息。管理。 (介紹了在1.4.0。)

另一件事,你可以使用JVisualVM(建立它在JDK1.6)與視覺GC插件做: http://visualvm.java.net/plugins.html

相關問題