我们在生产中遇到内存问题。
在2008 Windows Server上有许多web api服务。我看到他们中的大多数都有相同的问题(?),这是一个相当大的数字作为保留内存。 以下是我使用DebugDiag获得的其他服务的信息。 该服务使用Linq2Sql,另一个WebApi服务,FileSystem只写入LogFile,并发送电子邮件。
.NET GC堆信息
GC堆大小84,77 MBytes
总提交大小153 MB
总预留大小17254 MB
虚拟内存摘要
最大空闲VM块的大小7,97 TBytes
可用内存碎片0,11%
可用内存7,98 TB(占总内存的99,79%)
保留内存17,03 GBytes(占总内存的0.21%)
承诺内存384,59 MBytes(占总内存的0%)
总内存8 TB
最大的空闲区块位于0x00000005`3f380000
虚拟内存详情
虚拟分配17,19 GBytes
已加载模块179,97 MBytes
线程17,27 MBytes
系统4 KB
Page Heaps 0 Bytes
Native Heaps 28,76 MBytes
虚拟分配摘要
预留内存17 GBytes
承诺内存185,82 MBytes
映射内存15,5 MBytes
保留块计数94块
承诺的块数129块
映射块计数30块
在资源监控器中,我有以下信息:
委托:257 MB
工作394 MB
私人198 MB
我应该忽略有关保留内存的信息,还是告诉我一些非常重要的信息?
我会感激任何提示。
答案 0 :(得分:1)
保留内存是指进程使用的 VIRTUAL MEMORY 。您可以通过查看虚拟字节 perfmon计数器来查看此内容。我认为任务管理器仍然没有显示此信息的列。如果你使用像Process Explorer或VMMap这样的Sysinternals工具,你可以看到进程使用的虚拟字节,它应该接近Debugdiag作为RESERVED内存显示的内容。
启动.NET Framework 4.5(我认为),特别是在64位操作系统上,CLR保留了大量内存(因为它是虚拟的而非物理的)。对于例如4.5在x64模式下运行的8 proc box上的asp.net应用程序 - 初始保留内存将高达 18GB 。这完全是预期的,根本不是问题。