SDK 用の何百ものクラスを含む C# アプリケーションを作成しています。そのクラスのマネージド オブジェクトを C# ディクショナリに格納する必要があります。しかし、ディクショナリがどれだけのオブジェクトを保持できるかわかりませんか?つまり、整数キーが関連付けられたすべてのオブジェクトに対する適切な解決策になるのでしょうか? 別の方法がある場合は、それらのアイデアを歓迎します。
2 に答える
キーが整数の場合、キーの合計数が の値の合計数と等しいことInt32
、および.NET プロセスによって消費されるメモリの制限によって制限されます。もちろん、システムの残りの部分によっては、その前に「容量」が不足する可能性があります。オブジェクトのサイズやアプリケーションの負荷などがわからないため、アプリケーションの実際のユースケースでこれらの制限が何であるかを正確にテストする必要があります.
十分なメモリがないことが心配な場合は、 SQLiteなどのローカル ストレージを強く検討する必要があります。
64 ビット プラットフォームで .NET 4.5 を実行していて<gcAllowVeryLargeObjects> 要素を使用している場合、Dictionaryクラスには 2^31 項目の上限があります。
を有効にしない場合gcAllowVeryLargeObjects
、および以前のバージョンの .NET では、ディクショナリに格納できるアイテムの数が多少少なくなります。キーと値の参照型を使用するInt32
と、Dictionary は、64 ビット プラットフォームで最大約 8,940 万項目、32 ビット プラットフォームで 6,170 万項目を保持できます。もちろん、辞書と値を保持するのに十分なメモリがあると仮定します。
http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=665で、辞書の制限に関する私の記事を参照してください。