2017-12-15 9 views
-1

Java Native Interfaceを使用してJVMを呼び出すプログラムがあります。プログラムはサーバーです。それは、複数の要求を処理し、長期間オンラインに留まる必要があります。ローカル参照は `DetachCurrentThread`によってクリアされますか?

ローカル参照によるメモリリークを回避するため、シングルスレッド実装では、各要求を処理する前にPushLocalFrameと呼び出すことができ、ローカル参照がクリアされるように各要求を処理した後にPopLocalFrameを呼び出すことができました。

ここでは、複数のリクエストを同時に処理したいと考えています。各リクエストを処理する前にAttachCurrentThreadに電話し、各リクエストを処理した後にDetachCurrentThreadに電話する予定です。リクエストごとに異なるJNIEnvを使用します。

私の質問は:PushLocalFrame/PopLocalFrameの各リクエストの処理前後に電話する必要がありますか、ローカル参照はすでにDetachCurrentThreadでクリアされていますか?私はこれに関する文書を見つけることができません。

答えて

0

スレッドが切り離されたときにローカルフレームをポップする必要はありません。

あなたはAttachCurrentThread、スレッドが

を外れるまであなたは決して自動的に無料のローカル参照を実行しているコードで、ネイティブスレッドを添付した場合

出典:"JNI Tips - Local and Global References"

関連する問題