私の知る限り、CLR を使用して .Net アプリのヒープのサイズを制御する簡単な方法はありません。
上記のリンクは、半分しか答えていません。この同じ問題を調査したところ、最大ヒープ サイズを制御したい唯一の理由であるかのように、「ヒープは利用可能なすべてのメモリを使用するように成長します」という応答がありました。
(通常は Java) サーバー環境では、動作の悪いアプリが他のホストされたアプリを犠牲にしてメモリを占有することは望ましくありません。簡単な解決策は、アプリがヒープに使用できるメモリの量を制限することです。これは、Java の -Xmx 引数で実現されるため、アプリが計画された以上に使用しないことを保証できます (例: -Xmx256M)。初期化中にヒープにメモリを割り当てるとアプリの起動が遅くなる可能性があるため、Java は -Xms 引数を使用して、初期化中に大量のオブジェクト作成を行うアプリが、JVM が継続的にヒープのサイズを変更する代わりに、ヒープの大きなブロックで開始できるようにします。行きます。
.Net の CLR には、この機能がありません。.Net の CLR が仮想マシンではないためだと思われます。CLR はたまたま API であり (非常に包括的なものだと付け加えるかもしれません)、ネイティブ .dll へのアダプターとして機能します。これは、メモリ管理に関しては、実行可能ファイルに似たアプローチに相当します。
SharePoint の開発についてこの質問をしたところ、Web Apps と呼ばれる IIS モジュールを使用してヒープサイズを制御できる可能性があると聞きました。これにより、特定の Web アプリのメモリを制限するよう IIS に指示できます。これは、IIS が new()/malloc()/etc を置換/オーバーライドするルーチンをカスタマイズしているため、このタイプの制御をクライアント アプリに提供できるためではないでしょうか。つまり、C++ でカスタム メモリ マネージャーを作成し、.Net 用のインターフェイスを作成する場合を除き、スタンドアロンの .Net アプリは運が悪いということです。