1

重複の可能性:
実行時にJVMヒープサイズを
プログラムで設定する最大Javaヒープサイズを設定する

私は自分のコンピューターで長時間実行されているJavaジョブを実行していますが、深刻なメモリプレッシャーに遭遇し、ガベージコレクターを頻繁に実行する必要があるため、終了に近づくと非常に遅くなります。-Xmxつまり、このジョブに必要な最大ヒープサイズを過小評価していました。

ジョブを再開したくないので、JVMがすでに開始された後、たとえばを使用するなどして、JVMに最大ヒープサイズを変更させる方法はありますjinfo -flagか?これは可能ですか?

jinfo -flag +Xmx1024mまたはのバリエーションを試してみましたがjinfo -flag Xmx=1024m、すべて次の例外があります。これはDebianバグ#532538の症状ですか(影響を受けるバージョンのJVMを使用しています)、これは予期された動作ですか(後で変更することは不可能-Xmxです)、またはフラグをjinfo誤って提供していますか?

Exception in thread "main" java.io.IOException: Command failed in target VM
    at sun.tools.attach.LinuxVirtualMachine.execute(LinuxVirtualMachine.java:218)
    at sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:213)
    at sun.tools.attach.HotSpotVirtualMachine.setFlag(HotSpotVirtualMachine.java:190)
    at sun.tools.jinfo.JInfo.flag(JInfo.java:129)
    at sun.tools.jinfo.JInfo.main(JInfo.java:76)
4

1 に答える 1

2

ジョブを再開したくないので、たとえばjinfo -flagなどを使用して、JVMがすでに開始された後にJVMの最大ヒープサイズを変更する方法はありますか?これは可能ですか?

いいえ、できません。または、少なくとも、どのプラットフォーム上の既存のSunJVMでもありません。

詳細については、上記のコメントに従って関連する質問への回答を参照してください。

これはDebianバグ#532538の症状ですか?

いいえ。

于 2011-02-02T02:22:19.373 に答える