欢迎来到天天文库
浏览记录
ID:42780485
大小:224.16 KB
页数:3页
时间:2019-09-22
《快速诊断内存泄漏》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、快速诊断内存泄漏1.启动"性能监视器〃(pcrfmon);2•添加三个特征计数器:父类别计数器名称MemoryPoolXonpagedBytesMemoryPoolPagedBytesPagingFile%Usage由于内存泄漏一•般都要数小时才能检测到并确诊,所以这个方法虽叫〃快速〃,实际上还是比较缓慢的,但是最简易的方式了。这里,我建议大家将性能计数器的属性屮的采样间隔和持续时间都设得久一些,这样采样点会较少,而两个采样点之间的数据变化也会比较明显,容易直观比较。开始采样后,您需要启动您认为可疑的应用程序,或者干脆就在您认为会有内存泄漏的现有系统环
2、境卜-直接开始监测。如果您是在添加计数器后才开始启动一些可疑程序的,那么您会看到一个前期过程内,计数器的值会变化较人,但是,过段时间就会趋于相对稳定。那么在稳定后的数据规律性变化则起到关键的判别作用。值得注意的是,在检测期间,就不要再使用系统了,也不要对应用产生干扰,以免造成计数器的无关变化。这里我给出一张对照表,可以帮助您通过稳定后的指标变化來判断是否有内存泄漏:泄漏来源计数器指标变化规律说明用户态PoolPagedBytes和pagefileUsage会随时间不断上升用户态程序内存泄漏总是发生在换页内存池中内核态PoolNonpagedBytes随
3、时间不断上升(PoolPagedBytes也能随时间上升)内核态内存泄漏通常消耗非换页内存池注意,万一在计数点遇到应用程序缓存数据,则会造成计数器计数值的〃异常〃,这对于我们的内存泄漏判断而言将是种误报。需根据后续的情况走势来看。这里,我进行了30多分钟的检测,我的采样间隔是10分钟一次,那么下图屮将有三次采样的数据。可以看出,这是相对稳定的状态,没有内存泄漏。(建议您至少监测1小时以上)如果您想搜集详细的日志,不妨在〃数据收集器〃的〃用户定义〃下创建-•个收集器,然后您可以在一段时间后查看报告。这样可以有效避免实时监测窗口的记录线条在到达右边底部时重
4、新从左边开始覆盖已有数据。
此文档下载收益归作者所有