2016-10-17 4 views
1

Я просто начать обучение JVM TI О команде: Java. Java -agentpath: ../ tool.dll JavaClass, Я знаю, что есть Agent_OnLoad() метод в dll и, возможно, установить какое-то событие callback method. и я знаю, что JVM выполнить Agent_OnLoad() первым, а затем выполнить javaClass. Agent_OnUnLoad() также называют JVM.когда выполнение метода Agent_UnLoad() о «Java -agentpath: C: /tool.dll JavaClass


Тогда возникает проблема, как jvm знает, когда звонит Agent_OnUnLoad() method. Во-первых, я думаю, что после выполнения javaClass jvm вызовет Agent_OnUnload(), но затем я отброшу эту мысль, потому что в это время, возможно, dll делает это, например. запись данных на диск.


Так как JVM знаю, что это подходящее время, чтобы вызвать метод Agent_OnUnLoad()?

ответ

0

Для разгрузки библиотек агентов не существует стандартного механизма. Agent_OnUnload будет вызываться только до завершения VM, когда все завершающие крючки завершены.

+0

, но я встречаю condition, который вызывается Agent_OnUnload, и jvm все еще работает. Например, у меня есть ATest.java, BTest.java ... ZTest.java и * execute order * возможно Agent_Onload * ATest.java BTest.java * ... Agent_OnUnload ... * ZTest.java *, то есть , *** вызывается Agent_OnUnload и запускается jvm *** –

+0

@cainiaofei Это означает, что некоторый класс вызвал 'System.exit()' или 'Runtime.getRuntime(). halt()' – apangin

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

  • Нет связанных вопросов^_^