メインコンテンツまでスキップ

JVM 学習ガイド

Java Virtual Machine(JVM)の仕組みと最適化に関する包括的な学習ドキュメントです。


学習の目的

  • JVMの内部構造を理解し、アプリケーションの動作原理を把握する
  • メモリ管理とガベージコレクションを理解し、適切なチューニングができる
  • パフォーマンス問題のトラブルシューティング能力を身につける
  • Java 21の新機能(Virtual Threads等)を活用できる

学習ロードマップ

┌─────────────────────────────────────────────────────────────┐
│ 学習の流れ │
├─────────────────────────────────────────────────────────────┤
│ │
│ 基礎 (JVMを理解する) │
│ ├── JVM概要 │
│ │ └── アーキテクチャ、JDK選択、実行モデル │
│ ├── クラスローディング │
│ │ └── クラスローダー階層、動的ロード │
│ └── メモリ管理 │
│ └── ヒープ、スタック、メタスペース │
│ │
│ GC (ガベージコレクション) │
│ ├── GC基礎 │
│ │ └── GCの種類、動作原理、世代別GC │
│ └── GCチューニング │
│ └── パラメータ設定、モニタリング、選択指針 │
│ │
│ 応用 (パフォーマンスと問題解決) │
│ ├── パフォーマンス │
│ │ └── JIT、プロファイリング、最適化 │
│ └── トラブルシューティング │
│ └── ヒープダンプ、スレッドダンプ、分析ツール │
│ │
│ 最新機能 (Java 21+) │
│ ├── Java 21新機能 │
│ │ └── Virtual Threads、Record、Pattern Matching │
│ └── Native Image │
│ └── GraalVM、AOTコンパイル、コンテナ最適化 │
│ │
└─────────────────────────────────────────────────────────────┘

ドキュメント一覧

基礎

#ドキュメント説明所要時間
01JVM概要アーキテクチャ、JDK選択、実行モデル45分
02クラスローディングクラスローダー階層、動的ロード45分
03メモリ管理ヒープ、スタック、メタスペース60分

ガベージコレクション

#ドキュメント説明所要時間
04ガベージコレクションGCの種類、動作原理、世代別GC60分
05GCチューニングパラメータ設定、モニタリング、選択指針60分

応用

#ドキュメント説明所要時間
06パフォーマンスJIT、プロファイリング、最適化60分
07トラブルシューティングヒープダンプ、スレッドダンプ、分析ツール60分

最新機能

#ドキュメント説明所要時間
08Java 21新機能Virtual Threads、Record、Pattern Matching60分
09Native ImageGraalVM、AOTコンパイル、コンテナ最適化60分

コンパイル

#ドキュメント説明所要時間
10Javaコンパイルjavac、バイトコード、アノテーションプロセッサ45分

リソース管理

#ドキュメント説明所要時間
11I/Oとリソース管理コネクションプール、Direct Buffer、リソースリーク60分

推奨学習パス

パス1: JVMの基礎を固めたい方

1. JVM概要
2. クラスローディング
3. メモリ管理
4. ガベージコレクション

パス2: パフォーマンス問題を解決したい方

1. メモリ管理
2. ガベージコレクション
3. GCチューニング
4. パフォーマンス
5. トラブルシューティング

パス3: 最新のJavaを活用したい方

1. JVM概要
2. Java 21新機能 ★
3. パフォーマンス

★ Virtual Threads は本プロジェクトで活用

パス4: コンテナ/サーバーレス最適化

1. JVM概要
2. メモリ管理
3. GCチューニング
4. Native Image ★

★ 起動時間・メモリ効率の大幅改善


学べること

idp-server開発に必要な知識

JVMの概念idp-serverでの活用
Virtual Threads高スループット・リクエスト処理
メモリ管理大量セッション・トークン管理
GCチューニングレスポンスタイム安定化
クラスローディングSpring Boot DIの理解
JITコンパイルウォームアップ戦略
Native Imageコンテナ起動時間短縮、メモリ効率化

運用に必要な知識

JVMの概念運用での活用
ヒープダンプOutOfMemoryError調査
スレッドダンプデッドロック・ハング調査
GCログパフォーマンス分析
JMX監視・メトリクス収集

実践環境の準備

JDKのインストール

# macOS (Homebrew)
brew install openjdk@21

# Ubuntu/Debian
sudo apt install openjdk-21-jdk

# バージョン確認
java -version

推奨JDKディストリビューション

ディストリビューション特徴推奨用途
Eclipse TemurinOpenJDK準拠、無償、長期サポート一般開発・本番
Amazon CorrettoAWS最適化、無償、長期サポートAWS環境
Oracle GraalVM高性能、Native Image対応高パフォーマンス要件
Azul Zulu幅広いプラットフォーム対応エンタープライズ

関連リソース

公式ドキュメント

書籍

  • 「Javaパフォーマンス」Scott Oaks著 - JVMチューニングの定番
  • 「Optimizing Java」Benjamin J. Evans著 - 実践的な最適化手法

ツール


次のステップ

JVMの基礎を学んだ後は、以下のドキュメントに進みましょう: