高度な技術: Java 仮想マシン (JVM) ランタイムの詳細な説明

高度な技術: Java 仮想マシン (JVM) ランタイムの詳細な説明

私たちが知っている JVM メモリ領域は、ヒープとスタックです。これは一般的な区分であり、実行領域に基づく区分でもあります。ヒープはすべてのスレッドで共有される領域ですが、スタックはスレッドごとに分離されており、各スレッドでは共有されません。

スレッドは領域を共有しない

各スレッドのデータ領域には、プログラム カウンター、仮想マシン スタック、ローカル メソッド スタックが含まれており、これらはすべて新しいスレッドの作成時に作成されます。

プログラムカウンタ

プログラム カウンター領域は、スレッドの各実行命令を格納するために使用される小さなメモリ領域です。各スレッドには独自のプログラム カウンターがあり、この領域ではメモリ オーバーフローは発生しません。

VMスタック

仮想マシン スタックは、Java メソッド実行のメモリ モデルを記述します。各メソッドが実行されると、ローカル変数テーブル、オペランド スタック、動的リンク、メソッド終了などの情報を格納するためのスタック フレームが作成されます。各メソッドが呼び出されてから実行されるまでのプロセスは、スタック フレームが仮想マシン スタックにプッシュされてからスタックからポップされるまでのプロセスに対応します。

ネイティブメソッドスタック

ネイティブ メソッド スタックは、ネイティブ メソッド (ネイティブとマークされたメソッド、つまり Java 以外の言語で実装されたメソッド) をサポートするために使用されます。

仮想マシン スタックとローカル メソッド スタック。スレッドによって要求されたスタック容量が JVM で許可される最大容量を超えると、StackOverflowError 例外がスローされます。

スレッドが共有しない領域は、下の図で緑色で示されています。

スレッド共有領域

スレッド共有領域には、ヒープ領域とメソッド領域が含まれます。

ヒープ

ヒープは最も頻繁に処理される領域です。 JVM の起動時に作成された配列とオブジェクトを格納します。 JVM ガベージ コレクションも主にヒープ上で動作します。

実際に必要なヒープが自動メモリ管理システムが提供できる最大容量を超えると、OutOfMemoryError 例外がスローされます。

方法領域

メソッド領域は、すべてのスレッドで共有できるランタイム メモリ領域です。実行時定数プール、フィールドとメソッドのデータ、コンストラクタと通常のメソッドのバイトコードの内容、クラス、インスタンス、およびインターフェースを初期化するときに使用されるいくつかの特殊なメソッドなど、各クラスの構造情報を格納します。

クラスとインターフェースを作成するときに、ランタイム定数プールを構築するために必要なメモリ領域がメソッド領域が提供できる最大メモリ領域を超えると、OutOfMemoryError がスローされます。

ランタイム定数プール

ランタイム定数プールはメソッド領域の一部です。各ランタイム定数プールは、JVM のメソッド領域に割り当てられます。クラスとインターフェースが JVM にロードされた後、対応するランタイム定数プールが作成されます。ランタイム定数プールは、各クラスまたはインターフェースの定数プール (Constant_Pool) のランタイム表現です。これには、コンパイラーに認識される数値リテラルから、実行時に解決する必要があるメソッドまたはフィールドへの参照まで、いくつかの種類の定数が含まれます。

メソッド領域のメモリ空間がメモリ割り当て要求を満たすことができない場合、Java 仮想マシンは OutOfMemoryError 例外をスローします。

スタックにはフレームが含まれており、メソッドが呼び出されると、フレームがスタックにプッシュされます。フレームには、ローカル変数配列、オペランド スタック、定数プール参照が含まれます。

<<:  大規模アプリケーションのパフォーマンスの課題を克服するにはどうすればよいでしょうか?

>>:  あなたは、VLAN と VXLAN の違いを理解しているネットワーク エンジニアですか?

推薦する

locvps: 香港 VPS 30% オフ、荃湾/大埔/雲地など、25.9 元/1G メモリ/1 コア/30gSSD/400g トラフィック/50M 帯域幅

現在、定評のある中国の VPS 販売業者 locvps (~) は、香港の複数のデータセンターの V...

生産失敗 | Kafka のメッセージ送信が数十秒も遅延する原因は、実は...

以前、私は「理由は分かっているが、理由は分からない。Kafka がバージョン 2.8 で Zooke...

servarica: 8T 大容量ハードディスク VPS、8G メモリ、100Mbps 無制限、わずか 20 ドル、カナダのネイティブ IP

Servarica は、もう 1 つの便利な VPS を正式に提供してくれました。8T のハードディ...

民間病院のウェブサイト構築にマーケティングアイデアを反映させる方法

民間病院のオンラインプロモーションの全プロセスで、最も重要なのはどれでしょうか?医療の転換率です!想...

ブランドを宣伝する方法: 慎重に、そして大胆に

週末、私は弊社のクライアントの 1 社の活動を体験するために現場に行きました。彼らはネイティブ ティ...

百度の2大事業グループ設立の背景:モバイルレイアウトが加速する

中国新聞社、6月9日。百度は6月7日午後、従業員にメールを送り、組織体制の調整を発表した。当日から「...

アマゾンとマイクロソフト、クラウドコンピューティング市場の独占調査に直面

メディア規制当局オブコムによると、アマゾンとマイクロソフトは英国のインターネット産業の70~80%を...

有料サブスクリプションが主流になりつつあります。今年 App Store で最も収益性の高いアプリのトップ 10 をご紹介します。

一般的に、ゲームは最も収益性の高いインターネットビジネスであると考えられていますが、最新の統計による...

#低価格専用サーバー: reprisehosting-$27/メモリ4g/ハードディスク500g/トラフィック10T/IPMI/シアトル

私は個人的に何度も reprisehosting を紹介してきました (私は自分の AS 番号を持っ...

推奨: Crystone US 無制限ホスティング $0.99/月 (Windows および Linux はオプション)

私は、超安価な無制限ホスティングであるCrystoneを推奨します。WindowsとLinuxのオプ...

電子商取引サイトのコンバージョン率についてお話しましょう:収益化のアルゴリズム

非常に興味深いことに、私が旧正月に書いた記事「コンバージョン率について語ろう」は、3か月後にいくつか...

斗宇は「捨て子」になってしまったのか?

もし合併が失敗していなかったら、斗魚の現在の財務実績や市場での人気は、ゲーム業界以外の人々から話題に...

マーケティングの盲点: 企業が無視できないいくつかの小さなこと

マーケティングは小さな問題ではありません。どの企業も売上を伸ばそうと努力し、マーケティング手法に注意...