2017-09-25 51 views
0

當JVM運行我們的程序(讓我們說像Hello World這樣最簡單的程序)時,它會爲它啓動一個應用程序線程。而且,我的問題是:該線程中究竟執行了什麼?它是一個字節碼解釋器執行我們的程序嗎?我們可以假設我們的程序沒有被打亂。JVM中的應用程序線程

+0

你已經自己回答了。你也有一個真正的問題嗎? – Holger

回答

0

它爲它啓動一個應用程序線程。

JVM是一個程序,當它啓動時,它必須至少有一個線程來運行任何東西。因此,JVM不需要啓動第一個線程。

該線程究竟執行了什麼?

這取決於JVM。例如https://www.excelsiorjet.com/在啓動程序之前預編譯代碼,因此它已經在本機代碼中。 Oracle JVM只在運行足夠的代碼時編譯代碼,這對於Hello World來說不太可能。

我們可以假設,我們的程序沒有JIT編譯的

你不能假定代碼已經或尚未JIT'ed也不能假設只是因爲它一直JIT編譯現在它不會在稍後重新編譯,即在某些情況下可以回退到解釋器模式。

+0

使用jvm的參數Xint可以確保java與解釋器一起運行,而不是與jit一起運行。 – dabaicai