JIT(Just-In-Time)コンパイル

実行時コンパイル言語

JITコンパイルとは

JIT(Just-In-Time)コンパイルは、実行時にバイトコードをネイティブコードに変換する技術です。 インタプリタの柔軟性とコンパイル言語の実行速度を両立します。 頻繁に実行される「ホットスポット」を検出し、選択的に最適化します。

JITの実行フロー

2段階コンパイル
ソースコード
.java
javac
静的コンパイル
バイトコード
.class
バイトコード
JVM
インタプリタ実行
JIT
ホットスポット検出
ネイティブ
高速実行

ウォームアップ: JIT最適化には時間がかかる。 起動直後はインタプリタ実行で遅く、しばらくすると高速になる。 これを「ウォームアップ」と呼ぶ。

JITの特徴

メリット

  • 実行時最適化 - 実際の使用パターンに基づく最適化
  • プラットフォーム非依存 - バイトコードがどこでも動作
  • 動的最適化 - インライン展開、デッドコード除去
  • プロファイル駆動 - ホットパスを重点的に最適化

デメリット

  • 起動時間 - ウォームアップが必要
  • メモリ使用 - JITコンパイラ自体がメモリを消費
  • 予測困難 - 実行時の最適化で性能が変動
  • 複雑性 - GC、JITのチューニングが複雑

実行モデルの比較

観点コンパイル型JITインタプリタ型
実行速度最速高速(ウォームアップ後)遅い
起動時間速い遅い速い
メモリ効率的多め中程度
最適化静的動的(実行時情報活用)なし
ポータビリティ再コンパイル必要バイトコード共通高い

代表的なJIT言語/ランタイム

Java

JVM上で動作、エンタープライズの標準

Kotlin

JVM上で動作、Androidの公式言語

C# (.NET)

CLR上で動作、Windows/Azure

JavaScript (V8)

Chrome/Node.js、高度なJIT最適化

言語詳細