Мне нужен способ запросить сброс кучи из приложения.Запросить кучу кучи ямы (свалку сердечника) из приложения
Обоснование: Когда я сталкиваюсь с определенным условием ошибки, я хотел бы сбросить кучу, чтобы я мог видеть, что держится в памяти.
Но я хотел бы автоматизировать это (например, когда я обнаружил, что произошло какое-то определенное условие, или когда сторожевой таймер больше не получает свои пинги. Когда какой-то тест выходит из строя). Таким образом, мне нужен способ сбросить кучу из самого приложения. Я не могу найти его с материалом MX beans. Хотя MX Beans может давать очень хорошие трассировки стека с информацией о мониторе и «доступным синхронизатором», информацией о взаимоблокировке и конфликте, я не могу найти способ запросить дамп кучи. Есть ли такой способ? Или некоторыми косвенными средствами, например, как это делают эти вещи JVisualVM? И можно сказать, что JVM сбрасывает ядро на OutOfMemoryExceptions ..?
Удивительный, именно то, что я искал, спасибо! Мне кажется удивительным, что я не нашел этот пост в блоге во время моего поиска в Интернете. Под sun.management, по-видимому, очень весело! – stolsvik
Еще один комментарий, хотя (вернемся к идеям, опубликованным в OP): Из вашей ссылки «Дамп-куча на OutOfMemoryError» я могу прочитать: «Встроенный кустарник может также использоваться для создания моментального снимка кучи на в других случаях. Это делается с помощью утилиты командной строки jmap или консоли управления консолью управления консолью. ". Эти инструменты затем, вероятно, используют запатентованный MXBean, на который ссылается вторая ссылка? Мне странно, что стандартные MX-beans не имеют этого метода dumpHeap (fileName, live). – stolsvik
Вид раздражающего, да, но я бы предположил, что это стандартная функциональность, формат дампа кучи тоже должен быть стандартизирован. По крайней мере, я полагаю, что это была бы большая работа, и это могло бы ограничить свободу поставщиков в их реализациях VM. – gustafc