Создайте дамп кучи, если использование памяти превышает заданный порог

#java #jvm #out-of-memory

Вопрос:

Есть ли способ создать дамп кучи, когда потребление памяти JVM превышает заданный порог в МБ?

Можем ли мы как-то достичь этого, добавив дополнительные флаги в команду java или используя какую-либо внешнюю библиотеку для запуска вместе с процессом java, или, может быть, нам нужно написать какой-то код, который будет выполнять такое действие?

Комментарии:

1. Конечно, существуют способы, например, работающих под управлением ОС процесс, который проверяет потребление памяти и вызывает дамп (посмотреть на инструменты командной строки, доступных для вашей JVM, такие как jstat , jmap , jcmd и т. д.). Другим вариантом было бы использовать JMX для подключения от удаленных приложений или даже использовать локальный поток, который периодически проверяет памяти (например, с использованием методов, в Runtime ) и вызывает дамп кучи с помощью HotSpotDiagnostic класса (если таковые имеются в вашей JVM).