方法一

1、打开电脑的【任务管理器】,选择【进程】页,点击菜单项的【查看】项,选择【选择列】;

2、勾选【GDI对象(J)】即可。

3、此时,用户就可以在进程中看到每个进程对应的GDI对象,每个进程的GDI对象(网页浏览器除外,每打开一个网页GDI对象都会增加)基本上是一定的,如果不断上涨,则说明程序存在GDI泄漏问题。

方法二

使用检测工具GDIndicator,支持win7+xp

1、启动待检测的程序和GDIndicator,启动顺序没有要求,之后F5刷新,就能看到系统中所有进程,和使用的资源数

找到想要查看的进程,这里我们的程序是 TPCommonControlTest,双击进入没有释放的GDI对象列表

在左边list控件中单击GDI对象,即可查看,对于可用bitmap对象,还可以看缩略图。

2、进行可能引起泄漏的操作,并复原,对本程序来说,就是打开聊天窗口,屏幕截图,并关闭聊天窗口。

如果没有GDI泄漏,在进行上述操作后,GDI对象应该没有改变,如果改变了,根据差值,查找泄漏的GDI对象。

3、下图是进行操作后,的GDI对象使用情况,根据差值,重点分析有哪些泄漏

根据对比发现,新增了1个bitmap2个dc对象,然后双击TPCommonControlTest进程,结合代码分析,看哪些地方使用DC了,以及是否释放。这个工具定位不是很精确,不能给出调用堆栈等,只能由程序员根据新增对象分析、查找。

方法三

使用检测工具GdiLeakDetector,支持xp,win7支持不是很好,可以精确定位GDI泄漏位置。

1、打开GdiLeakDetector,找到要检测的程序,并点击运行程序按钮

2、进行可能出现泄漏的操作,并退出程序,并依次点击左边的GDI泄漏列表,看哪个是可以修改的如上图所示,很容易的找到,在copyclipbrd中有dc泄漏,去函数中查看,发现dc是通过CreateCompatibleDC函数创建的,但是释放时用了releaseDC,这是不对的,对于CreateCompatibleDC申请的DC,应该用deletedc释放,而getDC取得的DC资源,用releaseDC释放,不对应的话就会造成GDI泄漏。

【方法二、三转自】http://hi.baidu.com/bit_qu/item/136682125fe88dfedceecab4

其他工具

GDIView:网盘下载

转载于:https://www.cnblogs.com/doudongchun/p/3699695.html

GDI 泄漏检测方法相关推荐

  1. [转]GDI 泄漏检测方法

    GDI 泄漏检测方法 方法一 方法二 方法三 转载至https://www.cnblogs.com/doudongchun/p/3699695.html 方法一 1.打开电脑的[任务管理器],选择[进 ...

  2. Visual Studio 内存泄漏检测方法

    Visual Studio 内存泄漏检测方法 非MFC程序可以用以下方法检测内存泄露: 1.程序开始包含如下定义: #ifdef _DEBUG #define DEBUG_CLIENTBLOCK ne ...

  3. Linux内存泄漏检测方法总结

    Linux内存泄漏检测方法总结 一.mtrace分析内存泄露 mtrace原理 设置日志生成路径 测试实例 日志 泄露分析 使用addr2line工具定位源码位置 使用mtrace工具分析日志信息 二 ...

  4. C++ 程序内存泄漏检测方法

    一.前言 在Linux平台上有valgrind可以非常方便的帮助我们定位内存泄漏,因为Linux在开发领域的使用场景大多是跑服务器,再加上它的开源属性,相对而言,处理问题容易形成"统一&qu ...

  5. 简单内存泄漏检测方法,解决Detected memory leaks!问题 .

    工作环境:WIN7,VS2005: 最近一个项目中,程序退出后,每次都出现内存泄漏,每次退出的时候泄露的内存块都是1654,1650. Detected memory leaks! Dumping o ...

  6. c语言内存泄漏怎么测试,C语言内存泄漏检测方法

    内存泄漏是C语言编程中一个很常见的问题,而且由于内存泄漏所导致的问题出现较缓慢,所以不容易觉察,所以写一个简单的程序来检测内存泄漏很有必要. 内存泄漏通常是指堆内存的泄漏,也就是通过malloc.ca ...

  7. 基于Android Studio的Android内存泄漏检测方法

    自从Google在2013年发布了Android Studio后,Android Studio凭借着自己良好的内存优化,酷炫的UI主题,强大的自动补全提示以及Gradle的编译支持正逐步取代Eclip ...

  8. 液压管路渗漏图像识别检测方法研究

    (一)选题依据 1. 课题研究意义及国内外研究现状 1.1 研究背景及意义 液压系统具有体积小.重量轻.反应灵敏.传递功率大.运动平稳.传动比大.调速方便等特点,广泛运用于各种机械设备中[1].液压系 ...

  9. iOS 内存泄漏排查方法及原因分析

    级别: ★★☆☆☆ 标签:「iOS」「内存泄漏排查」「Leaks工具」 作者: MrLiuQ 审校: QiShare团队 本文将从以下两个层面解决iOS内存泄漏问题: 内存泄漏排查方法(工具) 内存泄 ...

最新文章

  1. 服务器虚拟化组网方案,服务器虚拟化部署方案计划.doc
  2. C++中的文件读写操作(2)
  3. 学习java时的一些笔记(4)
  4. hdu 5095 Linearization of the kernel functions in SVM(模拟,分类清楚就行)
  5. JZOJ 5630. 【NOI2018模拟4.4】Connection
  6. 计算机应用基础 第三版 实验报告,计算机应用基础实验报告(windows).doc
  7. PyTorch框架学习十五——可视化工具TensorBoard
  8. (入门级小项目)JSP编程+web项目发布到Tomcat+mysql数据库
  9. 广义表头尾链表存储结构_详解Redis五种数据结构的底层原理
  10. 运行 Pycharm,提示 Error running ‘xxx‘: Unexpected content storage modification: page=221; newRecord=112
  11. MATLAB图像分割系统设计
  12. Could not find a version that satisfies the requirement pytz (from django)
  13. Excel-散点图(相关性及数据分布)分析
  14. 前端高级进阶13本经典书籍
  15. php篮球比赛,篮球数据API接口-【篮球比赛动画直播变化数据】API调用示例代码...
  16. excel一列数据中每个数重复固定次数
  17. (7)3DMAX之倒角剖面修改器、扫描修改器、倒角剖面与扫描之间的区别
  18. Appium+Python MAC安装Android夜神模拟器(二)
  19. SOLIDWORKS Simulation攻略丨赫兹接触应力分析
  20. 5、SAMBA服务一:参数详解

热门文章

  1. 使用分页插件的后悔药(二)
  2. RMAN-06214问题处理
  3. 中国人民大学2016考研复试基本分数线
  4. Cocos2dx小技巧 单例
  5. 让C/C++程序一次编译,到处运行 (仅限Linux)
  6. 批处理实现从Excel导入Oracle
  7. 数据库运维平台~开源成熟项目
  8. 腾讯开源项目盘点:WeUI,WePY,Tinker,Mars等
  9. 徒手撸框架--实现 RPC 远程调用
  10. 计算机网络技能专项训练一:基础配置