如何在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. 如何在平移時加載和銷燬地圖,而不是在加載時完全加載地圖
- 7. 如何在JVM中使用類加載器加載類兩次?
- 8. 如何JVM加載父類中的Java
- 9. 如何跟蹤RSpec加載的文件?
- 10. 在JVM中加載類
- 11. jqGrid卸載和jqGrid銷燬
- 12. 如何銷燬tinyMce?
- 13. 如何銷燬ICONINFO?
- 14. 如何銷燬cookie
- 15. 如何銷燬SKPhysicsBody?
- 16. 如何銷燬NSHTTPCookies?
- 17. 父母被銷燬時如何銷燬子對象?
- 18. 如何銷燬在TabActivity
- 19. 如何命名同時創建和銷燬的類?
- 20. 如何在RAILS中用AJAX銷燬微博時重新加載當前頁面
- 21. InstanceAlreadyExistsException如何卸載/銷燬實例
- 22. 如何在頁面加載後銷燬會話?
- 23. 如何在會話銷燬後重新加載頁面?
- 24. 如何創建iframe並在iframe加載後才銷燬元素?
- 25. 何時致電YUI銷燬?
- 26. 何時銷燬對象?
- 27. 如何在Websphere控制檯中的日誌和跟蹤中啓用JVM日誌
- 28. 如何在cocos2d中跟蹤時間
- 29. 如何知道何時創建和銷燬臨時對象?
- 30. 如何銷燬PhoneStateListener類的對象?
你在這裏問一個問題。你究竟想要學習什麼,或試圖完成什麼?一旦你明白了,接受那個對你最有幫助的答案。 – Frans 2014-12-11 07:05:09