1. ホーム
  2. c#

[解決済み] .NET Out Of Memory Exception - 1.3GB使用したが16GBインストールされている

2023-01-02 07:14:41

質問

C# アプリケーションで、アプリケーションのメモリ使用量が約 1.3GB を超えると、Out Of Memory 例外を受け取ることになります。

私は、3GB のメモリを搭載した 32 ビット マシンでこれと同じ問題を抱えており、当時はそれが理にかなっていました。しかし今、私はハードウェアを 64 ビット マシンにアップグレードし、ハイエンドのマザーボードとハイエンドの RAM を使用して 16GB のメモリを搭載しましたが、メモリ不足の例外はまだ 1.3GB 後に発生します!

2GB を超える単一オブジェクトはなく、1.3 はとにかく 2GB 未満なので、単一オブジェクトの MS 組み込みの 2GB 制限が問題である可能性はないことは知っています。

アプリが特定のメモリ使用量のしきい値に達したときに、Windows のキルスイッチのようなものがあるように思えます。それから、これを構成する方法があるはずです。おそらくレジストリにあるのでしょうか?

どんな助けでも、大いに感謝します!

どのように解決するのですか?

以下のように コンパイル を同じターゲットアーキテクチャにコンパイルするまで違いはありません。I と思う に向けてコンパイルしているとします。 32 ビットアーキテクチャでコンパイルしているとします。

特筆すべきは OutOfMemoryException を取得した場合にも上げることができます。 2GB で一つのコレクションが割り当てるメモリの CLR (例えば List<T> のように) 両アーキテクチャ上で 3264 のビットになります。

にメモリの良さを享受できるようにするため 64 ビットアーキテクチャでは コンパイル をターゲットにしたコードを 64 ビットアーキテクチャをターゲットとしたコードをコンパイルします。その後、当然ながら、あなたのバイナリが実行されます だけ 64 ビットで動作しますが、RAM で利用可能な領域が増える可能性があるため、その恩恵を受けることができます。