2011-08-15 14 views
1

これは恐らく初心者からの正式な質問ではありませんが、お手伝いができることを願っています。Javaでヒープをどれくらい増やすことができますか?

ヒープの-XX:MinHeapFreeRation=40(デフォルト値)パーセントをフリーにするために、Javaによってヒープがどのように増加するか見積もることができるのだろうか?

具体的には:
ヒープが300 MBを割り当て/占有している場合、JVMは常に40%* 300 = 120 MBの空きがなければならないことを意味します。この場合、メモリリークがあり、GCが役に立たないとしましょう。だから、私のフリー・ヒープ・スペースが120 MB以下に落ちる危険があるときに、Javaがヒープ・メモリーを割り振る量が増えるでしょうか? 20 MB、40 MB?私はそれがシステムとシステムの現在の状態に依存していると思います。しかし、私のアプリだけが動いているとしましょう。

誰かが助けることができますか?ありがとう。

+0

メモリリークが発生した場合は、修正する必要があります。 1つの方法はjmapとjhatですが、IDEにはおそらくヒープダンプを行うためのより良い方法があります。ヒープ・ダンプは、ヒープ上のすべてのメモリーを詳細に示します。どのオブジェクトが多くの領域を占めているかを見ることができます。 – toto2

+0

はい、確かに、メモリリークを修正する必要があります。しかし、私の質問は他のことを指していました。あなたがメモリリークを持っていなくても(私はちょうど私が望むものを理解する助けになると思うと書いています)、メモリリークがなくてもヒープが成長する必要がある場合でも、Javaはどのように計算しますかヒープの量を増やす必要がありますか? – ovdsrn

+0

私は手がかりがありません。しかし、おそらくあなたが使用している特定のJVMに大きく依存しているので、本当の答えはないでしょう。あなたは、例えばopenjdkのコードを見て、時間を無駄にすることができます。 – toto2

答えて

0

ヒープが大きくなるサイズは実装固有のものだとします。しかし、XX:MaxPermSizeパラメーターを使用して、ヒープが成長するまでのサイズを常に制限することができます。

関連する問題