ForInfinity:
私が理解していたものから、ネイティブエリア JVMの内部には、ガベージコレクタのために完全に立ち入り禁止です。ここでネイティブエリア、内部のメタスペースがあります。前述のメタスペースでは、我々は以下のような分野持っ定数プール、フィールドおよびメソッドデータを。
ネイティブエリアは、C ++のメモリ管理によって管理されているので、どのようにではなく、一定の大きさではなく、必要とされているどのくらいのメモリに応じて、動的に拡張メタスペースは、実行されないことを来る、(あるいは少なくともそれは私がそれを理解する方法です)メモリ不足?ガベージコレクタは、ネイティブエリアの残りのメタスペースで許可されていないが?C ++は、動的にメモリが管理していますか?
ラヴィ:
来どのように固定サイズではなく、メタスペース、
あなたはに値を設定することによって、サイズを制限することができMaxMetaSpaceSize
、コマンドラインで。
...メモリが不足していないのだろうか?
はい、それは実際にはメモリが不足しません。それは、利用可能なメモリの使用量を超えて取得するときにjava.lang.OutOfMemoryError: Metaspace
例外を。
ガベージコレクタは、メタスペースで許可されています
はい。GCは、Javaヒープとメタスペースではなく、ネイティブヒープの両方を収集します。それは、ネイティブコードは、それを所有している誰が管理しています。
参照 :