2009-03-10 7 views
1

Java VMには、ヒープのサイズを設定するための "-XMx"と "-XMs"があります。また、ヒープのサイズをインテリジェントに調整できる「人間工学」と呼ばれる機能も備えています。しかし、厳密に固定サイズのヒープが必要な問題があります。ここでJavaヒープのサイズを修正する方法

は、コマンドライン引数である:

"-Xms2m -Xmx2m -XX:+PrintGCDetails" 

しかし、GCログを観察することによって、ヒープのサイズは2048Kに固定されていなかったようです。例えば、 2368K、2432K、2176K、など:

[GC [PSYoungGen: 480K->72K(704K)] 1740K->1332K(2368K), 0.0032190 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 
[GC [PSYoungGen: 560K->64K(768K)] 2094K->1598K(2432K), 0.0033090 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 
[GC [PSYoungGen: 544K->32K(768K)] 1675K->1179K(2176K), 0.0009960 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 

が行う方法はありません "厳しいサイジング"(これ以上でもそれ以下)Javaヒープの?

答えて

-1

これまで標準VMを使用することはできません。残念ながら私はすぐに参照がありません。

+0

ありがとう、1月。簡単な方法がない場合、私はソースコードを掘り下げなければならないでしょう。 – peng

0

-Xmxおよび-Xmsには、初期ヒープサイズを決定する他のオプションもあります。詳細はjvm tuning guideを確認してください。

4

私は、あなたが意図したとおりにJVMがヒープを管理すると信じていますが、あなたの例の問題は、最大ヒープサイズが効果的に無視されるということです。

SunのWindows JVMバージョン1.6.0_06では、「最大ヒープサイズ」は約6MB(つまり-Xmx6m)と考えられます。これを低く設定しようとすると、ヒープが実際に大きくなることがあります。 (最小値は16mだと思っていましたが、ちょっと試してみると、6mという低い値が動作するように見えます)。

-Xms8mと-Xmx8mを設定すると、ヒープがサイズ。

0

私はそれがちょっと小さすぎると思う。 16mや64mのような高いものを試してみてください。さらに、内部サイズと外部サイズは異なる靴です。ヒープは常に満杯になるわけではないので、Xmxより小さい値は常に可能であり、プログラムが開始されたばかりの場合にはXms未満でも可能です。しかし、外部的には、Xmsのメモリ量が割り当てられていることがわかります。私が最初に私はそれが2ギガバイトを言ったと思ったことを読んで

0

;)

Javaは、少なくとも10使用しています忘れてはいけない - あなたはできるだけ多くの違いを確認しない場合があります保存し、数百Kので、非ヒープ領域の30メガバイトをあなたが考えるように。