一時オブジェクトの使用が終了したことを Java に伝える
Java™ コンストラクターを使用してオブジェクトを作成した場合、またはユーザーにオブジェクトを戻す Java メソッドを呼び出した場合、このオブジェクトは、Java のガーベッジ・コレクションがもうユーザーがそのオブジェクトを必要としていないと知ったときに破棄されるまでの間だけ、使用可能であることになります。 これは、ネイティブ・メソッド (java によって呼ばれる) が戻るときにネイティブ・メソッドのために発生しますが、そうでない場合は、オブジェクトを必要としなくなった Java に明示的に通知しない限り、決して発生しません。 これは、RPG ラッパー・プロシージャー freeLocalRef を呼び出すことによって行ないます。
CALLP freeLocalRef (JNIEnv_P : string);
図 1 に、freeLocalRef のサンプル・ソース・コードを示します。
図 1. freeLocalRef のソース・コード
/*------------------------------------------------------*/
/* freeLocalRef */
/*------------------------------------------------------*/
P freeLocalRef...
P B EXPORT
D freeLocalRef...
D PI
D env * VALUE
D localRef O CLASS(*JAVA
D : 'java.lang.Object')
D VALUE
/free
jniEnv_P = env;
DeleteLocalRef (env : localRef);
/end-free
P freeLocalRef...
P E
注: このラッパーを呼び出すには、JNI 環境ポインター (下記の JNI 環境ポインターの入手で説明)
が必要です。