3

JVM引数を使用して、JVMヒープなどに割り当てられるメモリを制限できます.

プログラムの実行時にコマンドラインで JVM 引数を追加する代わりに、開発時にこれらの値を Java プログラム内にハードコーディングできるかどうかを知りたいです。出来ますか?

4

3 に答える 3

1

いいえ、できません。ヒープ サイズを管理するには、コマンド ラインに引数を追加するだけです。

汚い解決策は、異なるヒープ サイズで別のプロセスを生成することですが、これはあなたが探しているものではないと思います。ここに例があります。

于 2013-11-08T09:39:15.323 に答える
1

実行時にヒープ サイズを変更しようとしていますか? JVMの起動時にヒープサイズの値を設定する必要があり、その後変更できないため、これを行うことはできません。

于 2013-11-08T09:36:23.913 に答える
1

私の最初の質問は、なぜそれを設定しているのかということです。サーバー JVM は、最大値をメイン メモリ サイズの 1/4 に設定します。これは、ほとんどのアプリケーションにとって妥当です。独自の JVM を構築することでこれを変更するか、次のようなエイリアスを作成することができます

alias java="java -Xmx30g"

できることは、メモリ使用量を定期的にチェックし、それ以上使用している場合はプロセスを強制終了することです。もちろん、これは非常に悪い考えです。

代わりに、同じ引数を使用してプログラムを再度実行することができますが、必要な最大ヒープ サイズを指定します。つまり、Runtime.exec ができます。

起動時に最大メモリ サイズを予約するため、変更できません。

ところで、ヒープが重要な唯一のメモリであるという一般的な誤解があります。JVM、スレッドスタック、ネイティブメモリなどはすべてメモリを使用するため、ヒープを 100 MB に設定できますが、JVM は 300 MB を使用する可能性があるため、これは当てはまりません。

于 2013-11-08T09:45:39.460 に答える