Я хотел бы зарегистрировать обратный вызов в JVM, таким образом, я знаю, когда сборка "мусора" происходит. Там какой-либо путь состоит в том, чтобы сделать это?
Править: Я хочу сделать это так, я могу выйти из системы, когда сборка "мусора" происходит в моем журнале приложения, таким образом, я вижу, коррелирует ли это к проблемам, я вижу. Включение-Xloggc полезно, но это немного хитро для интеграции времен от журнала GC (которые используют секунды, с тех пор как приложение запускается) в мой журнал главного приложения.
Апрель 2012 РЕДАКТИРОВАНИЯ: С Java7u4 можно получить уведомления от GarbageCollectorMXBean (хороший пример).
Я думаю, что стандартный путь состоит в том, чтобы использовать Интерфейс Инструмента JVM (JVM TI) , чтобы записать, что агент с GC запускает обратный вызов и зарегистрировать время от него (см. GetTime). Обратить внимание, что событие Garbage Collection Start отправляется за полным GCs только.
Образец JVM агенты TI доступна в демонстрационном каталоге JDK 5.0 или загрузки JDK 6. Техническая статья Интерфейс Инструмента JVM (JVM TI): Как Работа Агентов VM является другим очень хорошим ресурсом. Также взглянуть на Создание Отладки и Профилирование Агента с JVMTI.
Посмотрите, как работает 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 зависит от поставщика.
Почему объекта, которое вы сочли недостаточным?
Если вы рассматриваете это как диагностический инструмент, я рекомендую перенаправить свой журнал приложений в STDOUT, а затем перенаправлять как STDOUT, так и STDERR в файл. Это даст вам деталь журнала JVM, не заставляя вас изменить код приложений.
Похоже, что вы можете использовать MemoryPoolMXBean и установить порог использования коллекции на 1. Это должно дать вам уведомление в любой момент при запуске gc, а в памяти все еще есть хотя бы один байт используемой памяти.
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/MemoryPoolMXBean.html
Похоже, что это работает не со всеми сборщиками мусора.
Есть интересная статья на Javalobby , обсуждая один метод этого.