私の最初の質問は、なぜあなたはそれを設定しているのですか?サーバーJVMは、メインメモリサイズの最大1/4に設定し、これはほとんどのアプリケーションにとって合理的です。 JVMを所有する構築によってこれを変更するか、次のようなエイリアスを作成することができます
alias java="java -Xmx30g"
できることは、メモリの使用量を定期的に確認し、さらに使用するとプロセスを殺すことです。もちろん、これは非常に悪い考えです。
代わりに、あなたができることは、同じ引数で再びプログラムを実行することですが、必要な最大ヒープサイズで。つまり、runtime.execができます。
起動時に最大メモリサイズを留保するため、変更できません。
ところで、ヒープが重要な唯一の記憶であるという一般的な誤解があります。これは、JVM、スレッドスタック、ネイティブメモリなどがすべてメモリを使用しているため、ヒープを100 MBにすることができますが、JVMは300 MBを使用できます。