言語

JniEnvironment.References.CreatedReference(JniObjectReference) メソッド

定義

JNI リファレンスを作成するためのアカウント。

public static void CreatedReference(Java.Interop.JniObjectReference value);
static member CreatedReference : Java.Interop.JniObjectReference -> unit

パラメーター

value
JniObjectReference

作成された JNI 参照を含む JniObjectReference 値。

例外

value は JNI ローカル参照ではありません。

注釈

LocalReferenceCount プロパティは、Javaする JNI ローカル参照の数のアドバイザリ値を提供します。相互運用機能が作成されました。 GlobalReferenceCount プロパティは、Javaする JNI グローバル参照の数のアドバイザリ値を提供します。相互運用機能が作成されました。 WeakGlobalReferenceCount プロパティには、Javaする JNI 弱いグローバル参照の数のアドバイザリ値が含まれています。相互運用機能が作成されました。 これらのカウントは、 NewLocalRef()NewGlobalRef()など、JNI 参照が作成されるたびにインクリメントされます。このカウントは、JNI ローカル参照が破棄されるたびにデクリメントされます (例: Java.Interop.JniObjectReference.Disposeから)。

この会計は、Javaするワールド ビューを前提としています。相互運用機能は、JNI ローカル参照を作成できる場所に介入できます。 JNI ローカル参照をJavaなしで作成できるシナリオもあるため、これは当てはまるわけではありません。そのことを知っている相互運用。 このような注目すべき例の 1 つは、プラットフォーム呼び出しを使用して、JNI ローカル参照 (IntPtr) を返すネイティブ Java_ C 関数を呼び出す場合です。 このような追跡不可能な JNI ローカル参照が作成されると、追跡対象の JNI ローカル参照数が負になると、 Java.Interop.JniRuntime.JniObjectReferenceManager.DeleteLocalReference 内で将来アサーションが失敗する可能性があります。

Javaに通知するには、CreatedLocalReferenceを使用します。JNI ローカル参照アカウンティングで将来のアサーションが生成されないように、JNI ローカル参照が外部で作成された相互運用。

適用対象