JVM引数を使用して、JVMヒープなどに割り当てられるメモリを制限できます.
プログラムの実行時にコマンドラインで JVM 引数を追加する代わりに、開発時にこれらの値を Java プログラム内にハードコーディングできるかどうかを知りたいです。出来ますか?
JVM引数を使用して、JVMヒープなどに割り当てられるメモリを制限できます.
プログラムの実行時にコマンドラインで JVM 引数を追加する代わりに、開発時にこれらの値を Java プログラム内にハードコーディングできるかどうかを知りたいです。出来ますか?
いいえ、できません。ヒープ サイズを管理するには、コマンド ラインに引数を追加するだけです。
汚い解決策は、異なるヒープ サイズで別のプロセスを生成することですが、これはあなたが探しているものではないと思います。ここに例があります。
実行時にヒープ サイズを変更しようとしていますか? JVMの起動時にヒープサイズの値を設定する必要があり、その後変更できないため、これを行うことはできません。
私の最初の質問は、なぜそれを設定しているのかということです。サーバー JVM は、最大値をメイン メモリ サイズの 1/4 に設定します。これは、ほとんどのアプリケーションにとって妥当です。独自の JVM を構築することでこれを変更するか、次のようなエイリアスを作成することができます
alias java="java -Xmx30g"
できることは、メモリ使用量を定期的にチェックし、それ以上使用している場合はプロセスを強制終了することです。もちろん、これは非常に悪い考えです。
代わりに、同じ引数を使用してプログラムを再度実行することができますが、必要な最大ヒープ サイズを指定します。つまり、Runtime.exec ができます。
起動時に最大メモリ サイズを予約するため、変更できません。
ところで、ヒープが重要な唯一のメモリであるという一般的な誤解があります。JVM、スレッドスタック、ネイティブメモリなどはすべてメモリを使用するため、ヒープを 100 MB に設定できますが、JVM は 300 MB を使用する可能性があるため、これは当てはまりません。