如何在jvm中加載和銷燬類時保持跟蹤?有沒有任何回調方法是由jvm公開的?如何跟蹤何時在jvm中加載和銷燬類?
19
A
回答
0
您可以使用靜態塊來檢測類加載,但無法檢測類卸載。 在java中,通過系統類加載器加載的所有類將永遠不會被卸載,並且只有在卸載類加載器時纔會卸載通過其他類加載器加載的所有類。
static{
//execute when the class will be loaded
}
5
您可以添加Java選擇只查看哪個類通過加載:
java -verbose:class
關於銷燬類,我不知道。
0
你想在你的應用程序中使用這些信息,還是隻想從外部分析這些信息?在後一種情況下,你可以使用VisualVM。也許你的問題與此相關:Loaded classes in VisualVM。
7
您可以將command line option-verbose:class
添加到您的Java進程中,這將顯示關於加載的每個類的信息 。
0
您可以在靜態構造函數中跟蹤類的創建。就我而言,你無法追蹤它的破壞。只有當gc收集用於加載類的類加載器時纔會卸載類。
您可能也有興趣閱讀這樣的:another question on classloaders at StackOverflow
2
如果是正常使用JRockit JVM,您可以利用下面的API,當一個類加載和類卸載,這將給你的回調方法。
查看我們應該使用getClassLibrary()
方法的JVM類。
在classLibrary對象,我們可以爲類加載如果你使用的是Sun/Oracle的JVM這給班級名稱等
21
,您可以使用TraceClassLoading
和TraceClassUnloading
選項註冊事件偵聽器。使用以下命令來看看有什麼選擇你的JVM支持:
java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -version
如果這些選項都支持,使用-XX:+TraceClassLoading -XX:+TraceClassUnloading
運行Java應用程序。你應該看到如下信息:
[Loaded ... from ...]
[Unloading class ...]
相關問題
- 1. Google App Engine如何跟蹤httpsession銷燬
- 2. 何時由JVM加載類?
- 3. android:用於銷燬的堆棧跟蹤
- 4. paper_trail gem - 無法跟蹤銷燬事件
- 5. 如何在平移時加載和銷燬地圖,而不是在加載時完全加載地圖
- 6. 如何跟蹤RSpec加載的文件?
- 7. jqGrid卸載和jqGrid銷燬
- 8. 父母被銷燬時如何銷燬子對象?
- 9. 如何銷燬NSHTTPCookies?
- 10. 如何銷燬tinyMce?
- 11. 如何命名同時創建和銷燬的類?
- 12. 如何在頁面加載後銷燬會話?
- 13. 如何創建iframe並在iframe加載後才銷燬元素?
- 14. 何時致電YUI銷燬?
- 15. 如何銷燬PhoneStateListener類的對象?
- 16. 如何跟蹤正在加載到進程中的dll?
- 17. 如何在jQuery中銷燬$ .animate函數?
- 18. 如何在symfony 2.6中銷燬會話?
- 19. 如何在java中銷燬進程
- 20. 如何在新場景加載時銷燬標記爲「DontDestroyOnLoad」的遊戲對象?
- 21. 如何跟蹤和加載特定用戶的信息?
- 22. 如何跟蹤用戶在mvc中的登錄/註銷
- 23. HttpHandler跟蹤圖像何時加載到電子郵件中
- 24. 如何在matlab中銷燬變量時,如何銷燬mex文件中的內存?
- 25. 如何跟蹤malloc和free?
- 26. 使用Spring跟蹤用戶登錄和註銷會話跟蹤
- 27. 在Rails中跟蹤依賴加載
- 28. 如何從JVM堆棧跟蹤知道這是在GC暫停
- 29. 如何以及何時在JSF中銷燬@ViewScoped bean?
- 30. 如何跟蹤基於Web的登錄和註銷?
你在這裏問一個問題。你究竟想要學習什麼,或試圖完成什麼?一旦你明白了,接受那個對你最有幫助的答案。 – Frans 2014-12-11 07:05:09