2. 追踪 ust 加持下的调用栈有了 ust 的加持,接下来就可以继续分析,使用 !heap -s 观察下 nt 堆的布局 。
0:000> !heap -sSEGMENT HEAP ERROR: failed to initialize the extentionNtGlobalFlag enables following debugging aids for new heaps: stack back tracesLFH Key : 0x0000004c4f657ebfTermination on corruption : ENABLED Heap Flags Reserv Commit Virt Free List UCR Virt Lock Fast (k) (k) (k) (k) length blocks cont. heap-------------------------------------------------------------------------------------0000000000060000 08000002 32576 17212 32576 430 161 6 1 0 LFH0000000000010000 08008000 64 8 64 5 1 1 0 00000000008810000 08001002 1088 500 1088 15 5 2 0 0 LFH...0000000029fb0000 08001002 88320 67408 88320 32559 343 47 189 1b7 LFH External fragmentation 48 % (343 free blocks)0000000029870000 08001002 512 8 512 3 1 1 0 0...-------------------------------------------------------------------------------------从卦中看,commit 最大的也就是 67408k = 67M, 这和 13G 差的不是一星半点,如果你了解 NtHeap 的布局 , 应该知道当 分配内存 > 512k 的时候,会进入到 HEAP 的 VirtualAllocdBlocks 双向链表中,言外之意就是当你觉得内存对不上的时候,就要观察下这个链表了,即上图中的 Virt blocks 列,可以看到 handle=0000000029fb0000 的 Virt blocks=189,接下来继续下钻 handle=0000000029fb0000 这个堆 。
0:000> !heap -h 0000000029fb0000SEGMENT HEAP ERROR: failed to initialize the extentionIndex Address Name Debugging options enabled 23: 29fb0000 Segment at 0000000029fb0000 to 000000002a7b0000 (007eb000 bytes committed) Segment at 0000000026070000 to 0000000026170000 (000ff000 bytes committed) Segment at 0000000027d10000 to 0000000027f10000 (001f7000 bytes committed) Segment at 00000000318a0000 to 0000000031ca0000 (00400000 bytes committed) Segment at 0000000044a00000 to 0000000045200000 (005f1000 bytes committed) Segment at 000000004ae90000 to 000000004be60000 (00efc000 bytes committed) Segment at 000000005b3b0000 to 000000005c380000 (00e2e000 bytes committed) Segment at 000000005d8c0000 to 000000005e890000 (00cf1000 bytes committed) Segment at 000000005c380000 to 000000005d350000 (002e7000 bytes committed) Flags: 08001002 ForceFlags: 00000000 Granularity: 16 bytes ... Virtual Alloc List: 29fb0118 Unable to read nt!_HEAP_VIRTUAL_ALLOC_ENTRY structure at 0000000043500000 Uncommitted ranges: 29fb00f8
推荐阅读
- Bing 广告平台迁移到 .net6
- 微信怎么删除好友,微信好友怎么快速删除(微信怎么一次性删除所有的好友)
- control 掌控 方法记录
- n维偏序 方法记录
- SpringBoot实战派读书笔记---响应式编程
- .NET 6 跨服务器联表查询
- 小米平板5pro可以插卡吗_小米平板5pro可以打电话吗
- 不安装运行时运行 .NET 程序 - NativeAOT
- ARC148游记
- 桃源记铜币怎么获取