2013-03-09 56 views
4

OutOfMemoryException我的应用程序本身运行的内存系统之前抛出的方式可用内存,如解释说:
MSDN Blogs - Out of memory? Easy ways to increase the memory available to your program.确定可以OutOfMemoryException异常之前使用抛出

当你运行你的C#应用​​程序即使您的计算机有大量内存,也可能会抛出OutOfMemoryException。 [...] 4 Gigs分为一半:用户应用程序获取下半部分,操作系统获取上半部分。 (这个界限可以改变:见下文)。

通过请求,我需要可视化我的应用程序和当前使用情况有多少内存可用。目前的使用情况可以使用Process.GetCurrentProcess();等进行检索,但是如何在运行时确定我的应用程序可用的内存?我无法弄清楚。

+1

尝试一下[CLR分析器(http://msdn.microsoft.com/en-us/library/ff650691.aspx) – 2013-03-09 01:10:50

+0

有通过默认情况下单个进程可以承担的最大内存量,我非常肯定它在Windows上的1GB。当然,你可以使用更多,但我不能帮助你如何做到这一点。 – Havenard 2013-03-09 01:12:23

+0

x86上的地址空间不是2GB – 2013-03-09 01:12:37

回答

1

您可以使用MemoryFailPoint来检查大的分配。这不完全是你要求的,但是如果你的失败是在一个特定的已知的大分配点上,这至少可以让你在发生分配失败的时候干净地处理分配失败。