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

在使用太多的虚拟内存之后,我的w3wp每60秒就会回收一次。

我运行IISdebugging诊断工具来捕获工作进程回收之前的内存转储; 最有趣的部分似乎是这样的:

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去了哪里。

我怎样才能find?

虚拟内存不是稀缺资源。 操作系统可以以几乎零成本创build大量的数据。 所以没有理由担心虚拟内存消耗。 你可以忽略它。 David Wang在博客文章中详细解释了这个特定的问题,如果你想要的话。

无论是基于虚拟内存消耗的回收需要改变而不是这样做,因为这是没有意义的。 如果你的内存映射一个4GB的文件,你将使用4GB的虚拟内存,即使真正的系统资源需要这样做是微不足道的。 (它不会显示为映射的内存,因为“映射内存”只计算出现故障的页面。)

基于虚拟内存的stream程回收是完全没有用的。