设置最大内存使用量C#

我有一个应用程序,必须使用我没有写的库,我没有权力改变它。 基本上存在内存泄漏,因此运行时间越长,泄漏的越多; 它基本上只是编写陈旧的页面文件,我没有权力删除。 内存泄漏实际上并不会导致程序崩溃,它只是简单地占用了所有内存。 当它使用所有系统的记忆时,操作系统将开始删除旧的页面文件,一切运行正常。

如果我在2GB系统上运行我的应用程序,它将使用2 GB并继续运行; 同样适用于16GB系统。

有没有办法设置应用程序可以使用的内存量?

这是Windows中的每个进程限制。 每个进程在32位计算机中获得~2GB的虚拟地址空间(这是Heap使用的)。 而且我担心你无能为力。

粗略地说,CLR能够在内存中容纳大约1.6GB的对象。 这应该足以满足大多数应用程序的需求。 如果没有,那么您需要处理您的应用程序。

在我的例子中,我遇到了类似的问题,然后使用SqlDataReader获取指定块大小的对象,处理它,计算它,从内存中清除它,然后获取另一个块。

还有一篇关于MSDN的详细文章 – 调查内存问题

希望这会有所帮助。

还要了解Process Governer: http : //lowleveldesign.wordpress.com/2013/11/21/set-process-memory-limit-with-process-governor/ 。 我编写了这个工具来测试我的应用程序中的内存泄漏。 如果超过它,则运行带有内存限制的进程将抛出OutOfMemory。