- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在尝试从 .dmp 文件中找到一些非托管内存分配时遇到了一些麻烦。
我一直在尝试遵循提示 - here但我有点撞墙
!address -summary 给我下面的内容,显示 MEM_COMMIT 为 1.030Gb,这是预期的(请忽略 TB 内存,这可能是因为它来自虚拟 Web 服务器)
!eeheap -gc 给我下面显示 .net 内存使用量为 150MB(如果我自己运行 !eeheap 我没有看到任何额外的堆,我仍然看到 8 个 GC 堆,总共 150MB)
这让我相信大部分内存使用来自非托管内存
我一直遵循的说明然后说使用 !heap -s 找到非托管内存的位置。当我这样做时,我会看到以下内容
现在我希望看到大量内存被堆使用,我可以进一步分析以尝试定位非托管内存,但我没有看到任何接近填充的堆显示 1GB 的已用内存
我确实注意到 !address -summary 在 PAGE_READWRITE 中显示 600MB,所以我尝试了 !address/f:PAGE_READWRITE 我希望这会给我一些其他的东西,但它给了我一个 PAGE_READWRITE 使用的内存列表,我不太确定如何进一步分析
基本上我想知道 1GB 和 150MB 的 .net 分配内存之间的内存差异在哪里被使用
任何帮助都会很棒
最佳答案
在“使用摘要”中,您可以看到
<unknown> 17 GB
Heap 235 MB
<unknown>
可以是 .NET 或由
VirtualAlloc()
直接分配的内存.恕我直言,有人使用
VirtualAlloc()
直接是相当罕见的。
Heap
是通过堆管理器分配的内存。所以,
!heap -s
不会显示超过 235 MB。
MEM_COMMIT
只是另一种内存状态,它可以处于任何使用状态。要找到 1 GB 的已提交内存,您需要总结您拥有的所有内容:
154 MB used by .NET GC Heaps
235 MB used by Heaps
234 MB used by Images
up to 50 MB in Stacks
... some smaller parts not really relevant
!eeheap
没有
-gc
参数,您会看到 .NET 使用了更多内存,因为它还有 LoaderHeaps、JIT Heaps、域堆等。
关于memory - WinDbg MEM_COMMIT 为 1GB,eeheap 显示为 150MB,找不到剩余内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30862007/
我认为我在这里缺少一些基础知识,因此希望这篇文章可以澄清这一点。 我进行了转储,正在查看托管堆,并且对专门查看每个堆中的对象感兴趣。这是调试器的输出: 0:000> !eeheap -gc Numbe
我正在查看 WinDbg 中的完整应用程序转储,并试图了解我的内存在哪里被消耗。 我已经分析了 !DumpHeap -stat 的输出并总结了这份报告中的总内存,得到大约 7 GB。相比之下,如果我运
我在尝试从 .dmp 文件中找到一些非托管内存分配时遇到了一些麻烦。 我一直在尝试遵循提示 - here但我有点撞墙 !address -summary 给我下面的内容,显示 MEM_COMMIT 为
我有一个 C# 应用程序,它的内存使用量会随着时间的推移而增加。我进行了定期用户模式转储,并在加载 sos 后运行 !EEHeap -gc 来监视托管堆大小。在 windbg/sos 中,我看到它从
我是一名优秀的程序员,十分优秀!