例如,如果我在“回收”设置中为应用程序池配置以下限制:
Virtual Memory: 512Mb
Private Memory: 128Mb
- 或 IIS 6 术语中的“已用内存”
该进程是否可以使用 90Mb 的物理内存,但请求使用 256Mb 的虚拟内存,从而不会触发回收?
答案1
是的 IIS 工作进程使用的虚拟内存多于物理内存是很常见的。要亲自查看,请下载一份进程探索器并查看其中一个 IIS 工作进程的进程内存。
以下面的屏幕截图为例,进程探索器在 IIS 6 服务器上,您可以看到该 IIS 工作进程使用了~195MB 的虚拟内存和~37MB 的物理内存(工作集)。
有关不同内存类型之间关系的解释,请参阅此 StackOVerflow 问题什么是私有字节、虚拟字节、工作集?
因此,根据您配置的限制,使用使用 90MB 物理空间和 256MB 虚拟空间的 IIS 工作进程不会触发应用程序池的回收。
答案2
您必须使用性能监视器了解特定进程的内存使用情况。你应该使用虚拟字节和工作集了解特定进程使用的内存。
现在,来回答你最初的问题。你正在尝试向应用程序池添加回收选项,我可以问一下为什么要在工作进程上实现回收吗?如果如果你担心进程使用的内存量,那么你应该解决内存问题并且不限制该过程。