2011-04-07 32 views
2

是否有任何工具可以連接到jvm並實時向您顯示如何在該jvm中加載類? 我想它會成爲一個偉大的jvisualvm插件..但是沒有找到像這樣的東西讓我懷疑這是否可行? 我只發現了一些與weblogic或webspere嚴格相關的看似「晦澀」的工具。Java類加載可視化/分析工具

假設這樣的工具是可能的,它是否會嚴格與特定容器相關?

謝謝!

回答

1

我知道這不適用於已經運行的JVM,但java -verbose:class怎麼樣?

如果您想調試某個特定類的類加載器問題,可以連接一個調試器併爲該類設置一個類加載斷點(這是Eclipse調用它們的方式,在IntelliJ中,您只需在第一行放置一個斷點班上)。

更新:既然你提到你想看到的類加載器,在理論上我想你可以寫在agentmain調用java.lang.instrument.Instrumentation.getAllLoadedClasses()並打印類和它們的類加載器樹的代理。但問題在於ClassLoader沒有「身份」,因此您可能會看到一幅漂亮的圖片,但您仍然不知道哪個classloader屬於哪個Java EE部署或OSGi包。我想這就是爲什麼沒有這麼多的工具...

+1

那麼,「視覺 - 類加載」的想法從使用「-verbose」選項精確提出,因爲這不會顯示你的類加載器(從我所知道的),你並沒有真正使用它的類加載過程的「大圖」。無論如何,我想這個問題的工具對於理解和學習類加載,而不是故障排除是有用的。 – teo 2011-05-12 07:37:47