-2

我正在为我的 SDK 制作一个包含数百个类的 C# 应用程序。我需要将这些类的托管对象存储在我的 C# 字典中。但是我不知道该字典可以容纳多少对象?这意味着对于所有具有与之关联的整数键的对象来说,这将是一个很好的可行解决方案吗?如果有其他方法,我欢迎这些想法。

4

2 回答 2

3

如果您的键是整数,则您会受到键的总数等于 的值的总数Int32以及.NET 进程消耗的内存限制的限制。当然,您可能会在此之前用完“容量”,具体取决于系统的其余部分。您必须准确测试这些限制在您的应用程序的实际用例中是什么,因为我们不知道您的对象的大小或您的应用程序的负载等。

如果您担心没有足够的内存,您应该强烈考虑本地存储,甚至是SQLite 之类的东西。

于 2013-06-07T13:40:59.743 回答
0

如果您在 64 位平台上运行 .NET 4.5 并使用<gcAllowVeryLargeObjects> 元素,则Dictionary类的上限为 2^31 个项目。

如果您不启用gcAllowVeryLargeObjects.NET 并且对于早期版本的 .NET,您可以在字典中存储的项目数会少一些。使用Int32键和值的引用类型,字典在 64 位平台上最多可以容纳大约 8940 万个项目,在 32 位平台上最多可以容纳 6170 万个项目。当然,假设您有足够的内存来保存字典和值。

请参阅我关于字典限制的文章http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=665

于 2013-06-07T14:02:20.707 回答