C#程序中的大型分页池......这是什么?

时间:2010-07-12 07:16:52

标签: c#

我有一个24/7全天候运行的服务器端c#程序。几天之后,进程'分页池'(如Windows任务管理器中所示)在机器蓝屏达到13-14 Mb时最多可构建12 MB。主要的'内存使用'是180 MB,

我正在运行32位Windows Server 2003 SP2。

问题是;什么是'分页池'?我的C#程序可能导致什么?

由于

2 个答案:

答案 0 :(得分:2)

Windows分页池是Windows内核预留的一部分内存,用于满足内核和设备驱动程序对内存的需求,这些内存可以分页到磁盘,而不是永远不会被分页到磁盘的内存。 (要深入了解,请阅读:http://blogs.technet.com/b/markrussinovich/archive/2009/03/26/3211216.aspx

我看不到你的进程如何分配分页池,因为它是由内核管理的,但是,如果你得到一个蓝屏,可能会有一些连接。您是否正在使用注册表或内存映射文件?那些是Paged Pool资源的主要消费者。也许您在整个过程的生命周期中阅读了大量的注册表项,并且从未发布它们。但是,正如您从上面的文章中看到的那样,耗尽页面缓冲池不会出现蓝屏,但也许您的硬件设备会因耗尽而崩溃。

最终,您需要获得有关该问题的更多详细信息,因为此处可能会发生许多事情。记录停止错误代码,描述程序执行的操作等等,都将有助于排除故障。

答案 1 :(得分:1)

听起来你的程序正在获取内存而不是释放内存。

您是否正在运行无限循环,其中正在创建实现IDisposable的对象?

通过直接调用Dispose或将它们包装在using块中,检查它们是否在处理循环中的某个位置。