如何防止Windows Server 2003修剪进程的工作集?

虽然我认为有两个不同的问题,但我认为它与 Windows Server 2003如何处理流程的工作集有关.

首先,在working set is trimmed,when their top-level window is minimized控制台会话上运行GUI应用程序.我知道使用GUI运行服务器进程是相当不寻常的,但这些是遗留应用程序执行重要的事情,我无法做任何事情.

其次,有一个长时间运行的数据库服务器,它在客户端连接时分配大量内存,但在另一个客户端连接之前不会触及该内存.与此同时,几天可能会过去,操作系统似乎认为这足以削减该流程的工作集.

在这两种情况下,都有足够的物理RAM可用(比应用程序需要多几GB),所以我希望Windows不要修剪它们的工作集.有配置的设置吗?这些都是第三方应用程序,因此更改内存分配或locking pages in memory不是可行的选项.

您发布的文章包含您要求的所有信息,但我知道这不是您想要听到的信息.

首先,我不知道你的应用程序是什么或者他们做了什么,或者为什么他们的工作集没有被修剪是如此重要,或者任何其他切向信息可能会帮助你解决问题的行为该过程的工作集有助于.听起来,你有一个设计糟糕的应用程序,你必须支持,并且你试图改变Windows的行为,以弥补设计不佳的应用程序.这是一个糟糕的情况,我很抱歉.

那就是说,我会尽力回答你的问题:

您正在描述Windows的设计基本,基本机制. GUI窗口上Minimize按钮的认行为是调用ShowWindow(hWnd,SW_MINIMIZE)来修改进程的工作集 – 故事结束.

这个设计糟糕的应用程序的编写者,你可能已经选择拦截用户单击最小化窗口按钮并调用ShowWindow(hWnd,SW_SHOWMINIMIZED)(不修剪WS)而不是ShowWindow时发生的WM_SYSCOMMAND消息(hWnd,SW_MINIMIZE),但他们没有.如果您无法联系此应用程序的开发人员并告诉他们再次尝试,这次使用实际的服务器应用程序,那么您就会遇到这种情况.

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...