Java Beginner Lab

Java メモリ構造ビジュアライザ

Javaコードを1行ずつ進めながら、PCレジスタ・スタック・ヒープ・メソッドエリア・文字列プール・GC対象の変化を確認できます。

表示モード
学習しやすい簡略表示
Main.java
📍

PCレジスタ Program Counter

スレッドごとの現在のJVM命令位置

🧱

スタック領域 Stack

メソッド呼び出しごとの作業領域

☁️

ヒープ領域 Heap

オブジェクト・配列・Class mirror

🗂️

メソッドエリア Method Area(JVM仕様上の論理概念)

クラス単位の情報を全スレッドで共有

🔤

文字列プール String Pool

同じ文字列リテラルを共有

♻️

GC対象 Garbage Collection

どこからも参照されなくなったオブジェクト

この画面で覚える5つ

① PCレジスタ

スレッドごとに、現在実行しているJVM命令の位置を持つ。

② ローカル変数

メソッドのスタックフレームに置かれる。

③ メソッドエリア

クラス単位の構造を持つ論理領域。HotSpotでは複数の実領域に対応する。

④ オブジェクト本体

new で作られ、基本的にヒープに置かれる。

⑤ 参照変数

オブジェクトそのものではなく、ヒープ上の対象を参照するための値を持つ。

※ 学習用に単純化した図です。PCレジスタが実際に保持するのはJavaのソース行番号ではなく、実行中のJVM命令のアドレスやオフセットです。画面では理解しやすいよう対応するソース行と結び付けています。 JVM仕様のメソッドエリアは論理概念であり、物理的な配置は規定されません。現在のHotSpotでは、クラスメタデータはMetaspace、Class mirror・static値・文字列プールはHeap側に置かれます。 画面ではこれらを区別して表示し、Code Cacheは説明を絞るため省略しています。実際のHotSpot JVMではJIT最適化により、内部的な実行方法が図と完全には一致しない場合があります。

この教材では

いつでも確認

用語集