私はちょうど
JVM TI
を学び始める javaコマンドについて:Javaの-agentpath:../ tool.dllのJavaClass、私はdll
でAgent_OnLoad()
方法があることを知って、多分それはいくつかのイベントcallback method
を設定する。そして、私はJVMがjavaClass
を実行しAgent_OnLoad()
が最初に実行し、知っている.ANDAgent_OnUnLoad()
も、JVMによって呼び出される。時にJavaの-agentpath」についてAgent_UnLoad()メソッドを実行します。c:/tool.dllのJavaClass
その後、問題は、どのようにjvmがコール時に知っているAgent_OnUnLoad() method
です。最初はjavaClass
が実行された後、jvmはAgent_OnUnload()
を呼び出しますが、この時点では、この時点ではdll
がsthを実行中であるため、この考えを破棄していると思います。ディスクにデータを書き込む。 JVMが、Agent_OnUnLoad()メソッドを呼び出すための適切な時期であるノウハウ
ので?
Agent_OnUnload
が呼び出され、jvmがまだ実行されているcondition
が発生しました。例えば、私はATest.java、BTest.java ... ZTest.javaと* execute order *をおそらくAgent_Onload
* ATest.java BTest.java * ...Agent_OnUnload
... * ZTest.java *と言います*** Agent_OnUnloadが呼び出され、jvmがランする*** –@cainiaofeiこれは、いくつかのクラスが 'System.exit()'または 'Runtime.getRuntime()。halt()'を呼び出したことを意味します。 – apangin