Измените java -Xmx после того, как виртуальная машина уже запущена

Возможные дубликаты:
Установка размера кучи 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)

1 ответ

Решение

Поскольку я не хочу перезапускать задание, есть ли способ заставить JVM изменить его максимальный размер кучи после того, как JVM уже запущена, например, используя jinfo -flag или что-то в этом роде? Это возможно?

Нет, это невозможно. Или, по крайней мере, не с какой-либо существующей Sun JVM на любой платформе.

Для получения дополнительной информации см. Ответы на связанные вопросы согласно комментариям выше.

Является ли это признаком ошибки Debian #532538?

Нет.

Другие вопросы по тегам