有沒有辦法確定jvm是否正常關閉?關閉鉤子只能產生一個線程,有沒有一種方法可以確定當時JVM是否正常或異常存在?確定應用程序是否正常關閉
回答
我記得前面提到的similar question。一種可能的行動方式是使用SignalHandler。您可以閱讀full article here。它似乎與IBM JVM有關,但我認爲它對於Java Hotspot同樣有效。
的Java的一個鮮爲人知的功能是安裝 自己的信號處理程序,這是 通過sun.misc.Signal 類支持的 能力的應用程序。但是,在使用sun.misc數據包 中的 類時請小心,因爲它包含可能在Java發行版之間更改 的未記錄的 支持類。您可以爲 安裝JVM未使用的任何信號 的Java處理程序。這些 信號處理程序類似於本機 處理程序,因爲它們在 引發本機系統信號時調用,但它們將始終作爲單獨的 Java線程運行。本質上,當引發信號處理器可用的 信號時,JVM的 「信號分配器線程」被喚醒 並通知信號。分派器線程然後調用Java 方法來爲安裝的Java信號處理器創建並啓動新的 線程。要編寫處理器的Java信號 ,請定義一個類,該類使用sun.misc.Signal.handle() 方法實現sun.misc.SignalHandler接口並通過 註冊處理程序。
使用命令$?檢查返回sttaus
您可以在啓動時編寫文件並在優雅退出時再次刪除文件。如果JVM消失了,但文件仍然存在,那麼您就知道它已經崩潰或以非預期的方式退出。
當JVM正常關閉時,這意味着主線程已經結束。如果JVM正在關閉某些其他重新設置(例如,用戶按下了Strg + C),則主線程仍在運行。因此,您可以在關閉鉤子中存儲對主線程的引用,並檢查該線程是否仍然存在。當然,這假定主線程通常是應用程序中最後一個正在運行的線程。如果其中一個線程稱爲System.exit(),我不知道情況如何,但是您可以輕鬆找到它。
- 1. 確定UIViewController是否因應用程序退出而關閉?
- 2. WPF應用程序未正確關閉
- 3. 確定關機正在關閉我的應用程序
- 4. 確定應用程序如何關閉
- 5. 應用程序錯誤。應用程序無法正確啓動(0x000007b)。單擊確定關閉應用程序
- 6. 應用程序關閉時SqlConnection是否自動關閉?
- 7. 如何確定應用程序是否是Web應用程序
- 8. 應用程序關閉異常
- 9. 我是否正確關閉此功能?
- 10. 如何確定應用程序是否正在使用GPU
- 11. 如何在關閉Windows控制檯時正常關閉Java應用程序?
- 12. 應用程序無法正確啓動(0xC0000056)。點擊確定關閉應用程序
- 13. 應用程序正在關閉(Admob)?
- 14. 應用程序正在關閉
- 15. Android應用程序正常關閉但不會再次打開
- 16. Android應用程序沒有正常關閉時,點擊返回
- 17. 如何正常關閉彈簧引導應用程序
- 18. gSoap:如何正常關閉webservice應用程序?
- 19. 窗口在Win32應用程序將無法正常關閉
- 20. 如何確定Grails應用程序是否正在測試?
- 21. 是否確定ByteArrayOutputStream沒有關閉
- 22. 正確關閉辦公室interop excel應用程序
- 23. Zend Framework應用程序沒有正確關閉mysql連接
- 24. 如何正確關閉C#中的winforms應用程序?
- 25. 從插件關閉eclipse RCP應用程序的正確方法?
- 26. 如何正確關閉Tomcat上的JAX-WS Spring應用程序?
- 27. 退出應用程序時是否應關閉所有資源?
- 28. NSZombieEnabled是否應該關閉發佈的應用程序?
- 29. asp.net是否可以關閉應用程序創建的線程?
- 30. 這個小的BackBone應用程序是否正確?我是否正確使用約定?
+1但是......如果您嘗試正確地做到這一點,那麼有很多難點。例如,您在哪裏以及如何知道在哪裏存儲文件?例如,在OS X上,由* tmpdir *屬性返回的位置可以**從一次運行改變到另一次運行。然後您需要知道文件保存位置的方法(比如使用Preferences API)。另外,這並不是因爲您有權寫入一些臨時文件,您將在下一次運行中獲得相同的權利。如果兩個實例運行,等等。它可以工作,但它比你的答案聽起來更像是複雜得多**。 – SyntaxT3rr0r 2011-06-02 11:05:13
@ SyntaxT3rr0r:是的,你說得對,雖然複雜程度取決於需要什麼類型的應用程序。對於服務器應用程序,您通常需要一些定義良好的目錄,您可以在其中編寫文件。對於桌面應用程序,瞭解由於意外關機而導致應該發生什麼以提供更詳細的解決方案會很有幫助。 – x4u 2011-06-02 11:55:50