我知道碎片通常发生在垃圾收集器收集的对象被标记为“空闲”块,但占据下一个地址空间的对象被固定时。我可以获取空闲对象的列表,但似乎无法找出旁边固定的对象。
我转储该对象,找到它的大小,然后将其大小添加到原始对象地址以获取下一个对象,如下所示:
0:000> !do 0a2467c8 可用对象大小 438312(0x6b028)字节
0:000> !do 0a2467c8+438312 无效对象
我无法让下一个固定对象显示出来。它总是无效的。我在这里做错了什么?
答案1
WinDbg 并不总是按计划运行。查看 Mark Russinovich 的最新实用程序。
ProcDump v1.0,一个值得一提的 1.0 版本。 http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx
ProcDump 是一个命令行实用程序,其主要目的是监控应用程序的 CPU 峰值并在峰值期间生成崩溃转储,管理员或开发人员可以使用这些转储来确定峰值的原因。ProcDump 还包括挂起窗口监控(使用与 Windows 和任务管理器相同的窗口挂起定义)和未处理的异常监控。它还可以用作可以嵌入到其他脚本中的通用进程转储实用程序。