20.2.2 インスタンスオブジェクトの生成と消滅
- 〈この項の構成〉
(1) インスタンスオブジェクトの生成
定義したインスタンスオブジェクトは型であり,生成することで使用できるようになります。インスタンスオブジェクトの生成とは,処理対象であるデータ値を格納するための記憶領域を確保することです。
インスタンスオブジェクトを生成するためには,NEWメソッドという特別なメソッドを使用します。NEWメソッドは,COBOL2002が提供する「BASEクラス」というクラスのファクトリオブジェクトのメソッドです。NEWメソッドおよびBASEクラスについては,マニュアル「COBOL2002 言語 標準仕様編」 「12. 標準クラス」を参照してください。なお,NEWメソッドを指定する場合は,'NEW'と大文字で指定する必要があります。
次に,インスタンスオブジェクトの生成例を示します。
-
ここでは,NEWメソッドを呼び起こして普通預金口座クラスのインスタンスオブジェクトを生成しています。インスタンスオブジェクトが生成されると,そのオブジェクト参照が返却項目に設定されます。
オブジェクト参照とは,生成されたオブジェクトを参照するデータ項目です。オブジェクト参照に関する言語仕様については,マニュアル「COBOL2002 言語 標準仕様編」 「5.2.2 オブジェクト参照」を参照してください。
-
ここでは,生成したインスタンスオブジェクトのオブジェクト参照を使用して,「預け入れ」メソッドを呼び起こしています。
(2) インスタンスオブジェクトの消滅
生成されたインスタンスオブジェクトが消滅させられるのは,実行単位の終了時か,COBOL2002が提供するガーベジコレクション(メモリ管理機能)によって不要と判断されたときです。
ガーベジコレクションとは,COBOL2002実行時ライブラリのメモリ管理機能です。ガーベジコレクションが実行されると,どこからも参照されていないインスタンスオブジェクト※が整理され,そのメモリ領域が再利用されます。この処理は,COBOL2002が自動的に実行し,ユーザが意識する必要はありません。
- 注※
-
オブジェクト参照データ項目は,SET文でNULLが設定されるか,別のオブジェクト参照データ項目を転記された場合,インスタンスオブジェクトを参照しなくなります。
ガーベジコレクションは,NEWメソッドが実行されたとき,次の条件を満たすと発生します。
-
インスタンスオブジェクトのメモリ使用の累積が,512キロバイトを超えたとき。
-
直前のガーベジコレクション完了時点からのメモリ追加量が,64キロバイトを超えたとき。
環境変数CBLGCSTARTおよび環境変数CBLGCINTERVALについては,「36.2 プログラムの実行環境の設定」を参照してください。