14

Javaの「共有オブジェクトメモリ」と「ヒープメモリ」の違いは何ですか? 「共有オブジェクトメモリ」は「ヒープメモリ」のスーパーセットのようなものですか?

この質問のソースは、jmap のドキュメントです。「共有オブジェクトメモリ」と「ヒープメモリ」を印刷するためのさまざまなオプションを提供します。

4

3 に答える 3

5

Javaメモリ(Java 8まで)は3つの部分で構成されています。

  1. ヒープメモリ。
  2. 非ヒープメモリ(PermGen)。
  3. その他のメモリ(JVM独自の構造)。

すべてのクラスインスタンスのメモリは、ヒープから割り当てられます。非ヒープメモリは、主にクラスローダーがクラス関連のデータを格納するために使用します。

共有オブジェクトに関する詳細は次のとおりです。共有オブジェクトファイルとは何ですか。

于 2011-07-28T08:08:12.220 に答える
1

これまでの私の分析から:

デフォルトのオプションでは、以下を含むすべてのメモリ情報が出力されます。

  • ヒープメモリ
  • パーマゲン
  • その他のメモリ (JNI、スタック空間などを含む)

この分析は、以下に基づいている場合:

JDK ドキュメントでは、デフォルト オプション (「共有オブジェクト メモリ」) が Solaris の pmap コマンドに似ていることが言及されています。pmap コマンドを見ると、完全なメモリ情報が出力されているようです。

この理解を確認するためにコメントを追加してください。

于 2011-07-28T08:47:38.527 に答える
0

共有オブジェクト メモリは、頻繁にアクセスされる Java ライブラリのクラスがメモリ マップされる場所であり、rt.jar からロードするよりも高速にロードできます。これにはComparableStringObjectなどの一般的に使用される多くのクラスが含まれます。要求されたクラス ファイルが共有オブジェクト メモリで使用できない場合は、rt.jar から要求されます。これは、さまざまな Java プログラムで頻繁に使用されるクラスをキャッシュするものと考えることができます。

于 2011-09-27T06:03:14.000 に答える