2012-08-16 191 views
2

我需要一步一步解釋當我們調用java -jar JAR_FILE.jar時發生了什麼,直到JVM完成其作業並返回。JVM生命週期?

該階段如何爲主機上的JVM運行做好準備?
調用哪些函數?什麼線程被創建?
當JVM要關閉時會發生什麼?

+0

Java語言規範文檔可以是一個很好的起點... – marathon 2012-08-16 21:59:23

+0

@ marathon-更具可讀性個什麼東西我見過Java規範,但我需要一個更清晰的規範!它深入細節。 – Reza 2012-08-16 22:09:15

+0

您可以查看本書:https://blogs.oracle.com/theaquarium/entry/java_performance_the_java_series。第3章提供了關於JVM內部的一些見解。 – 2012-08-16 22:25:55

回答

1

這是我的步驟清單,它是非常高的水平。

  1. JVM啓動並且設置了該GC將管理各種存儲區域,它也將安裝一些系統線程
  2. 看jar文件清單,以確定已加載
  3. main方法的類
  4. 加載主類並驗證剛加載的類中的字節代碼是否正確,並且沒有做任何違法操作。
  5. 解決正在加載的類需要什麼類,並加載這些類正在加載的每個類經過步驟3和4
  6. 找到主方法的字節碼並執行它。

這是一個非常簡化的列表,完整的細節更具體,可能依賴於JVM的實現。

你可能想看看這本書裏面的Java虛擬機第二版比JVM規範http://www.artima.com/insidejvm/ed2/

+0

謝謝兄弟!但是我需要更多關於第1步的細節:) – Reza 2012-08-17 14:16:08