C# 根据DebugDial(内存泄漏?)

C# 根据DebugDial(内存泄漏?),c#,performance,memory-management,memory-leaks,debugdiag,C#,Performance,Memory Management,Memory Leaks,Debugdiag,我们在生产过程中遇到了记忆问题 在2008 Windows服务器上有许多web api服务。我看到它们中的大多数都有相同的问题(?),这是一个相当大的数字作为保留内存。 下面是我使用DebugDiag获得的另一项服务的信息。 该服务使用另一个WebApi服务Linq2Sql,文件系统仅用于写入日志文件并发送电子邮件 .NET GC堆信息 GC堆大小84,77 MB 总提交大小153MB 总保留大小17254MB 虚拟内存摘要 最大可用VM块的大小7,97 TB 可用内存碎片0,11% 可用内存7

我们在生产过程中遇到了记忆问题

在2008 Windows服务器上有许多web api服务。我看到它们中的大多数都有相同的问题(?),这是一个相当大的数字作为保留内存。 下面是我使用DebugDiag获得的另一项服务的信息。 该服务使用另一个WebApi服务Linq2Sql,文件系统仅用于写入日志文件并发送电子邮件

.NET GC堆信息

GC堆大小84,77 MB
总提交大小153MB

总保留大小17254MB

虚拟内存摘要

最大可用VM块的大小7,97 TB

可用内存碎片0,11%

可用内存7,98 TB(占总内存的99,79%)

保留内存17,03 GB(占总内存的0,21%)

提交内存384,59 MB(占总内存的0%)

总内存8 TB

0x00000005`3f380000处的最大空闲块

虚拟内存详细信息

虚拟分配17,19 GB

加载模块179,97 MB

线程17,27兆字节

系统4千字节

页面堆积0字节

本机堆容量为28,76 MB

虚拟分配摘要

保留内存17 GB

提交内存185,82 MB

映射内存15,5 MB

保留块计数94个块

提交的块计数129个块

映射块计数30个块

资源监视器中我有以下信息:

提交:257 MB

工作394 MB

私人198MB

我应该忽略这些关于保留内存的信息,还是它告诉我一些非常重要的事情


如有任何提示,我将不胜感激。

保留内存指进程使用的虚拟内存。这是您可以通过查看虚拟字节性能计数器来检查的内容。我不认为TaskManager还有一个列显示这些信息。如果您使用诸如Process Explorer或VMMap之类的系统内部工具,您可以看到该进程使用的虚拟字节,这应该接近Debugdiag显示给您的保留内存

从.NETFramework4.5(我认为)开始,特别是在64位操作系统上,CLR保留了大量内存(因为它是虚拟的而不是物理的)。例如,对于在x64模式下运行的8进程箱上的4.5 asp.net应用程序,初始保留内存将高达18GB。这完全是意料之中的事,根本不是问题