根据DebugDial的大量保留内存(内存泄漏?)

时间:2015-03-15 12:51:37

标签: c# performance memory-management memory-leaks debugdiag

我们在生产中遇到内存问题。

在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

我应该忽略有关保留内存的信息,还是告诉我一些非常重要的信息?

我会感激任何提示。

1 个答案:

答案 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 。这完全是预期的,根本不是问题。