我一直在处理内存泄漏问题,并使用 Poolmon、Xperf 和 Windows Performance Analyzer 研究罪魁祸首。SO 是 Windows Embedded 7 - 32 位:我认为标称非分页池限制非常低,可能为 256 MB(找不到实际限制,超过 200/250 MB 后,我的 C# 软件就出现问题了)。
我发现带有 Poolmon 标签“TD”的进程使用了大部分非分页池:我尝试在
- C:\Windows\System32\驱动程序
- C:\Windows\SysWow64\驱动程序
- 目录:
但没有成功。
在这项研究中,我遵循这个帖子。
这是 Poolmon 的图像:
使用 xperf生成pool.etl
文件后,我在 WPA 中打开它,并使用此未知标记定位非分页进程。我找到了这些进程,但根据 WPA,它们都是“未知”进程:
这里是链接到pool.etl。
为了进行此分析,我遵循这帖子和我使用了这个命令:
xperf -on PROC_THREAD+LOADER+POOL -stackwalk PoolAlloc+PoolFree+PoolAllocSession+PoolFreeSession -BufferSize 2048 -MaxFile 1024 -FileMode Circular && timeout -1 && xperf -d C:\pool.etl
有什么建议吗?
我应该从哪里开始,我能做什么?