メモリーを大量に消費する特定の最適化のローカル・テーブルに最適化プログラムが使用するメモリーの量を制限します。メモリー・サイズの制限はキロバイトで指定されます。

- -O2 最適化が有効な場合、maxmem=8192。
- -O3 以上の最適化が有効な場合、maxmem=-1。
- size の値を -1 にすると、制限について検査されることなく、最適化ごとに必要な量のメモリーが使用できるようになります。コンパイル中のソース・ファイル、ソース内のサブプログラムのサイズ、マシン構成、およびシステムのワークロードによっては、この量が使用可能なシステム・リソースを超えてしまう場合があります。
- -qmaxmem によって設定される制限は、コンパイラー全体ではなく、特定の最適化のためのメモリーの量です。コンパイル処理全体で必要となるテーブルは、この制限の影響を受けないため、この制限には含まれません。
- コンパイラーが制限以下のメモリーしか必要としない場合は、大きい制限を設定してもソース・ファイルのコンパイルに悪影響は及びません。
- 最適化の範囲を制限しても、結果として得られるプログラムが必ずしも遅くなるわけではありません。単に、パフォーマンスを向上させるすべての機会を検出する前にコンパイラーが終了する場合があるだけです。
- 制限を増加させても、結果として得られるプログラムが必ずしも高速になるわけではありません。単に、パフォーマンスを向上させる機会がある場合にコンパイラーがその機会を検出しやすくなるだけです。
コンパイル中のソース・ファイル、ソース内のサブプログラムのサイズ、マシン構成、およびシステムのワークロードによっては、制限を高く設定しすぎるとページ・スペースがすべて使用されてしまう場合があります。特に、-qmaxmem=-1 を指定すると、コンパイラーがストレージを無制限に使用できるようになるので、最悪の場合には、最も優れた装備を持つマシンのリソースでさえも使用し尽くしてしまうおそれがあります。
ローカル・テーブルに指定するメモリーが 16384 キロバイトになるように、
myprogram.C をコンパイルするには、以下のように入力します。
xlc++ myprogram.C -qmaxmem=16384
コンパイラーのコマンド行オプション
