【发布时间】:2010-11-10 13:41:23
【问题描述】:
CLR 的一个问题是它在缺少 RAM 的情况下是非常糟糕的行为(当托管进程的一些内存被分页时,这会导致整个系统完全冻结,即使 Ctrl-Alt-Del 屏幕也可以'无法访问。我认为原因是 GC 尝试构建可达对象图并尝试扫描进程的所有内存,从而导致大量的页入/页出操作。
这给我的 .NET 程序带来了问题,因为当输入数据很大时它会消耗大量 RAM。
我更愿意向用户显示“内存不足”消息,而不是完全挂起他的系统 ^_^
有什么方法可以实现吗?
【问题讨论】:
-
问题的根本原因可能是您的计算机的物理内存太少,无法有效执行所需的工作负载。最好的解决方案可能是增加物理内存或减少工作量。
-
同意。并且可能是一个严重碎片化的页面文件。
-
@Martin,我的电脑没问题。问题是输入数据可以是任意大小,因此任意数量的 RAM 都可能太小。
-
@Hans,猜错了。 GC/分页问题可以杀死任何 PC。
-
@fithu:那么也许您需要重写您的应用程序以不将所有输入数据读入 RAM。或者,如果您想阻止用户读取过多数据,请在读取数据之前给出错误消息,而不是尝试想出一个技巧来通知用户已读取过多数据。
标签: .net performance clr