ローカル参照は、メソッド内で、随時に手動で削除できます。 ローカル参照は、メソッドの LOCAL-STORAGE SECTION に定義したオブジェクト参照内にのみ 保管します。
次のデータ項目のいずれかで参照を保管する場合は、SET ステートメントを使用して、ローカル参照をグローバル参照に変換します。
そうしないと、エラーが発生します。メソッドが戻ったときにこれらのストレージ域は保持されるので、ローカル参照は無効になります。
ほとんどのケースにおいて、メソッドが戻るときに発生するローカル参照の自動解放に依存することができます。 ただし、一部のケースにおいては、JNI サービス DeleteLocalRef を使用して、メソッド内のローカル参照を明示的に解放する必要があります。以下に、明示的解放が適切な 2 つの 状態を示します。
例えば、COBOL メソッドにおいて、大規模な配列のオブジェクトをループし、エレメントをローカル参照として検索し、それぞれの反復ごとに 1 つのエレメントを操作します。それぞれの反復後に、配列エレメントへのローカル参照を解放することができます。
ローカル参照およびグローバル参照を管理するには、以下の呼び出し可能サービスを使用してください。
| サービス | 入力引数 | 戻り値 | 目的 |
|---|---|---|---|
| NewGlobalRef |
|
グローバル参照、またはシステムがメモリー不足のときは NULL | 入力オブジェクト参照が参照するオブジェクトに新規グローバル参照を作成する |
| DeleteGlobalRef |
|
なし | 入力オブジェクト参照が参照するオブジェクトへのグローバル参照を削除する |
| DeleteLocalRef |
|
なし | 入力オブジェクト参照が参照するオブジェクトへのローカル参照を削除する |
関連タスク
JNI サービスへのアクセス