Java Native Interfaceを使用してJVMを呼び出すプログラムがあります。プログラムはサーバーです。それは、複数の要求を処理し、長期間オンラインに留まる必要があります。ローカル参照は `DetachCurrentThread`によってクリアされますか?
ローカル参照によるメモリリークを回避するため、シングルスレッド実装では、各要求を処理する前にPushLocalFrame
と呼び出すことができ、ローカル参照がクリアされるように各要求を処理した後にPopLocalFrame
を呼び出すことができました。
ここでは、複数のリクエストを同時に処理したいと考えています。各リクエストを処理する前にAttachCurrentThread
に電話し、各リクエストを処理した後にDetachCurrentThread
に電話する予定です。リクエストごとに異なるJNIEnv
を使用します。
私の質問は:PushLocalFrame
/PopLocalFrame
の各リクエストの処理前後に電話する必要がありますか、ローカル参照はすでにDetachCurrentThread
でクリアされていますか?私はこれに関する文書を見つけることができません。