0

JVM オプションの下限を決定する方法、Xmxまたは試行錯誤のプロセスなしでメモリを節約するにはどうすればよいですか? 私はたまたま設定XmsXmxて同じ量になるので、実行時間を節約するのに役立つと思います。Xmx7Gに設定すると、同様Xmsに、すべてが使用されていることが喜んで報告されます. 次のクエリを使用します。

Runtime.getRuntime().totalMemory()

それよりも小さい値、たとえば 5GB に設定すると、同様にすべてが使用されます。1GB でヒープ不足の例外が発生するとします。私の実行時間は通常 10 時間以上であるため、試行錯誤のプロセスを避ける必要があります。

4

2 に答える 2

1

JConsole でヒープの使用状況を監視しながら、十分なヒープでプログラムを実行します。主要なガベージ コレクションの後で最も高いメモリ使用量に注意し、最大ヒープ サイズをその量より 50% から 100% 大きく設定して、頻繁なガベージ コレクションを回避します。

余談ですが、totalMemory は、現在使用されているヒープの量ではなく、ヒープのサイズを報告します。最小ヒープ サイズと最大ヒープ サイズを同じ数値に設定すると、プログラムの動作に関係なく、totalMemory は同じになります ...

于 2013-09-21T09:25:57.640 に答える
0

Xms256MXmx512M、および簡単なプログラムを使用すると、 freeMemory244M でtotalMemory245MmaxMemoryで 455M です。とを使用するXms512MXmx512M、金額は 488M、490M、および 490M です。これは、が 未満のtotalMemory場合に変化する可変量であることを示唆しています。これは、質問に対する答えが、少量に設定して の最高水準点を監視することであることを示唆しています。また、現在および将来のオブジェクトの合計が超えることができない最終的なヒープ サイズであることも示唆しています。XmsXmxXmstotalMemorymaxMemory

最高水準点がわかったら、Xmxそれよりやや多めに設定するのが賢明です (ただし、これは経済化の取り組みであるため、過度に多すぎないようにXmsします)。

于 2013-09-21T11:59:14.960 に答える