我正在群集上运行我的代码,并且看到一个问题,我无法在本地复制,并且看不到原因。OutOfMemoryException/ERROR_COMMITMENT_LIMIT在系统中有很多空闲内存
因此,程序开始虚假地抛出OutOfMemoryException在整个代码中随机的地方。此外,看起来这可能与Windows本身已经损坏的东西有关 - 其中一个异常表现为Assembly.Load操作的HRESULT,HRESULT为0x800705AF,解码时表示错误1455 ERROR_COMMITMENT_LIMIT(交换文件已耗尽)。
该程序实际上消耗了非常少量的内存,它是32位,运行在.NET 4.0.30319下,服务器是Windows Server 2008,具有12个内核,24Gb RAM(几乎全部空闲)以及交换分区上几十GB的可用硬盘空间。
我该如何调试这个错误的原因呢?使用哪些诊断工具?
你的交换文件是固定大小还是自动的? – Erik 2011-03-24 13:04:19
如果你是32位的,你只有2(有时是3)GB的进程地址空间。无论服务器有多少实际内存 - 如果您分配了2GB的地址空间,则实际上内存不足。 – 2011-03-24 13:58:43
@Damien - 我知道 - 但程序实际上消耗低于一百兆字节。 – jkff 2011-03-24 14:54:21