Уведомление о сборке "мусора"?

Я хотел бы зарегистрировать обратный вызов в JVM, таким образом, я знаю, когда сборка "мусора" происходит. Там какой-либо путь состоит в том, чтобы сделать это?

Править: Я хочу сделать это так, я могу выйти из системы, когда сборка "мусора" происходит в моем журнале приложения, таким образом, я вижу, коррелирует ли это к проблемам, я вижу. Включение-Xloggc полезно, но это немного хитро для интеграции времен от журнала GC (которые используют секунды, с тех пор как приложение запускается) в мой журнал главного приложения.

Апрель 2012 РЕДАКТИРОВАНИЯ: С Java7u4 можно получить уведомления от GarbageCollectorMXBean (хороший пример).

35
задан Martin Serrano 7 August 2012 в 14:00
поделиться

5 ответов

Я думаю, что стандартный путь состоит в том, чтобы использовать Интерфейс Инструмента JVM (JVM TI) , чтобы записать, что агент с GC запускает обратный вызов и зарегистрировать время от него (см. GetTime). Обратить внимание, что событие Garbage Collection Start отправляется за полным GCs только.

Образец JVM агенты TI доступна в демонстрационном каталоге JDK 5.0 или загрузки JDK 6. Техническая статья Интерфейс Инструмента JVM (JVM TI): Как Работа Агентов VM является другим очень хорошим ресурсом. Также взглянуть на Создание Отладки и Профилирование Агента с JVMTI.

10
ответ дан 27 November 2019 в 07:18
поделиться

Посмотрите, как работает HTTP. Клиент (= браузер) не полагается на расширения, он хочет, чтобы сервер возвращал некоторые метаданные вместе с документом.

Метаданные можно добавить с помощью Response.AddHeader, и одна «строка метаданных» состоит из имени и значения.

Content-Type - это интересующее вас свойство, а значение - тип данных MIME (исследование: RFC1945 для заголовков HTTP, google для типа MIME).

Для порядковых aspx-страниц (html,....) свойство имеет значение «text/html» (не так уж тривиально, но для этого примера достаточно.). Если вернуть изображение JPG, оно может иметь имя «image.gif», но пока вы отправляете «image/jpeg» в Content-Type, оно обрабатывается как изображение JPG. Тип содержимого для pdf - «приложение/pdf».

Браузер будет действовать в соответствии с поведением по умолчанию, например, с плагином Adobe, он будет отображать PDF в своем окне, если у вас нет плагина для PDF, он должен загрузить файл и т.д.

Заголовок Content-Disposition говорит, что следует делать с данными. Если вы хотите, чтобы клиент явно «загрузил» некоторые HTML/PDF/и не отображал их по умолчанию, значение «attachment» - это то, что вы хотите. Он должен иметь другой параметр, (как предложил Джастин Ниесснер), который используется в случае чего-то вроде:

http ://server/download.aspx? file = 11 - > Content-Disposition: attachment; filename = file.jpg говорит, как файл должен быть по умолчанию назван.

-121--1613497-

Документы Microsoft - хороший старт

У Кэтлин Доллард также есть хорошие материалы

-121--900961-

Для вашей собственной программы нет стандартного способа получения информации от JVM о вывозе мусора. Любой такой API зависит от поставщика.

Почему объекта, которое вы сочли недостаточным?

1
ответ дан 27 November 2019 в 07:18
поделиться

Если вы рассматриваете это как диагностический инструмент, я рекомендую перенаправить свой журнал приложений в STDOUT, а затем перенаправлять как STDOUT, так и STDERR в файл. Это даст вам деталь журнала JVM, не заставляя вас изменить код приложений.

0
ответ дан 27 November 2019 в 07:18
поделиться

Похоже, что вы можете использовать MemoryPoolMXBean и установить порог использования коллекции на 1. Это должно дать вам уведомление в любой момент при запуске gc, а в памяти все еще есть хотя бы один байт используемой памяти.

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/MemoryPoolMXBean.html

Похоже, что это работает не со всеми сборщиками мусора.

3
ответ дан 27 November 2019 в 07:18
поделиться

Есть интересная статья на Javalobby , обсуждая один метод этого.

1
ответ дан 27 November 2019 в 07:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: