什么是WinDbg <unknown>内存?

gaw*_*cks 8 .net c# windbg winforms

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

!eeheap -gc输出

在此输入图像描述

!address -summary output

在此输入图像描述

Tho*_*ler 9

<unknown>由WinDbg 报告的内存是通过分配的内存VirtualAlloc().一些众所周知的来源是:

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