VM已经启动后更改java -Xmx

时间:2011-02-02 02:13:47

标签: java debian heap-memory openjdk jinfo

  

可能重复:
  Setting JVM heap size at runtime
  programatically setting max java heap size

我的计算机上运行了一个长时间运行的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)

1 个答案:

答案 0 :(得分:2)

  

由于我不想重新启动作业,有没有办法让JVM在JVM启动后更改它的最大堆大小,例如使用jinfo -flag或类似的东西?这可能吗?

没有。这不可能。或者至少,不在任何平台上使用任何现有的Sun JVM。

有关详细信息,请参阅上述评论中相关问题的答案。

  

这是Debian bug#532538的症状吗?

没有