.NETのオブジェクトの最大サイズが2 GBであることがわかりました(http://blogs.msdn.com/joshwil/archive/2005/08/10/450202.aspx)。.NET最大メモリx64アセンブリでも2GBを使用
256MBのメモリを占有しているオブジェクトがある場合は参照型なので、すべてのオブジェクトが一緒に2GB以上のメモリを占有する256 MBのオブジェクトの配列を持つことができます参照配列のサイズが2 GB未満にとどまっていれば長いですか?
.NETのオブジェクトの最大サイズが2 GBであることがわかりました(http://blogs.msdn.com/joshwil/archive/2005/08/10/450202.aspx)。.NET最大メモリx64アセンブリでも2GBを使用
256MBのメモリを占有しているオブジェクトがある場合は参照型なので、すべてのオブジェクトが一緒に2GB以上のメモリを占有する256 MBのオブジェクトの配列を持つことができます参照配列のサイズが2 GB未満にとどまっていれば長いですか?
はい、あなたの前提は正しいです。
2GBの制限は、各オブジェクトに個別に適用されます。すべてのオブジェクトに使用される合計メモリは2GBを超えることができます。
(32ビットマシンで2GBのスペアメモリが見つかる可能性はありますが、64ビットでは問題ありません)
".NET 4以前では、64ビットプロセスでもオブジェクトのサイズが2GBを超えることはありませんでしたが、大きな配列を使用する特定のワークロードでは、このサイズ制限が制約される可能性があります。 NET 4.5では、配列が2GBより大きくなるなど、64ビットプロセスで配列の制限を解除することができます。つまり、Int32.MaxValue Int32sの配列を割り当てることができます(このような配列は8GBを消費します)。 .NETのラージオブジェクトは、LOH(Large Object Heap)と同時には認識されない特別なヒープ上に割り当てられ、.NET 4.5ヒープ内の空きメモリを管理するためのより良いアルゴリズムの使用を含む、LOHに対する大幅なパフォーマンス改善も見られました。
http://msdn.microsoft.com/en-us/library/hh285054(v=VS.110).aspx
興味深い質問。私は64ビットマシンにこの制限があることは知らなかった。それは、私は1つのオブジェクトで2GBを保持するアプリのための多くのシナリオを考えることができないと言いました! – RichardOD
私は同意すると、単一のオブジェクトに2GB以上必要なシナリオはあまりありません。ゲームサーバーまたはデータベースサーバーは、実際には念頭に置く唯一のものです。 – Nate