什么是 WinDbg <unknown> 内存?

What is WinDbg <unknown> Memory?

我正在调试一个内存泄漏的 Winforms 应用程序。在客户提供的转储文件中,未知内存使用量与 .NET 堆大小之间存在较大差异。 (大约 1000mb 对 200mb)。那么除了 CLR 完成的 VirtualAllocs 之外,未知段中还有什么?

!eeheap -gc 输出

!地址-摘要输出

WinDbg 报告为 <unknown> 的内存是通过 VirtualAlloc() 分配的内存。一些常见的来源是:

  • .NET(因为它有自己的堆管理器)
  • 在您的代码中直接 VirtualAlloc() 调用
  • C++ HeapAlloc() 调用大于某个限制(如果我没记错的话是 512k)
  • MSXML
  • 位图(根据@Hans Passant的评论)