这个 IIS 内存转储是什么意思?(保留内存)

这个 IIS 内存转储是什么意思?(保留内存)

我的 w3wp 使用过多虚拟内存后每 60 秒回收一次。

我跑了IIS 调试诊断工具在工作进程回收之前捕获内存转储;最有趣的部分似乎是这样的:

Virtual Allocation Summary

Reserved memory 4.88 GBytes  
Committed memory 328.27 MBytes  
Mapped memory 17.36 MBytes  
Reserved block count   524 blocks  
Committed block count   1082 blocks  
Mapped block count   43 blocks

因此,4.88 GB 的保留内存看起来确实很大。但 DotNetMemoryAnalysis 或常规内存压力分析器似乎都没有告诉我这 4.88 GB 去了哪里。

我如何才能知道?

答案1

虚拟内存并非稀缺资源。操作系统可以几乎零成本地创建大量虚拟内存。因此,无需担心虚拟内存消耗。您可以忽略它。David Wang 在博客文章如果你想了解细节。

无论回收是基于虚拟内存消耗的,都需要进行更改,不要这样做,因为这样做毫无意义。如果您对 4GB 文件进行内存映射,您将使用 4GB 的虚拟内存,即使执行此操作所需的实际系统资源微不足道。(并且它不会显示为映射内存,因为“映射内存”仅计算出现故障的页面。)

基于虚拟内存的进程回收是完全无用的。

相关内容