相关疑难解决方法(0)

.Net中的非常大的集合会导致内存不足异常

我正在测试.Net中的集合有多大.从技术上讲,任何集合对象都可以增长到物理内存的大小.

然后,我测试的服务器,它具有16GB内存下面的代码,运行Windows 2003 Server和Visual Studio 2008,我测试两个F#和C#代码,看了看任务管理器运行时.我可以看到,在增加2GB内存之后,该程序因内存不足异常而崩溃.我确实在属性页面中将目标平台设置为x64.

open System.Collections.Generic

let d = new Dictionary<int, int>()

for i=1 to 1000000000 do
    d.Add(i,i)
Run Code Online (Sandbox Code Playgroud)

我对C5集合库进行了相同的测试.结果是C5中的字典可能耗尽整个内存.代码使用C5:

let d = C5.HashDictionary<int, int> ()
for i=1 to 1000000000 do
    d.Add(i,i)
Run Code Online (Sandbox Code Playgroud)

谁知道为什么?

.net c# f# gcallowverylargeobjects

32
推荐指数
3
解决办法
2万
查看次数

C#Strings(和其他.NET API)的大小限制为2GB吗?

今天我注意到C#的String类返回一个字符串的长度作为Int.由于Int总是32位,无论架构如何,这是否意味着字符串的长度只能是2GB或更小?

一个2GB的字符串将是非常不寻常的,并提出许多问题.但是,大多数.NET api似乎都使用'int'来传达长度和计数等值.这是否意味着我们永远受限于适合32位的集合大小?

似乎是.NET API的一个基本问题.我希望通过相当于'size_t'的方式返回count和length之类的东西.

.net c# string visual-studio

7
推荐指数
2
解决办法
2903
查看次数

标签 统计

.net ×2

c# ×2

f# ×1

gcallowverylargeobjects ×1

string ×1

visual-studio ×1