确定在抛出OutOfMemoryException之前可用的内存。

4

当你运行C#应用程序时,即使你的计算机有大量内存,你可能会遇到OutOfMemoryException异常抛出的情况。[...] 这4GB被分为两半:用户应用程序获得较低的一半,操作系统获得较高的一半。 (此边界可以更改:参见下文)。

根据要求,我需要可视化显示我的应用程序可用内存和当前使用情况。当前使用情况可以使用Process.GetCurrentProcess(); 等方法进行检索,但如何在运行时确定我的应用程序可用的内存呢?我实在想不出来。

MSDN Blogs - Out of memory? Easy ways to increase the memory available to your program.


1
尝试使用CLR Profiler - Jeremy Thompson
默认情况下,单个进程可以使用的最大内存量是有限制的,在Windows系统上,我相信这个限制是1GB。当然,你可以使用更多的内存,但我无法帮助你如何做到这一点。 - Havenard
在x86上,地址空间为2GB。 - Jeremy Thompson
无论如何,如果您的应用程序是32位的话,您的功能将受到相当大的限制。 - Havenard
发布你的代码,人们可以帮助你进行优化,如果你愿意的话。 - bjan
1个回答

1
你可以使用 MemoryFailPoint 在进行大型分配之前进行检查。虽然这不完全是你要求的,但如果你的故障发生在特定已知的大型分配点,则至少可以让你在出现分配故障时干净地处理该点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接