我有一个24/7全天候运行的服务器端c#程序。几天之后,进程'分页池'(如Windows任务管理器中所示)在机器蓝屏达到13-14 Mb时最多可构建12 MB。主要的'内存使用'是180 MB,
我正在运行32位Windows Server 2003 SP2。
问题是;什么是'分页池'?我的C#程序可能导致什么?
由于
答案 0 :(得分:2)
Windows分页池是Windows内核预留的一部分内存,用于满足内核和设备驱动程序对内存的需求,这些内存可以分页到磁盘,而不是永远不会被分页到磁盘的内存。 (要深入了解,请阅读:http://blogs.technet.com/b/markrussinovich/archive/2009/03/26/3211216.aspx)
我看不到你的进程如何分配分页池,因为它是由内核管理的,但是,如果你得到一个蓝屏,可能会有一些连接。您是否正在使用注册表或内存映射文件?那些是Paged Pool资源的主要消费者。也许您在整个过程的生命周期中阅读了大量的注册表项,并且从未发布它们。但是,正如您从上面的文章中看到的那样,耗尽页面缓冲池不会出现蓝屏,但也许您的硬件设备会因耗尽而崩溃。
最终,您需要获得有关该问题的更多详细信息,因为此处可能会发生许多事情。记录停止错误代码,描述程序执行的操作等等,都将有助于排除故障。
答案 1 :(得分:1)
听起来你的程序正在获取内存而不是释放内存。
您是否正在运行无限循环,其中正在创建实现IDisposable
的对象?
通过直接调用Dispose
或将它们包装在using
块中,检查它们是否在处理循环中的某个位置。