【发布时间】:2013-04-07 22:17:43
【问题描述】:
给定两台电脑
- Core i5 第三代 4GB RAM(戴尔 Optiflex 7010)
- Core i7 第二代 16GB RAM(三星 700G7C)
更新 1 - 有趣的是,将 T 的属性数量减少两倍并没有改变,集合中发生 OOM 的 T 数量保持不变......
取平均低频,我只是手头没有。
谁能向我解释一下,为什么第一台 PC 上运行良好的代码在第二台 PC 上 100% 失败并出现 OutOfMemoryException?考虑到第二台电脑的成本要高出 3 倍,这真的很烦人。
我不能在这里发布整个代码,但它真的很简单 - 一个 List 填充有 T,其中 T 是一个具有 5 个 Integer 属性的 CLR 对象。第一台 PC 处理 2500 万个对象没问题(这就是我所看到的,它可能可以处理更多),而第二台 PC 大约死了。 1650 万条记录。我知道单个对象内存限制,但它真正让我明白的是它如何在两台相当现代的 PC 之间偏离这么多(50%++)?
【问题讨论】:
-
相同版本的 Windows(32 位/64 位)?虚拟内存大小呢?页面文件的大小比 RAM 的大小更重要。
-
一个运行 64 位,另一个运行 32 位通常是罪魁祸首。
-
Win7 64bit with latests updates,我没有检查虚拟内存大小,我该怎么做?
-
@Peter,我有 90% 的把握两者都在 64 位平台上运行,肯定是第二台 PC,但它表现出更差的性能。
标签: .net memory memory-management