我只是开始学习JVM TI
。
关于java命令:java -agentpath:../ tool.dll javaClass,我知道Agent_OnLoad()
中有一个dll
方法,也许它设置了一些事件callback method
。我知道jvm先执行Agent_OnLoad()
然后执行javaClass
.jcc也调用Agent_OnUnLoad()
。
然后问题来了,jvm如何在调用Agent_OnUnLoad() method
时知道。起初,我认为执行javaClass
后jvm将调用Agent_OnUnload()
,但是随后我放弃了这个想法,因为此时dll
正在做某事。将数据写入磁盘。
那么,jvm如何知道现在正是调用Agent_OnUnLoad()方法的合适时机?
最佳答案
没有定义用于卸载代理程序库的标准机制。当所有Shutdown挂钩完成后,Agent_OnUnload
仅在VM终止之前被调用。
关于java - 当执行有关“java -agentpath:c:/tool.dll javaClass的Agent_UnLoad()方法时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40086966/