2010-11-19 5 views
11

は、私は次のパラメータを使用して、私のJava VMを起動すると仮定:Java PermGen空間は、VMメモリ全体の一部ですか?

-Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m 

512メートルPermGenスペースは1024メートルメモリにを追加したり、彼らはそれの一部でありますか?言い換えれば、私は1536mまたは1024mの総メモリ消費量を持っていますか?後者の場合、アプリケーションがPermGenスペース以外の目的で512mしか持たないということですか?

PermGenのスペースが不明であることが判明した場合にお知らせください。 ;-) PermGen空間は別個のメモリ・プールであるのに対し

-Xms
+0

あなたはそれを試してみませんか?タスクマネージャのすぐ上に表示する必要があります。 –

+0

の可能な複製[permgenは-Xmxに含まれていますか?](http://stackoverflow.com/questions/4084280/is-permgen-included-in-xmx) –

答えて

15

-Xmxパラメータは、ヒープメモリを指します。

つまり、Javaアプリケーションで使用できるメモリの合計サイズは、1 GiBではなく1.5 GiBになり、ヒープ割り当てオブジェクト用の完全なギガバイトの容量が得られます。

0

SunのJVMでは、永続世代はヒープの一部ではありません。これは、クラス定義や関連するデータのほか、中身のある文字列がどこにあるかなど、別の領域です。

1

Googleを介してこのページにぶつかりました。これは、PerGenがヒープの一部であるかどうかの特定の混乱です。 答えは「ヒープは小さな部分/世代に分かれており、これらの部分は若い世代、旧世代またはテナード世代、永続世代」です。これがオラクルの言い訳です。創始者が言うところでは、ウェブドメインのオーディエンスが言うよりもはるかに意味があります。

PermGenの短い注記: 永続的な生成には、アプリケーションで使用されるクラスとメソッドを記述するためにJVMが必要とするメタデータが含まれています。永続世代は、アプリケーションが使用しているクラスに基づいて実行時にJVMによって生成されます。さらに、Java SEライブラリのクラスとメソッドをここに格納することもできます。

関連する問題