2017-09-25 62 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