この記事では、アプリケーションが頻繁にメモリを割り当てるときに発生するエラーの回避策について説明します。
適用対象: Windows 10、Windows 11
元の KB 番号: 4055223
現象
メモリを頻繁に割り当てるアプリケーションでは、ランダムな "メモリ不足" エラーが発生する可能性があります。 このようなエラーにより、影響を受けるアプリケーションで他のエラーや予期しない動作が発生する可能性があります。
原因
メモリ割り当てエラーは、システムの追加のメモリ要件をサポートするためにページ ファイルのサイズの拡大に関連する待機時間が原因で発生する可能性があります。 これらのエラーの原因として考えられるのは、ページ ファイル のサイズが "自動" として構成されている場合です。ページ ファイルの自動サイズは、小さなページ ファイルから始まり、必要に応じて自動的に大きくなります。
IO システムは、ファイル システム フィルター、ファイル システム、ボリューム フィルター、ストレージ フィルターなど、多くのコンポーネントで構成されています。 特定のシステム上の特定のコンポーネントによって、ページ ファイルの拡張にばらつきが生じる可能性があります。
回避策
この問題を回避するには、ページ ファイルのサイズを手動で構成します。 これを行うには、次の手順を実行します。
- Windows ロゴ キーと一時停止/中断キーを押して、 System プロパティを開きます。
- [Advanced システム設定]を選択し[Advanced]タブの [パフォーマンス セクションで Settings を選択します。
- [Advanced] タブを選択し、[仮想メモリ] セクションで [Change を選択します。
- [ すべてのドライブのページング ファイル サイズを自動的に管理する チェック ボックスをオフにします。
- カスタム サイズを選択し、ページング ファイルの [初期サイズ] と [最大サイズ] の値を設定します。 初期サイズは、システム内の RAM の量の 1.5 倍に設定することをお勧めします。
- OKを選択して設定を適用し、システムを再起動します。 "メモリ不足" エラー メッセージが引き続き表示される場合は、ページ ファイルの "初期サイズ" を増やします。
状態
Microsoft は、これが Windows 10 の問題であることを確認しました。
詳細
Microsoft Visual C++ コンパイラ (cl.exe) を使用しているときにこの問題が発生した場合、次のような断続的なビルド エラーが表示されることがあります。
- 致命的なエラー C1076: コンパイラの制限: 内部ヒープに達しました。/Zm を使用してより高い制限を指定する
- 致命的なエラー C1083: opentypefile: 'file': message
- 致命的なエラー C1090: PDB API 呼び出しに失敗しました。エラー コード 'code': 'message'
- コンパイラ エラー C3859: PCH の仮想メモリ範囲を超えました。'-ZmXXX' 以上のコマンド ライン オプションを使用して再コンパイルしてください
Visual C++ コンパイラ エラーとその回避方法の詳細については、「 Precompiled Header (PCH) の問題と推奨事項を参照してください。