2012-01-11 22 views
3
次ノーオペレーションコードの場合

ノンオペレーションプログラム用のJava仮想メモリ?

public class a { 
public static void main(String args[]) throws Exception{ 
Thread.sleep(100000); 
} 
} 

私は64ビットJVM上で実行する場合は、「トップ」を通じて、私はそれが2GBの仮想メモリを使用していることがわかります。その仮想メモリは何を占有していますか?この例では奇妙かもしれないが、我々はulimitのは-vそれを超えるように、仮想MEMの多くを使用して、いくつかの製品コードを参照しています

おかげ ヤン

+1

[この質問を参照](http://stackoverflow.com/questions/561245/virtual-memory-usage-from-java-under-linux-too - 多分 - メモリ使用)。仮想メモリの消費量はほとんど意味がありません。 – ig0774

答えて

4

仮想メモリは、それが実際に割り当てられているされていることを意味するものではありません中古。これは単に、必要に応じて現在使用可能なアドレスが多いことを意味します。

+0

私は知っていますが、それは何のためにマップされていますか?バイナリ自体とライブラリはそれほど大きくありません。 –

+0

"そうではありません" - 私はあなたがここでダブルネガティブを意図していないと確信しています。私は自分でそれを修正するつもりだが、私はまだ2Kの担当者ではない –

+0

@KevinKありがとう、固定。 –

0

Javaアプリケーションを起動すると、起動時にヒープ(最大サイズまで)が作成されます。最近のSun/Oracle JVMのデフォルトサイズはメインメモリの1/4です。これは、予約アドレス空間だけを除いて、無駄なことに聞こえます。各アプリケーションに独自のアドレス空間がある場合、これはあまり重要ではありません。 (限られたアドレス空間を持つ32ビットJVMを持っていない場合)

関連する問題