大きなオブジェクトにはIDisposalパターンを使用することをお勧めしますが、オブジェクトが「大きい」と見なされる制限を決定する信頼できる方法がないように見えるのはなぜでしょうか?
内部的には、LOH で割り当てられるオブジェクトの下限というような区別が存在します。それが 85k として公に伝えられるときはいつでも、同時に 1 つはその数に依存することを妨げられます。
特に、多くの「より大きな」配列を処理するアプリケーションの場合、適切なメモリ管理を実装し、LOH の断片化を防ぐために、その制限が必然的に必要になります。一方、「より小さい」配列の場合、IDisposal はメモリ消費の観点からは意味がありません。ここでは、圧縮 GC の方がはるかに優れています。
なんでそんなことないの
GC.GetLOHLimit()
またはさらに良い:
bool GC.ArrayTargetForManualDisposal(Type type, int length);
編集: IDisposable パターンは、特別なオブジェクト (「大きな」オブジェクトまたは管理されていないオブジェクト) を適切に処理するための推奨事項にすぎません。私の質問は、ランタイムによるこれらのオブジェクトの特別な処理があると仮定していません。むしろ、オブジェクトが特別なメモリ管理に従うべきかどうかを知るために、パターンの実装者 (他の人もそうかもしれません) にランタイム サポートを求めます。