2011-02-02 64 views
1

可能重複:
Setting JVM heap size at runtime
programatically setting max java heap size變化的java -Xmx後的虛擬機已經開始

我有一個長期運行的Java工作在我的電腦上運行,它的減速當它接近尾聲時非常嚴重,因爲它遇到嚴重的內存壓力,垃圾收集器必須頻繁運行。換句話說,我低估了這個工作所需要的最大堆大小-Xmx

因爲我不想重新啓動作業,有沒有辦法讓JVM在JVM啓動後變成最大堆大小,例如使用jinfo -flag或類似的東西?這可能嗎?

我一直在嘗試變化jinfo -flag +Xmx1024mjinfo -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) 
+0

[你不能在運行時改變JVM堆大小的設定(http://stackoverflow.com/questions/763295/setting-jvm-heap-size-at-runtime) – 2011-02-02 02:21:12

回答

2

因爲我不想重新開始作業,有沒有辦法使用金佛山-flag或類似的東西,使JVM改變它之後的JVM已經開始最大堆大小,例如?這可能嗎?

不,這是不可能的。或者至少,不是任何平臺上的任何現有Sun JVM。

欲瞭解更多詳情,請參閱上述評論的相關問題的答案。

這是Debian bug#532538的症狀嗎?