我想知道JVM在完成應用程序時做了什麼。它運行了System.exit()
以及System.exit()
和SystemExiter()
之間有什麼不同?JVM在完成應用程序後會做什麼?
0
A
回答
2
JVM關閉的實現方式會有所不同。請記住,JVM不是用Java編寫的,並且不會調用System.exit()
來自行結束。
SystemExiter
是一個Spring接口,它將摘要調用摘要到System.exit()
。應用程序可以使用該接口,而不是直接調用System.exit()
,從而允許在測試期間修改行爲。如果一個類在測試期間調用System.exit()
,它將結束測試周期,因爲JVM會關閉。例如:
public class SomeClass {
private SystemExiter exiter; // inject this or accept in constructor
public void someMethod() {
// ...
exiter.exit(1);
}
}
在生產系統中,你可以使用JvmSystemExiter
實現真正關上了VM。在測試中,您可能會嘲笑SystemExiter
界面並檢查exit()
被調用。
相關問題
- 1. Silverlight工作線程完成後應該做什麼?
- 2. 你會爲後端Web應用程序做什麼:Flex,GWT,JQuery?
- 3. 我的RoR應用程序已接近完成。現在應該做什麼?
- 4. 爲什麼在完成連接之後不會調用完成?
- 5. 當child_added完成時會做些什麼
- 6. popen完成後做些什麼
- 7. Alamofire在後臺完成應用程序
- 8. JVM在加載庫類後會做些什麼??
- 9. 在啓動C#應用程序後,非主線程會做什麼?
- 10. 你會在Rails應用程序中使用什麼來自動完成?
- 11. onClick完成後會發生什麼。 Android
- 12. 只有完成讀取序列後,Arduino才能做些什麼?
- 13. 爲什麼在後臺線程不會等待任務完成?
- 14. 什麼時候XML解析在iPhone應用程序中完成?
- 15. 完成後應用程序不會關閉()
- 16. 爲什麼NSURLSession.dataTaskWithURL()不會調用我的完成處理程序?
- 17. 應用程序到底做了什麼?
- 18. Python應用程序什麼也不做
- 19. 爲什麼在一切正常完成之後,我在應用程序結束時會發生段錯誤?
- 20. 爲什麼java程序在應用程序完成時沒有關閉?
- 21. 爲什麼在DoWork完成後纔會調用BackgroundWorker.ProgressChanged?
- 22. 後臺完成處理程序崩潰的應用程序,如果完成PushViewController
- 23. 爲什麼iPhone應用程序的main()函數沒有機會完成?
- 24. 異步調用完成後才做些什麼
- 25. 爲什麼應用程序會在sys.exit命令之後顯示?
- 26. Android應用程序在完成活動後進入後臺
- 27. 應用程序做對面的複選框應該做什麼
- 28. 線程「線程2」在JavaFX應用程序中做什麼?
- 29. 在Java中調用wait()之後,線程會做什麼?
- 30. 應用程序在執行後臺抓取完成處理程序後崩潰
JVM關閉。它不需要調用System.exit(),因爲JVM不是Java程序。另外,SystemExiter似乎與任何東西都沒有關係(這是一個Spring類?)。 – Kayaman