我知道.NET没有使用完整的物理内存。我遇到了System.OutOfMemoryException而物理内存使用率仅为79%。我运行我的系统,直到92%的物理内存使用量。
你可以在这里看到截图: http://a.imagehost.org/0655/CaptureOOM.gif alt text http://a.imagehost.org/0655/CaptureOOM.gif
如何告诉.NET使用更多内存?
我也想知道,这个例外是因为.NET没有足够的内存或.NET 有记忆但不是这个应用程序?
答案 0 :(得分:2)
OutOfMemoryException与物理内存无关。这是因为你没有足够大的连续虚拟内存块。如果用完文件句柄或其他一些有限的资源,.NET有时甚至会抛出OutOfMemoryException。
答案 1 :(得分:0)
实际上没有一个选项可以修改它由.NET环境控制的,并且有自己的垃圾收集来处理内存管理。
如果您有想要最终确定和处置的对象,可以使用
强制使用GCGC.Collect的(); GC.WaitForPendingFinalizers();
一些注释
使用与Main方法不同的方法分配对象。这是因为如果Main方法中的已分配对象然后在同一方法中调用GC.Collect,则该对象在技术上仍然与运行代码相关联,因此不符合收集条件。
GC.Collect方法的目的不是控制特定的对象破坏,而是允许强制所有未使用的对象的集合。因此,这是一项非常昂贵的操作,只应在您希望/需要强制进行全局收集的情况下使用。 对于要强制完成特定对象的情况,应实现Dispose模式。
希望这会有所帮助。
答案 2 :(得分:0)
您是在虚拟机中运行吗?是否分配了足够的虚拟内存空间?您要完成的分配有多大?
你真的需要做更多的取证调试,以确切地找出失败的原因和函数的参数。