.net中HashTable的最大容量

网上一般说是没有限制 直到 内存溢出
我反编译了Hashtable.cs

其一个构造函数如下

复制代码
public Hashtable(int capacity, float loadFactor)
        {
            if (capacity < 0)
            {
                throw new ArgumentOutOfRangeException("capacity", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));
            }
            if ((loadFactor < 0.1f) || (loadFactor > 1f))
            {
                throw new ArgumentOutOfRangeException("loadFactor", Environment.GetResourceString("ArgumentOutOfRange_HashtableLoadFactor", new object[] { 0.1, 1 }));
            }
            this.loadFactor = 0.72f * loadFactor;
            double num = ((float) capacity) / this.loadFactor;
            if (num > 2147483647)
            {
                throw new ArgumentException(Environment.GetResourceString("Arg_HTCapacityOverflow"));
            }
            int num2 = (num > 11) ? HashHelpers.GetPrime((int) num) : 11;
            this.buckets = new bucket[num2];
            this.loadsize = (int) (this.loadFactor * num2);
            this.isWriterInProgress = false;
        }
复制代码

 

 

可以看出capacity <0.72*2147483647*loadFactor (其中loadFactor 在0.1到1之间)
默认的loadFactor 为1f
故一般情况下 capacity < 1546188225.84

 

-- 
Be good @ Java & Dotnet.
Like OpenSource FrameWork,New Technique,especially Between different Platform.


“hill”编写:

> 最多能向Hashtable中插入多少个entry? 

 

http://www.microsoft.com/China/community/dgbrowser/zh-cn/default.mspx?&lang=zh&cr=CN&guid=&sloc=zh-cn&dg=microsoft.public.cn.dotnet.framework&p=1&tid=9874f917-9a87-4c48-b558-c2f33a26bec4

posted @   Suzuki.kakeru  阅读(338)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示