2010-11-22 2 views
0

を割り当てていますより多くのメモリを使用したJVMである:は、なぜ私は、次のコマンドを使用してJavaプロセスを始めています

のjava -jar -Xmx32m・ウィンストン・lite.jar --warfile = myWarFile.war

指定したメモリ量を使用する代わりに、まだ144mを割り当てています。

EDIT: 私がallocateと言うとき、私は「トップ」プロセスを見ると、私は144mが使用されているメモリの量として見ていることを意味します。

私はhttp://www.oracle.com/technetwork/java/embedded/documentation/index.html現在のバージョンを使用しています。

私のアプリケーションが私が割り当てるよりも多くのメモリを必要とすると、jvmがクラッシュすることがあります。

答えて

3

-Xmxは、内部ヒープに使用できるメモリの量をJVMに通知します。

JVMは、他の目的(永続的な生成、一時的なスペースなど)のためにメモリを必要とし、さらに、それ自身のバイナリコードのためにスペースが必要なすべてのバイナリと同様に、ライブラリ/ DLLs/

引用した144 MiBには、おそらくこれらの他のメモリ使用の少なくとも一部が含まれています。

どのようにメモリ使用量を測定しましたか?仮想メモリを使用している現代的なOSでは、プロセスのメモリ使用量を測定することは些細なことではなく、単一の値として表現することはできません。

+0

topコマンドから144mを取得しています。 OSはubuntuです。 – predhme

+0

@predhme:topで示される値には共有ライブラリなどが含まれている可能性があるため、常にヒープよりもはるかに大きくなります。 – sleske

+0

それは言うことが正当だろうか、TOPで報告された金額を比較し、ウィンドウのタスクマネージャによって報告された値は正確ではありませんか?特に彼らは2つの別々のJVMSを持っているので? – predhme

関連する問題