在服务器环境中的垃圾收集/内存限制方面,.Net 框架的行为是否可能有所不同?我在具有 32GB 物理 RAM 的 64 位服务器计算机上运行显式 x86 编译的应用程序,并且我的内存不足 (SystemOutOfMemoryException),即使除了该特定应用程序之外什么都没有运行,并且服务器/所有其他应用程序总共使用 520mb。无法在我自己的(客户端 win7)机器上重现该行为。
现在我知道该应用程序是内存密集型的,但为什么它会在服务器上而不是客户端上引起问题?
最佳答案
OutOfMemoryException
在 .NET 中很少(如果有的话)意味着机器字面上内存不足。 OutOfSomeNecessaryCriticalResource
是一个不太容易误导的名称。
OutOfMemoryException
实际上只是意味着无论发生什么问题,程序员都会选择在特定情况下抛出特定异常。例如,简单地对损坏的 JPEG(或 .Net 无法打开的任何文件格式)调用 Image.FromFile(...)
将导致 OutOfMemoryException
,不是因为 .NET 内存不足,而是因为这是为无效文件引发的已记录的异常类型(不要问我为什么,因为我不知道)。
要调试您的特定问题,您需要找出引发 OutOfMemoryException
的原因(以及何时何地)。 OutOfMemoryException
本身绝对没有任何意义。
关于服务器上出现 .Net OutOfMemory,但桌面上没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2789488/