2017-09-25 9 views
0

JVMがプログラムを実行するとき(Hello Worldのような最も単純なプログラムを考えてみましょう)、アプリケーションスレッドを開始します。そして、私の質問です:正確に何がそのスレッドで実行されますか?私たちのプログラムを実行するのはバイトコードインタプリタですか?私たちのプログラムはJITedではないと推測できます。JVMのアプリケーションスレッド

+0

あなたはすでにあなた自身で回答しています。本当の質問もありますか? – Holger

答えて

0

アプリケーションスレッドを開始します。

JVMはプログラムであり、起動時には少なくとも1つのスレッドで実行する必要があります。したがって、JVMは最初のスレッドを開始する必要はありません。

正確にはどのスレッドで実行されますか?

これはJVMによって異なります。たとえば、https://www.excelsiorjet.com/は、プログラムを開始する前にコードをプリコンパイルするので、すでにネイティブコードになっています。 Oracle JVMは、コードが十分に実行された後でしかコードをコンパイルしません。これは、こんにちはの世界のためではありません。

私たちは、あなたがそのコードがJIT'edされていないか、していたり​​しますが、それはJITedされたからといっていると仮定できると仮定することはできません私たちのプログラムは

をJITedされなかったと仮定することができます後で再コンパイルされないようになったため、場合によってはインタプリタモードに戻る可能性があります。

+0

jintでパラメータXintを指定すると、Javaがインタプリタで実行され、jitでは実行されません。 – dabaicai

関連する問題