コンパイラ
JITコンパイルを使う実行環境の特徴として正しいものはどれか。
- Aプログラムを実行する前に、すべてを機械語に翻訳してから配布する
- B実行中によく使う部分を機械語にし、実行時の情報も使える
- C機械語を一切使わず、いつまでもバイトコードを1命令ずつ解釈し続ける
答えと解説を見る
正解:B. 実行中によく使う部分を機械語にし、実行時の情報も使える
JITコンパイルでは、最初はバイトコードを解釈しながら実行し、何度も実行される部分(ホットスポット)を見つけたら、実行中にそこを機械語にコンパイルします。実際に通る分岐や渡される型などの実行時の情報を使って、前もって行うコンパイルでは難しい大胆な最適化ができます。想定が外れたら解釈の実行に戻るしくみも備えています。前もってすべてを翻訳するのは事前(AOT)コンパイル、解釈だけを続けるのは純粋なインタプリタです。
- A. 実行前にすべて翻訳するのは事前(AOT)コンパイルです。
- B. 正しい。実行中に機械語にし、実行時の情報も使えます。
- C. 解釈だけを続けるのは純粋なインタプリタです。