2

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

在 2008 Windows Server 上有很多 web api 服务。我看到它们中的大多数都有相同的问题(?),这与保留内存一样大。以下是我使用 DebugDiag 获得的其他一项服务的信息。该服务使用 Linq2Sql,另一个 WebApi 服务,FileSystem 仅写入 LogFile,并发送电子邮件。

.NET GC 堆信息

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

总保留大小 17254 MB

虚拟内存摘要

最大空闲 VM 块大小 7,97 TBytes

空闲内存碎片 0,11%

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

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

承诺内存 384,59 MB(总内存的 0%)

总内存 8 TB

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

虚拟内存详细信息

虚拟分配 17,19 GB

加载的模块 179,97 MB

线程 17,27 MB

系统 4 KB

页堆 0 字节

本机堆 28,76 MB

虚拟分配摘要

保留内存 17 GB

承诺内存 185,82 MB

映射内存 15,5 MB

保留块数 94 个块

提交的块数 129 个块

映射块数 30 块

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

已提交:257 MB

工作 394 MB

私人 198 MB

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

我会很感激任何提示。

4

1 回答 1

1

保留内存是指进程使用的虚拟内存。您可以通过查看Virtual Bytes perfmon 计数器来检查这一点。我认为任务管理器仍然没有显示此信息的列。如果你使用像 Process Explorer 或 VMMap 这样的 Sysinternals 工具,你可以看到进程使用的虚拟字节,这应该接近 Debugdiag 显示的保留内存。

从 .NET Framework 4.5(我认为)开始,尤其是在 64 位操作系统上,CLR 保留了一大块内存(因为它是虚拟的而不是物理的)。例如,在 x64 模式下运行的 8 proc 机器上的 4.5 asp.net 应用程序 - 初始保留内存将高达18GB。这是完全可以预料的,根本不是问题。

于 2015-04-12T07:43:28.810 回答