我们正在测试一个4进程的WCF IIS应用程序(x3版本),以了解其内存稳定性(泄漏),方法是每隔约1秒钟像负载均衡器一样对其进行ping。如果服务器上没有运行其他内容,则它可以正常运行超过12小时。
但是,如果我们故意减少可用总内存(固定页面,减少物理内存,启动其他应用程序)并将物理内存使用率推到97%并保持5分钟或更长时间,通常Windows会感知到这种情况并关闭其中一个进程。请注意,如果使用固定页面文件将总内存推到97%,它也会失败。
然而,使用RedGate工具分析幸存进程之一的内存占用情况如下:
该应用程序编译为.NET 4.0,gcServer设置为true。IIS网关检查设置为0%(minFreeMemoryPercentageToActivateService="0"),尽管在生产中我们可能会将其设置为2%。
服务器是2008 R2,物理内存约为4GB,固定页面为4GB,经过4.0和4.5.1测试(无关紧要)。
有一个类似问题的答案@atanamir声称:
“.NET将在物理内存不足时将其堆释放回操作系统。”
有人知道这个声明的任何参考吗?它可能是特定版本的吗?
参考资料:
但是,如果我们故意减少可用总内存(固定页面,减少物理内存,启动其他应用程序)并将物理内存使用率推到97%并保持5分钟或更长时间,通常Windows会感知到这种情况并关闭其中一个进程。请注意,如果使用固定页面文件将总内存推到97%,它也会失败。
然而,使用RedGate工具分析幸存进程之一的内存占用情况如下:
该应用程序编译为.NET 4.0,gcServer设置为true。IIS网关检查设置为0%(minFreeMemoryPercentageToActivateService="0"),尽管在生产中我们可能会将其设置为2%。
服务器是2008 R2,物理内存约为4GB,固定页面为4GB,经过4.0和4.5.1测试(无关紧要)。
有一个类似问题的答案@atanamir声称:
“.NET将在物理内存不足时将其堆释放回操作系统。”
有人知道这个声明的任何参考吗?它可能是特定版本的吗?
参考资料: