Как отладить загрузку ресурсов JVM? - PullRequest
14 голосов
/ 15 апреля 2009

Для отладки загрузки классов в JVM мы можем использовать параметр -verbose:class, но ... Кто-нибудь знает, как отладить загрузку ресурсов (например, файлов свойств)?

Ответы [ 5 ]

3 голосов
/ 15 апреля 2009

Полагаю, вам нужно взглянуть на использование профилировщика. Или что-то, что использует интерфейс инструментовки.

Не уверен, насколько он стабилен, но есть BTrace , который является разновидностью DTrace для Java.

BTrace - безопасный динамический инструмент трассировки для платформы Java. BTrace можно использовать для динамического отслеживания работающей Java-программы. BTrace динамически инструктирует классы целевого приложения для внедрения кода трассировки («отслеживание байт-кода»). Код трассировки выражен на языке программирования Java.

Если вы делаете это на компьютере разработчика, и число событий (загружаемых ресурсов) не слишком частое, вы также можете просто установить точку останова в отладчике.

2 голосов
/ 20 июня 2011

Вы можете использовать InTrace для инструментов классов Classloader, которые выполняют загрузку.

Для Sun JVM я бы предложил использовать следующие шаблоны включения для отслеживания соответствующих классов:

  • ClassLoader
  • URLClassPath
  • Loader
2 голосов
/ 15 апреля 2009

Ресурсы предоставляются как URL с. Итак, я думаю сделать это в «чистой» Java: установить пользовательский ClassLoader, который копирует URL s в версию с пользовательским URLStreamHandler. Поместите ваш код мониторинга в обработчик потока и перешлите к оригиналу.

1 голос
/ 04 декабря 2013

Существует несколько методов для отладки проблем с загрузкой классов . Вот хорошие слайды от создателей JRebel , обобщающие эти приемы: Вы действительно получаете загрузчики классов?

1 голос
/ 15 апреля 2009

В среде Linux вы можете попробовать:

lsof -p <jvm pid>

Появится список с дескрипторами, используемыми программой, связанной с указанным pid.

Подробнее

...