どのようにメタスペースとネイティブエリアメモリは、Javaで管理されますでしょうか?

ForInfinity:

私が理解していたものから、ネイティブエリア JVMの内部には、ガベージコレクタのために完全に立ち入り禁止です。ここでネイティブエリア、内部のメタスペースがあります。前述のメタスペースでは、我々は以下のような分野持っ定数プール、フィールドおよびメソッドデータを

ネイティブエリアは、C ++のメモリ管理によって管理されているので、どのようにではなく、一定の大きさではなく、必要とされているどのくらいのメモリに応じて、動的に拡張メタスペースは、実行されないことを来る、(あるいは少なくともそれは私がそれを理解する方法です)メモリ不足?ガベージコレクタは、ネイティブエリアの残りのメタスペースで許可されていないが?C ++は、動的にメモリが管理していますか?

ラヴィ:

来どのように固定サイズではなく、メタスペース、

あなたはに値を設定することによって、サイズを制限することができMaxMetaSpaceSize、コマンドラインで。

...メモリが不足していないのだろうか?

はい、それは実際にはメモリが不足しません。それは、利用可能なメモリの使用量を超えて取得するときにjava.lang.OutOfMemoryError: Metaspace例外を。

ガベージコレクタは、メタスペースで許可されています

はい。GCは、Javaヒープとメタスペースではなく、ネイティブヒープの両方を収集します。それは、ネイティブコードは、それを所有している誰が管理しています。

参照 :

3.2のOutOfMemoryError例外を理解します

G1ガベージコレクタ、Permanent世代とメタスペースについて

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=203688&siteId=1