可能重複:
Setting JVM heap size at runtime
programatically setting max java heap size變化的java -Xmx後的虛擬機已經開始
我有一個長期運行的Java工作在我的電腦上運行,它的減速當它接近尾聲時非常嚴重,因爲它遇到嚴重的內存壓力,垃圾收集器必須頻繁運行。換句話說,我低估了這個工作所需要的最大堆大小-Xmx
。
因爲我不想重新啓動作業,有沒有辦法讓JVM在JVM啓動後變成最大堆大小,例如使用jinfo -flag
或類似的東西?這可能嗎?
我一直在嘗試變化jinfo -flag +Xmx1024m
或jinfo -flag Xmx=1024m
,他們都給我以下例外。這是Debian bug #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)
[你不能在運行時改變JVM堆大小的設定(http://stackoverflow.com/questions/763295/setting-jvm-heap-size-at-runtime) – 2011-02-02 02:21:12