#java #jvm #out-of-memory
Вопрос:
Есть ли способ создать дамп кучи, когда потребление памяти JVM превышает заданный порог в МБ?
Можем ли мы как-то достичь этого, добавив дополнительные флаги в команду java или используя какую-либо внешнюю библиотеку для запуска вместе с процессом java, или, может быть, нам нужно написать какой-то код, который будет выполнять такое действие?
Комментарии:
1. Конечно, существуют способы, например, работающих под управлением ОС процесс, который проверяет потребление памяти и вызывает дамп (посмотреть на инструменты командной строки, доступных для вашей JVM, такие как
jstat
,jmap
,jcmd
и т. д.). Другим вариантом было бы использовать JMX для подключения от удаленных приложений или даже использовать локальный поток, который периодически проверяет памяти (например, с использованием методов, вRuntime
) и вызывает дамп кучи с помощьюHotSpotDiagnostic
класса (если таковые имеются в вашей JVM).