我只是开始学习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/

10-11 08:28