アプリケーションを 64 ビット アーキテクチャにビルドすることで、最大 2 GB よりもはるかに多くのメモリを割り当てることができます。これには、Visual Studio で新しいビルド構成を作成する必要があり、アプリケーションのビルドは 64 ビット バージョンの Windows でのみ実行されます。 . .NET では、アプリケーションにデフォルトの「Any CPU」ビルド オプションを使用すると、(64 ビット Windows マシンでも) ヒープから約 1.5 GB のメモリしか割り当てることができないことがわかりました。 「Any CPU」モードで構築されている場合は、32 ビット モードでのみ実行されます。しかし、x64 アーキテクチャにコンパイルすることで、アプリケーションの実行中にヒープからはるかに多くのメモリを割り当てることができます。アプリケーションの x64 ビルドを作成する方法を以下で説明します。
繰り返しになりますが、.NET プロジェクトで通常の (既定の) "Any CPU" ビルド オプションを使用すると、アプリケーションは常に 32 ビット モードで実行され、64 ビット Windows OS でも実行されます。したがって、アプリケーションの実行中に約 1.5 ~ 2 GB を超える RAM メモリを割り当てることはできません。.NET アプリケーションを真の 64 ビット モードで実行するには、ビルド構成マネージャーにアクセスして x64 アーキテクチャ用のビルド タイプを作成し、そのビルド タイプを使用して明示的に x64 用にプログラムを再コンパイルする必要があります。x64 ビルド モード オプションは、次の手順を使用して .NET ソリューション用に作成できます。
-
Visual Studio の [ソリューション エクスプローラー] ペインで、ソリューション アイコンを右クリックし、ポップアップ メニューから [構成マネージャー] オプションを選択します。これにより、.NET ソリューション ファイルのビルド [構成マネージャー] ダイアログ ウィンドウが開きます。
-
ビルドの [Configuration Manager] ダイアログの右側の上部で、下矢印をクリックし、[<new>] オプションを選択します。これにより、[新しいソリューション プラットフォーム] ダイアログが開きます。
-
[新しいソリューション プラットフォーム] ダイアログの [プラットフォーム] オプションで、ドロップダウン メニューから [x64] を選択します。次に [OK] ボタンをクリックすると、新しい x64 ビルド オプションが [構成マネージャー] ダイアログで使用できるようになります。
-
次に、[構成マネージャー] ダイアログで、[アクティブ ソリューション プラットフォーム] ドロップダウン メニューから [x64] を選択します。「閉じる」ボタンをクリックします。
-
Visual Studio の [ソリューション エクスプローラー] ペインで、CS プロジェクト アイコンを右クリックし、ポップアップ メニューから [プロパティ] オプションを選択します (このメニューの一番下にある最後のオプション)。これにより、CS プロジェクトのプロパティ ウィンドウが開きます。
-
CS プロジェクト プロパティ ウィンドウの左側で、[ビルド] タブをクリックして、コード プロジェクトのビルド プロパティを表示します。このウィンドウの上部で、「プラットフォーム」が「x64」になっていることに注意してください (デフォルトの「任意の CPU」オプションとは対照的に)。「プラットフォーム」ドロップダウンに「x64」が表示されない場合は、ここで選択する必要があります。
-
次に、コードをビルドするだけで、「bin」フォルダーに、アプリケーションの新しい 64 ビット ビルドを含む x64 フォルダーが作成されます。
アプリケーションの 64 ビット ビルドを 64 ビット Windows OS で使用すると、プログラムは最大 2GB をはるかに超えるメモリを割り当てることができます。おそらく最大 2^64 アドレス空間です (RAM とディスク領域が利用可能である場合、は、この回答を書いている時点での実際の制限要因です)。
アプリケーションでまだメモリが不足している場合は、Windows メモリ ページ ファイルのサイズを増やすこともできます。Windows では、ページ ファイルを使用すると、RAM メモリ領域が不足した場合に、オペレーティング システムがメモリを RAM からディスクに移動できます。ただし、RAM メモリのセクションをディスクとの間で移動するには大きな時間がかかるため、アプリケーションのパフォーマンスに大きな影響を与える可能性があります。パフォーマンスに関係なく、ページ サイズを大きくすることで、(理論的には) Windows マシンの C: ドライブに利用可能な空き領域と同じ大きさのページ ファイルを作成できます。その場合、アプリケーションは、プログラムの実行中に、たとえば最大 4 TB のメモリ (またはページ ファイル サイズが設定されているメモリの量) を割り当てることができます。Windows マシンのページ ファイル設定を変更するには、
-
[この PC] を右クリックし、ポップアップ メニューの [プロパティ] オプションを選択して、[システムのプロパティ] ダイアログを開きます。これは、Windows の新しいバージョン (Windows 10、Win 2012 Server など) でも、[スタート] > [コントロール パネル] > [システムとセキュリティ] > [システム] に移動して実行できます。
-
[システム] ダイアログの左側で、[システムの詳細プロパティ] オプションをクリックします。これにより、Windows の従来の [システム プロパティ] ダイアログの [詳細] タブが表示されます。
-
[システムのプロパティ] ダイアログの [詳細設定] タブで、[パフォーマンス] ボックスの [設定] ボタンをクリックします。これにより、[パフォーマンス オプション] ダイアログが開きます。
-
[パフォーマンス オプション] ダイアログで、[詳細設定] タブをクリックして、Windows メモリ ページ ファイルの現在のサイズ設定を確認します。
-
ページ ファイルのサイズを大きくするには、[変更] ボタンをクリックすると、[仮想メモリ] ダイアログが開きます。
-
[仮想メモリ] ダイアログで [C:] ドライブを選択し、[カスタム サイズ] で [初期] と [最大] のサイズを設定します。C: ドライブの最大空き容量まで任意のサイズを使用できますが、この変更を行うと、ハード ドライブ上のページ ファイル用にその容量が確保されます。
-
次に、すべてのダイアログで [OK] をクリックして、新しい設定をコミットします。次に、コンピュータを再起動して、すべての変更が適切に完了し、新しいページ ファイル設定が動作していることを確認します。
とにかく、64 ビットの Windows マシンで実行している場合でも、.NET アプリケーションでこの 1.5 ~ 2 GB のメモリ制限の問題が発生する理由を人々が理解するのに役立つことを願っています。これは人々にとって非常に紛らわしい問題になる可能性があり、私の説明が理にかなっていることを願っています. 必要に応じて、この回答に関する質問を私にメッセージを送ってください。