1
A
回答
3
不可以。您可以撥打Runtime.runFinalizersOnExit()
,但已棄用,因此可能無法正常工作。
一個解決方法是創建一個關閉鉤子Runtime.addShutdownHook()
並做所有的清理工作。
5
在應用程序退出後執行Java finalize()方法嗎?
通常沒有。
但是,您可以調用一個(deprecated!) method來通知JVM完成JVM退出時的對象。問題是它可能導致不好的事情發生;例如不穩定的行爲和僵局。所以不要使用它!
通常,在應用程序代碼中使用finalize
是一個壞主意。如果你在這裏試圖做的是實現一些關閉時間行爲,那麼更好的方法是將行爲實現爲關閉掛鉤。
2
finalize() methods do not run on application exit.
推薦的方法是使用關閉掛鉤。
例如程序退出通常例如 - :
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
// shutdown logic
}
});
時,將執行關閉鉤System.exit - 用戶中斷例如打字^ C,註銷或系統關機
Java還提供了一種名爲runFinalizersOnExit()
的方法,它是@deprecated
。它被棄用,原因如下:
It may result in finalizers being called on live objects
while other threads are concurrently manipulating those objects,
resulting in erratic behavior or deadlock
從本質上講,runFinalizersOnExit()
是不安全的。如上所述使用關閉掛鉤。
相關問題
- 1. Java終結器方法和GC
- 2. 最終方法的Java類裝飾器
- 3. IBM Heap Analyzer - 終結方法
- 4. Java遞歸方法結束但並沒有終止
- 5. 最終總計方法PHP結果
- 6. Java:私有方法vs最終類
- 7. 終於方法與嘗試在Java中
- 8. Java - 方法和最終變量
- 9. java - 樹結構方法
- 10. Java方法容器
- 11. 確切的方法如何在java中使用最終方法
- 12. Java進程崩潰 - Java終結者
- 13. Java程序與Java結果終止:137
- 14. .net終結器是否始終執行?
- 15. 打開終結器,但有根終端
- 16. Java v/s C++ - 從Java中的方法返回最終對象
- 17. JavaScript對象的終結器
- 18. 測試終結器和IDisposable
- 19. 終結器線程ID
- 20. WCF終結器中的NullReferenceException
- 21. Cobol範圍終結器
- 22. 終結器如何工作?
- 23. Java:有沒有辦法在原始方法終止時調用方法?
- 24. Java Eclipse調試器獲取方法調用結果
- 25. Java終端仿真器
- 26. Java計算器,終止
- 27. 方法始終任何其他方法
- 28. 總結二維數組的方法Java
- 29. Java從文件掃描,結束方法?
- 30. 如果在Java中的無限循環或僵局究竟會終結器線程做finalize方法
即使JVM關閉,也不能保證它會被執行。 –