一時的に大量のメモリを消費するトランザクションが発生すると,通常のオンライン中には使用しないメモリをTP1/EEが大量に確保し続けるおそれがあります。そのため,このようなトランザクションが発生する場合は,大量処理用メモリ管理機能を使用します。
大量処理用メモリ管理機能を使用すると,該当するトランザクションの処理中に要求されたメモリを,初期確保する領域からではなく別のメモリ領域から割り当てます。大量処理用メモリ管理機能で割り当てられた領域は,該当するトランザクションが終了したあとで,OSに解放されます。
大量処理用メモリ管理機能で使用する領域を次の表に示します。
表2-26 大量処理用メモリ管理機能で使用する領域
項番 | 名称 | TP1/EEが管理するメモリリソースとの対応 | 定義 |
---|---|---|---|
1 | 大量処理用システム領域(MPSPOOL) |
| メモリ関連定義のmemory_mdpsys_area_sizeオペランド |
2 | 大量処理用ユーザ領域(MPUPOOL) | ユーザ用ワーク領域 | メモリ関連定義のmemory_mdpusr_area_sizeオペランド |
なお,大量処理用システム領域と大量処理用ユーザ領域は,どちらか一方だけを使用することもできます。
UAPでee_mem_mdpstart関数を発行すると,大量処理用メモリ管理機能の使用を開始します。また,該当するUAPがリターンしてトランザクションが終了するときに,大量処理用メモリ管理機能も終了し,使用中のセグメントが存在しない領域をOSに解放します。なお,使用中のセグメントが存在する場合は,使用中のセグメントがすべて返還されてから,領域ごとにOSに解放します。
複数のUAPで並行して大量処理用メモリ管理機能を使用する場合,大量処理用システム領域および大量処理用ユーザ領域はそれぞれのUAPで共有します。この場合,領域の解放は,並行して動作するUAPのうち,最後のUAPがリターンしてトランザクションが終了してから行われます。
大量処理用メモリ管理機能を使用する際の留意事項を次に示します。