2016-10-17 6 views
1

私はちょうどJVM TIを学び始める javaコマンドについて:Javaの-agentpath:../ tool.dllのJavaClass、私はdllAgent_OnLoad()方法があることを知って、多分それはいくつかのイベントcallback methodを設定する。そして、私はJVMがjavaClassを実行しAgent_OnLoad()が最初に実行し、知っている.AND Agent_OnUnLoad()も、JVMによって呼び出される。時にJavaの-agentpath」についてAgent_UnLoad()メソッドを実行します。c:/tool.dllのJavaClass


その後、問題は、どのようにjvmがコール時に知っているAgent_OnUnLoad() methodです。最初はjavaClassが実行された後、jvmはAgent_OnUnload()を呼び出しますが、この時点では、この時点ではdllがsthを実行中であるため、この考えを破棄していると思います。ディスクにデータを書き込む。 JVMが、Agent_OnUnLoad()メソッドを呼び出すための適切な時期であるノウハウ


ので

答えて

0

エージェントライブラリをアンロードするための標準メカニズムはありません。 Agent_OnUnloadは、すべてのシャットダウンフックが完了したときに、VM終了の前にのみ呼び出されます。

+0

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がランする*** –

+0

@cainiaofeiこれは、いくつかのクラスが 'System.exit()'または 'Runtime.getRuntime()。halt()'を呼び出したことを意味します。 – apangin

関連する問題