Java のメモリ管理
Java のメモリ割り当ては、ヒープと非ヒープの 2 つの主要セクションに分かれています。ヒープは、Java 仮想マシン (JVM) がクラス インスタンスと配列にメモリを割り当てるランタイム データ領域です。非ヒープには、JVM の内部処理と最適化に必要なメモリが含まれます。
ヒープ メモリ
ヒープ メモリは、さらに 3 つのプールに分割されます: Eden Space、Survivor Space、Tenured Generation ( Old Gen)。
-
Eden Space: メモリは、最初は Eden Space プールからほとんどのオブジェクトに割り当てられます。
-
Survivor Space: Eden スペースのガベージ コレクションを経て生き残ったオブジェクトは、Survivor Space に移動されます。
-
Tenured Generation: Survivor Space にしばらく存在していたオブジェクトは、Tenured Generation に移動されます。
非ヒープ メモリ
非ヒープ メモリには、永続世代とコード キャッシュという 2 つのメイン プールが含まれます。
-
永続世代: クラスやメソッド オブジェクトなど、JVM 自体のすべてのリフレクティブ データが含まれます。
-
コード キャッシュ: ネイティブ コードのコンパイルおよび保存用のメモリが含まれます。
メモリ使用量の監視
Java 監視および管理コンソール (JConsole) は、メモリ使用量など、Java アプリケーションのさまざまな側面を監視するためのグラフィカル ユーザー インターフェイスを提供します。 JConsole は、前述のヒープ プールと非ヒープ プールのメモリ使用量を表示し、開発者が潜在的なメモリの問題を特定できるようにします。
追加リソース
- [Java のヒープ メモリ](https: //docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/fundamentals.html#memorymodel)
- [Java の非ヒープ メモリ](https://docs.oracle .com/javase/8/docs/technotes/guides/vm/gctuning/fundamentals.html#noheapmemory)
- [JConsole の使用](https://docs.oracle.com/javase/8/docs/ technotes/tools/share/jconsole.html)
以上がJava メモリはどのように構造化され、管理されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。