2011-04-07 3 views
2

Есть ли какой-либо инструмент, который подключается к jvm и показывает вам в реальном времени, как классы загружаются в этот jvm? Я предполагаю, что это создаст отличный плагин jvisualvm. Однако, если вы не найдете ничего подобного, это заставляет меня задаться вопросом, возможно ли это вообще? Я нашел несколько ссылок на некоторые, казалось бы, «неясные» инструменты, строго связанные с weblogic или webspere.Инструмент визуализации/анализа Java-классов для загрузки

Предполагая, что такой инструмент возможен, будет ли он строго связан с конкретным контейнером?

Спасибо!

ответ

1

Я понимаю, что это не работает с JVM, который уже работает, но как насчет java -verbose:class?

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

Update: Поскольку вы упомянули вы хотите увидеть загрузчик классов, в теории, я думаю, вы могли бы написать агент, который вызывает java.lang.instrument.Instrumentation.getAllLoadedClasses() в agentmain и печатает дерево классов и их загрузчиков классов. Проблема состоит в том, что ClassLoader не имеет «идентичности», поэтому вы можете получить красивую картинку, но вы по-прежнему не знаете, какой классный загрузчик принадлежит к развертыванию Java EE или пакету OSGi. Я думаю, именно поэтому есть не так много инструментов, которые это делают ...

+1

Ну, идея «визуальной загрузки класса» поднята именно из-за использования опции «-verbose», поскольку это не показывает вам загрузчик классов (из того, что я знаю), и вы действительно не получаете «большую картину» процесса загрузки классов, используя его. Во всяком случае, я думаю, что инструмент из вопроса был бы полезен для понимания и изучения порядка загрузки классов, а не для устранения неполадок. – teo

Смежные вопросы