CN106708605B - 一种检测资源泄漏的方法及装置 - Google Patents

一种检测资源泄漏的方法及装置 Download PDF

Info

Publication number
CN106708605B
CN106708605B CN201510413898.XA CN201510413898A CN106708605B CN 106708605 B CN106708605 B CN 106708605B CN 201510413898 A CN201510413898 A CN 201510413898A CN 106708605 B CN106708605 B CN 106708605B
Authority
CN
China
Prior art keywords
gdi
resource
resources occupied
leakage
preset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510413898.XA
Other languages
English (en)
Other versions
CN106708605A (zh
Inventor
陈威
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Yayue Technology Co ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201510413898.XA priority Critical patent/CN106708605B/zh
Publication of CN106708605A publication Critical patent/CN106708605A/zh
Application granted granted Critical
Publication of CN106708605B publication Critical patent/CN106708605B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明实施例公开了一种检测资源泄漏的方法及装置,所述方法包括:获取处于运行状态的进程所占用的GDI资源的数量;判断进程所占用的GDI资源的数量是否大于进程对应的预设数量阈值;当进程所占用的GDI资源的数量大于预设数量阈值时,确定检测到GDI资源泄漏。采用本发明实施例,可有效检测GDI资源泄漏,提升GDI资源泄漏的检测效率。

Description

一种检测资源泄漏的方法及装置
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种检测资源泄漏的方法及装置。
背景技术
GDI(Graphics Device Interface,图形设备接口),负责操作系统(例如Windows,Linux等)与应用程序之间的信息交换。可以通过应用程序执行在显示屏、打印机或者其它输出设备上输出图形或者文本等操作。画笔或者字体等GDI资源由操作系统持有,应用程序需要向操作系统申请GDI资源,获取到的GDI资源使用之后需主动释放。当使用的GDI资源未主动释放时,将出现GDI资源泄漏,应用程序占用的GDI资源的数量持续上升,应用程序无法申请新的GDI资源,导致绘图界面绘制错乱或者系统响应缓慢等问题。维修人员通常通过人工检查应用程序是否出现代码逻辑错误的方式检测是否产生GDI资源泄漏,人工检查代码逻辑的方法操作繁琐,检测效率较低。
发明内容
本发明实施例所要解决的技术问题在于,提供一种检测资源泄漏的方法及装置,可有效检测GDI资源泄漏,提升GDI资源泄漏的检测效率。
为了解决上述技术问题,本发明实施例提供了一种检测资源泄漏的方法,包括:
获取处于运行状态的进程所占用的GDI资源的数量;
判断所述进程所占用的GDI资源的数量是否大于所述进程对应的预设数量阈值;
当所述进程所占用的GDI资源的数量大于所述预设数量阈值时,确定检测到GDI资源泄漏。
相应地,本发明实施例还提供了一种检测资源泄漏的装置,包括:
资源数量获取模块,用于获取处于运行状态的进程所占用的GDI资源的数量;
资源数量判断模块,用于判断所述进程所占用的GDI资源的数量是否大于所述进程对应的预设数量阈值;
资源泄漏确定模块,用于当所述进程所占用的GDI资源的数量大于所述预设数量阈值时,确定检测到GDI资源泄漏。
实施本发明实施例,通过获取处于运行状态的进程所占用的GDI资源的数量,判断进程所占用的GDI资源的数量是否大于进程对应的预设数量阈值,当进程所占用的GDI资源的数量大于预设数量阈值时,确定检测到GDI资源泄漏,可有效检测GDI资源泄漏,提升GDI资源泄漏的检测效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中提供的一种检测资源泄漏的方法的流程示意图;
图2是本发明另一实施例中提供的检测资源泄漏的方法的流程示意图;
图3是本发明另一实施例中提供的检测资源泄漏的方法的流程示意图;
图4是本发明实施例中提供的一种检测资源泄漏的装置的结构示意图;
图5是本发明实施例中图4的资源数量获取模块的结构示意图;
图6是本发明实施例中提供的一种终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种检测资源泄漏的方法,获取处于运行状态的进程所占用的GDI资源的数量,判断进程所占用的GDI资源的数量是否大于进程对应的预设数量阈值,当进程所占用的GDI资源的数量大于预设数量阈值时,确定检测到GDI资源泄漏。相对于现有的通过人工检查应用程序是否出现代码逻辑错误的方式检测是否产生GDI资源泄漏,本发明实施例可有效检测GDI资源泄漏,提升GDI资源泄漏的检测效率。
本发明实施例提及到的处于运行状态的进程可以为绘图界面对应的进程、应用界面对应的进程或者对话框对应的进程等,例如Photoshop中各个绘图界面对应的进程,浏览器界面对应的进程、视频播放界面对应的进程或者微信对话框对应的进程,等等,具体不受本发明实施例的限制。
本发明实施例提及到的GDI资源可以包括画笔、画刷、字体或者位图等,,具体不受本发明实施例的限制。
上述检测资源泄漏的方法可以运行在平板电脑、手机、电子阅读器、个人计算机(Personal Computer,PC)、笔记本电脑、车载设备或网络电视等终端中。
请参见图1,图1是本发明实施例中的一种检测资源泄漏的方法的流程示意图,如图所示本发明实施例中的检测资源泄漏的方法可以包括:
S101,获取处于运行状态的进程所占用的GDI资源的数量。
终端可以获取处于运行状态的进程所占用的GDI资源的数量。以浏览器界面对应的进程为例,用户点击浏览器应用,终端显示浏览器界面,浏览器界面对应的进程处于运行状态,该进程所占用的GDI资源包括位图、字体、画笔以及画刷,其中该进程所占用的位图的数量为100个,画笔的数量为10个,字体的数量为50个,画刷为20个,则该进程所占用的GDI资源的数量为180个。
在可选实施例中,终端可以以预设时长为周期获取进程所占用的GDI资源的数量。例如,预设时长可以为10s,终端在该进程开始运行时第一次获取该进程所占用的GDI资源的数量,从第一次获取该进程所占用的GDI资源的数量开始经过10s后第二次获取该进程所占用的GDI资源的数量,从第二次获取该进程所占用的GDI资源的数量开始经过10s后第三次获取该进程所占用的GDI资源的数量,等等。需要指出的是,本发明实施例中的预设时长包含但不局限于10s,研发人员可以结合不同场景进行相应的修改,具体不受本发明实施例的限制。
本发明实施例通过定时获取处于运行状态的进程所占用的GDI资源的数量,并根据进程所占用的GDI资源的数量,确定是否检测到GDI资源泄漏,可提高检测GDI资源泄漏的准确性。
在可选实施例中,终端可以监测GDI资源信息,其中GDI资源信息可以包括:GDI资源标识、其对应GDI资源所属的进程以及各个进程所占用的GDI资源的数量,在GDI资源信息中获取处于运行状态的进程所占用的所有GDI资源的数量总和。例如,终端可以定时监测GDI资源信息,其中监测到的GDI资源信息包括画笔标识、字体标识以及位图标识,画笔所属的进程包括第一进程,第一进程所占用的画笔的数量为10个,字体所属的进程包括第一进程和第二进程,第一进程所占用的字体的数量为15个,第二进程所占用的字体的数量为100个,位图所属的进程包括第二进程和第三进程,第二进程所占用的位图的数量为100个,第三进程所占用的位图的数量为150个,则终端可以在GDI资源信息中获取第一进程所占用的所有GDI资源的数量总和为25个,第二进程所占用的所有GDI资源的数量总和为200个,第三进程所占用的所有GDI资源的数量总和为150个。
S102,判断进程所占用的GDI资源的数量是否大于进程对应的预设数量阈值。
终端获取到处于运行状态的进程所占用的GDI资源的数量之后,可以判断进程所占用的GDI资源的数量是否大于该进程对应的预设数量阈值。例如,各个进程对应的预设数量阈值可以为3000,终端第一次获取到处于运行状态的进程所占用的GDI资源的数量之后,可以判断该进程所占用的GDI资源的数量是否大于3000,当该进程所占用的GDI资源的数量大于3000时,进一步执行步骤S102;当该进程所占用的GDI资源的数量小于或者等于3000时,在第二次获取到处于运行状态的进程所占用的GDI资源的数量之后,判断该进程所占用的GDI资源的数量是否大于3000,当该进程所占用的GDI资源的数量大于3000时,进一步执行步骤S102;当该进程所占用的GDI资源的数量小于或者等于3000时,在第三次获取到处于运行状态的进程所占用的GDI资源的数量之后,执行判断该进程所占用的GDI资源的数量是否大于3000的步骤,等等。需要指出的是,本发明实施例中的预设数量阈值包含但不局限于3000,研发人员可以结合不同场景进行相应的修改,具体不受本发明实施例的限制。
在可选实施例中,终端判断进程所占用的GDI资源的数量大于进程对应的预设数量阈值时,可以将预设数量阈值与预设步长相加,以获取经过更新的进程对应的预设数量阈值。进一步的,终端以预设时长为周期获取进程所占用的GDI资源的数量之后,可以判断进程所占用的GDI资源的数量是否大于经过更新的预设数量阈值,当进程所占用的GDI资源的数量大于经过更新的预设数量阈值时,确定检测到GDI资源泄漏。例如,预设数量阈值为3000,预设步长为500,终端第一次获取到处于运行状态的进程所占用的GDI资源的数量之后,判断该进程所占用的GDI资源的数量大于3000时,确定检测到GDI资源泄漏,并将预设数量阈值与预设步长相加,以获取经过更新的进程对应的预设数量阈值,即3500;在第二次获取到处于运行状态的进程所占用的GDI资源的数量之后,判断该进程所占用的GDI资源的数量大于3500时,再次确定检测到GDI资源泄漏,并将预设数量阈值与预设步长相加,以获取经过更新的进程对应的预设数量阈值,即4000;在第三次获取到处于运行状态的进程所占用的GDI资源的数量之后,判断该进程所占用的GDI资源的数量大于4000时,再次确定检测到GDI资源泄漏,等等。需要指出的是,本发明实施例中的预设数量阈值包含但不局限于3000,预设步长包含但不局限于500,研发人员可以结合不同场景进行相应的修改,具体不受本发明实施例的限制。
本发明实施例中,产生GDI资源泄漏之后,GDI资源的数量是不断增长的,通过判断进程所占用的GDI资源的数量大于进程对应的预设数量阈值之后,对进程对应的预设数量阈值进行更新,可避免判断第一次获取到的进程所占用的GDI资源的数量大于预设数量阈值之后,再次获取到的进程所占用的GDI资源的数量都大于预设数量阈值,无法检测到该进程所占用的GDI资源的数量在不断增长,本发明实施例可提高检测GDI资源泄漏的准确性。
S103,确定检测到GDI资源泄漏。
终端判断进程所占用的GDI资源的数量大于进程对应的预设数量阈值时,可以确定检测到GDI资源泄漏。
在可选实施例中,终端确定检测到GDI资源泄漏之后,可以获取进程对应的应用程序,根据应用程序,确定产生GDI资源泄漏的操作。其中,应用程序可以包括图像应用程序、通讯应用程序或者办公应用程序等,例如浏览器应用程序、Photoshop应用程序或者微信对话框等。例如,终端可以获取该进程对应的应用程序,确定应用程序中GDI资源对应的函数,判断该GDI资源对应的函数是否一直被调用,并未及时删除该GDI资源,若是,则确定产生GDI资源泄漏的操作为该GDI资源对应的函数。
在可选实施例中,终端确定检测到GDI资源泄漏之后,可以生成进程对应的资源泄漏提醒信息,根据资源泄漏提醒信息进行提醒。具体实现中,终端确定检测到GDI资源泄漏之后,可以生成进程对应的资源泄漏提醒信息,资源泄漏提醒信息可以包括进程标识,可选的,资源泄漏提醒信息还可以包括产生GDI资源泄漏的操作等,终端可以通过在显示屏上显示资源泄漏提醒信息的方式进行提醒,也可以通过响铃或者振动等方式进行提醒。
进一步可选的,终端确定检测到GDI资源泄漏之后,可以获取检测到GDI资源泄漏的确定次数,并根据确定次数生成进程对应的资源泄漏提醒信息,根据该资源泄漏提醒信息进行提醒。例如,第一次确定检测到GDI资源泄漏之后,通过在显示屏上显示资源泄漏提醒信息的方式进行提醒;第二次确定检测到GDI资源泄漏之后,通过振动的方式进行提醒;第三次确定检测到GDI资源泄漏之后,通过响铃的方式进行提醒。
本发明实施例通过获取处于运行状态的进程所占用的GDI资源的数量,判断进程所占用的GDI资源的数量是否大于进程对应的预设数量阈值,当进程所占用的GDI资源的数量大于预设数量阈值时,确定检测到GDI资源泄漏,可有效检测GDI资源泄漏,提升GDI资源泄漏的检测效率。
请参见图2,图2是本发明另一实施例中的检测资源泄漏的方法的流程示意图,如图所示本实施例中的检测资源泄漏的方法可以包括:
S201,以预设时长为周期获取进程所占用的GDI资源的数量。
终端可以以预设时长为周期获取处于运行状态的进程所占用的GDI资源的数量。例如,预设时长可以为10s,终端在该进程开始运行时第一次获取该进程所占用的GDI资源的数量,从第一次获取该进程所占用的GDI资源的数量开始经过10s后第二次获取该进程所占用的GDI资源的数量,从第二次获取该进程所占用的GDI资源的数量开始经过10s后第三次获取该进程所占用的GDI资源的数量,等等。
S202,判断进程所占用的GDI资源的数量是否大于进程对应的预设数量阈值。
终端获取到处于运行状态的进程所占用的GDI资源的数量之后,可以判断进程所占用的GDI资源的数量是否大于进程对应的预设数量阈值,当进程所占用的GDI资源的数量大于进程对应的预设数量阈值时,进一步执行步骤S203;当进程所占用的GDI资源的数量小于或者等于进程对应的预设数量阈值时,在以预设时长为周期再次获取到进程所占用的GDI资源的数量之后,判断进程所占用的GDI资源的数量是否大于该进程对应的预设数量阈值。
例如,各个进程对应的预设数量阈值可以为3000,终端第一次获取到处于运行状态的进程所占用的GDI资源的数量之后,可以判断该进程所占用的GDI资源的数量是否大于3000,当该进程所占用的GDI资源的数量大于3000时,进一步执行步骤S203;当该进程所占用的GDI资源的数量小于或者等于3000时,在第二次获取到处于运行状态的进程所占用的GDI资源的数量之后,判断该进程所占用的GDI资源的数量是否大于3000,当该进程所占用的GDI资源的数量大于3000时,进一步执行步骤S203;当该进程所占用的GDI资源的数量小于或者等于3000时,在第三次获取到处于运行状态的进程所占用的GDI资源的数量之后,执行判断该进程所占用的GDI资源的数量是否大于3000的步骤,等等。
S203,确定检测到GDI资源泄漏。
终端判断进程所占用的GDI资源的数量大于进程对应的预设数量阈值时,可以确定检测到GDI资源泄漏。
S204,将预设数量阈值与预设步长相加,以获取经过更新的进程对应的预设数量阈值。
终端判断进程所占用的GDI资源的数量大于进程对应的预设数量阈值时,可以将预设数量阈值与预设步长相加,以获取经过更新的进程对应的预设数量阈值。例如,预设数量阈值为3000,预设步长为500,终端第一次获取到处于运行状态的进程所占用的GDI资源的数量之后,判断该进程所占用的GDI资源的数量大于3000时,将预设数量阈值与预设步长相加,以获取经过更新的进程对应的预设数量阈值,即3500。
终端获取到经过更新的进程对应的预设数量阈值之后,在以预设时长为周期再次获取到该进程所占用的GDI资源的数量时,可以判断该进程所占用的GDI资源的数量是否大于经过更新的进程对应的预设数量阈值,当该进程所占用的GDI资源的数量大于经过更新的进程对应的预设数量阈值时,确定检测到GDI资源泄漏,并将预设数量阈值与预设步长相加,以获取经过更新的进程对应的预设数量阈值。例如,在第二次获取到处于运行状态的进程所占用的GDI资源的数量之后,判断该进程所占用的GDI资源的数量大于3500时,再次确定检测到GDI资源泄漏,并将预设数量阈值与预设步长相加,以获取经过更新的进程对应的预设数量阈值,即4000;在第三次获取到处于运行状态的进程所占用的GDI资源的数量之后,判断该进程所占用的GDI资源的数量大于4000时,再次确定检测到GDI资源泄漏,并将预设数量阈值与预设步长相加,以获取经过更新的进程对应的预设数量阈值,即4500,等等。
本发明实施例中,通过以预设时长为周期获取进程所占用的GDI资源的数量,当进程所占用的GDI资源的数量大于进程对应的预设数量阈值时,确定检测到GDI资源泄漏,并将预设数量阈值与预设步长相加,以获取进程对应的经过更新的预设数量阈值,当进程所占用的GDI资源的数量大于经过更新的预设数量阈值时,确定检测到GDI资源泄漏,可有效检测GDI资源泄漏,提升GDI资源泄漏的检测效率。
请参见图3,图3是本发明另一实施例中的检测资源泄漏的方法的流程示意图,如图所示本实施例中的应用管理方法可以包括:
S301,监测GDI资源信息。
终端可以监测GDI资源信息,其中GDI资源信息可以包括:GDI资源标识、其对应GDI资源所属的进程以及各个进程所占用的GDI资源的数量。
例如,终端可以定时监测GDI资源信息,其中监测到的GDI资源信息包括画笔标识、字体标识以及位图标识,画笔所属的进程包括第一进程,第一进程所占用的画笔的数量为10个,字体所属的进程包括第一进程和第二进程,第一进程所占用的字体的数量为15个,第二进程所占用的字体的数量为100个,位图所属的进程包括第二进程和第三进程,第二进程所占用的位图的数量为100个,第三进程所占用的位图的数量为150个。
S302,在GDI资源信息中获取处于运行状态的进程所占用的所有GDI资源的数量总和。
终端可以在GDI资源信息中获取处于运行状态的进程所占用的所有GDI资源的数量总和。
例如,GDI资源信息中,第一进程所占用的字体的数量为15个,第二进程所占用的字体的数量为100个,位图所属的进程包括第二进程和第三进程,第二进程所占用的位图的数量为100个,第三进程所占用的位图的数量为150个,则终端可以在GDI资源信息中获取第一进程所占用的所有GDI资源的数量总和为25个,第二进程所占用的所有GDI资源的数量总和为200个,第三进程所占用的所有GDI资源的数量总和为150个。
S303,判断进程所占用的GDI资源的数量是否大于进程对应的预设数量阈值。
终端可以判断进程所占用的GDI资源的数量是否大于进程对应的预设数量阈值。
例如,第一进程对应的预设数量阈值为3000,终端定时获取到第一进程所占用的所有GDI资源的数量总和为25个,则终端可以判断第一进程所占用的所有GDI资源的数量小于第一进程对应的预设数量阈值。又如,第二进程对应的预设数量阈值为3000,终端定时获取到第二进程所占用的所有GDI资源的数量总和为200个,则终端可以判断第二进程所占用的所有GDI资源的数量小于第二进程对应的预设数量阈值。又如,第三进程对应的预设数量阈值为3000,终端定时获取到第三进程所占用的所有GDI资源的数量总和为150个,则终端可以判断第三进程所占用的所有GDI资源的数量小于第三进程对应的预设数量阈值。
S304,确定检测到GDI资源泄漏。
终端判断进程所占用的GDI资源的数量大于进程对应的预设数量阈值时,可以确定检测到GDI资源泄漏。
S305,获取进程对应的应用程序。
终端确定检测到GDI资源泄漏之后,可以获取进程对应的应用程序。
S306,根据应用程序,确定产生GDI资源泄漏的操作。
终端可以根据应用程序,确定产生GDI资源泄漏的操作。例如,终端可以确定应用程序中GDI资源对应的函数,判断该GDI资源对应的函数是否一直被调用,并未及时删除该GDI资源,若是,则确定产生GDI资源泄漏的操作为该GDI资源对应的函数。
S307,生成进程对应的资源泄漏提醒信息。
终端确定检测到GDI资源泄漏之后,可以生成进程对应的资源泄漏提醒信息。其中,资源泄漏提醒信息可以包括进程标识,可选的,资源泄漏提醒信息还可以包括产生GDI资源泄漏的操作等。
S308,根据资源泄漏提醒信息进行提醒。
终端可以根据资源泄漏提醒信息进行提醒,例如通过在显示屏上显示资源泄漏提醒信息的方式进行提醒,也可以通过语音播放、响铃或者振动等方式进行提醒。
本发明实施例中,通过监测GDI资源信息,在GDI资源信息中获取处于运行状态的进程所占用的所有GDI资源的数量总和,当进程所占用的GDI资源的数量大于进程对应的预设数量阈值时,确定检测到GDI资源泄漏,获取进程对应的应用程序,根据应用程序,确定产生GDI资源泄漏的操作,并生成进程对应的资源泄漏提醒信息,根据资源泄漏提醒信息进行提醒,可有效检测GDI资源泄漏,提升GDI资源泄漏的检测效率。
请参见图4,图4是本发明实施例中提供的一种检测资源泄漏的装置的结构示意图,本实施例中的检测资源泄漏的装置可以包括平板电脑、手机、电子阅读器、个人计算机(Personal Computer,PC)、笔记本电脑、车载设备、网络电视等终端,如图所示本实施例中的检测资源泄漏的装置至少可以包括资源数量获取模块401、资源数量判断模块402以及资源泄漏确定模块403,其中:
资源数量获取模块401,用于获取处于运行状态的进程所占用的GDI资源的数量。
以浏览器界面对应的进程为例,用户点击浏览器应用,终端显示浏览器界面,浏览器界面对应的进程处于运行状态,该进程所占用的GDI资源包括位图、字体、画笔以及画刷,其中该进程所占用的位图的数量为100个,画笔的数量为10个,字体的数量为50个,画刷为20个,则资源数量获取模块401获取到该进程所占用的GDI资源的数量为180个。
资源数量判断模块402,用于判断进程所占用的GDI资源的数量是否大于进程对应的预设数量阈值。
例如,各个进程对应的预设数量阈值可以为3000,资源数量获取模块401第一次获取到处于运行状态的进程所占用的GDI资源的数量之后,资源数量判断模块402可以判断该进程所占用的GDI资源的数量是否大于3000,当该进程所占用的GDI资源的数量大于3000时,资源泄漏确定模块403确定检测到GDI资源泄漏;当该进程所占用的GDI资源的数量小于或者等于3000时,在资源数量获取模块401第二次获取到处于运行状态的进程所占用的GDI资源的数量之后,资源数量判断模块402判断该进程所占用的GDI资源的数量是否大于3000,当该进程所占用的GDI资源的数量大于3000时,资源泄漏确定模块403确定检测到GDI资源泄漏;当该进程所占用的GDI资源的数量小于或者等于3000时,在资源数量获取模块401第三次获取到处于运行状态的进程所占用的GDI资源的数量之后,资源数量判断模块402判断该进程所占用的GDI资源的数量是否大于3000,等等。
资源泄漏确定模块403,用于当进程所占用的GDI资源的数量大于预设数量阈值时,确定检测到GDI资源泄漏。
在可选实施例中,资源数量获取模块401,用于以预设时长为周期获取进程所占用的GDI资源的数量。
例如,预设时长可以为10s,资源数量获取模块401在该进程开始运行时第一次获取该进程所占用的GDI资源的数量,从第一次获取该进程所占用的GDI资源的数量开始经过10s后第二次获取该进程所占用的GDI资源的数量,从第二次获取该进程所占用的GDI资源的数量开始经过10s后第三次获取该进程所占用的GDI资源的数量,等等。
在可选实施例中,本发明实施例中的检测资源泄漏的装置还可以包括:
阈值更新模块404,用于当资源数量判断模块402判断进程所占用的GDI资源的数量大于预设数量阈值时,将预设数量阈值与预设步长相加,以获取经过更新的进程对应的预设数量阈值。
资源数量判断模块402,还用于资源数量获取模块401以预设时长为周期获取进程所占用的GDI资源的数量之后,判断进程所占用的GDI资源的数量是否大于经过更新的预设数量阈值。
资源泄漏确定模块403,还用于当资源数量判断模块402判断进程所占用的GDI资源的数量大于经过更新的预设数量阈值时,确定检测到GDI资源泄漏。
例如,预设数量阈值为3000,预设步长为500,资源数量获取模块401第一次获取到处于运行状态的进程所占用的GDI资源的数量之后,资源数量判断模块402判断该进程所占用的GDI资源的数量大于3000时,资源泄漏确定模块403确定检测到GDI资源泄漏,阈值更新模块404将预设数量阈值与预设步长相加,以获取经过更新的进程对应的预设数量阈值,即3500;在资源数量获取模块401第二次获取到处于运行状态的进程所占用的GDI资源的数量之后,资源数量判断模块402判断该进程所占用的GDI资源的数量大于3500时,资源泄漏确定模块403再次确定检测到GDI资源泄漏,阈值更新模块404将预设数量阈值与预设步长相加,以获取经过更新的进程对应的预设数量阈值,即4000;在资源数量获取模块401第三次获取到处于运行状态的进程所占用的GDI资源的数量之后,资源数量判断模块402判断该进程所占用的GDI资源的数量大于4000时,资源泄漏确定模块403再次确定检测到GDI资源泄漏,等等。
在可选实施例中,本发明实施例中的资源数量获取模块401可以如图5所示,进一步包括:
资源信息监测单元501,用于监测GDI资源信息,其中GDI资源信息可以包括:GDI资源标识、其对应GDI资源所属的进程以及各个进程所占用的GDI资源的数量。
资源数量获取单元502,用于在GDI资源信息中获取处于运行状态的进程所占用的所有GDI资源的数量总和。
例如,资源信息监测单元501可以定时监测GDI资源信息,其中监测到的GDI资源信息包括画笔标识、字体标识以及位图标识,画笔所属的进程包括第一进程,第一进程所占用的画笔的数量为10个,字体所属的进程包括第一进程和第二进程,第一进程所占用的字体的数量为15个,第二进程所占用的字体的数量为100个,位图所属的进程包括第二进程和第三进程,第二进程所占用的位图的数量为100个,第三进程所占用的位图的数量为150个,则资源数量获取单元502可以在GDI资源信息中获取第一进程所占用的所有GDI资源的数量总和为25个,第二进程所占用的所有GDI资源的数量总和为200个,第三进程所占用的所有GDI资源的数量总和为150个。
在可选实施例中,本发明实施例中的检测资源泄漏的装置还可以包括:
应用程序获取模块405,用于资源泄漏确定模块403确定检测到GDI资源泄漏之后,获取进程对应的应用程序。
操作确定模块406,用于根据应用程序,确定产生GDI资源泄漏的操作。
例如,应用程序获取模块405可以获取该进程对应的应用程序,确定应用程序中GDI资源对应的函数,判断该GDI资源对应的函数是否一直被调用,并未及时删除该GDI资源,若是,则操作确定模块406确定产生GDI资源泄漏的操作为该GDI资源对应的函数。
在可选实施例中,本发明实施例中的检测资源泄漏的装置还可以包括:
提醒信息生成模块407,用于资源泄漏确定模块403确定检测到GDI资源泄漏之后,生成进程对应的资源泄漏提醒信息。资源泄漏提醒信息可以包括进程标识,可选的,资源泄漏提醒信息还可以包括产生GDI资源泄漏的操作等,
提醒模块408,用于根据资源泄漏提醒信息进行提醒。例如,提醒模块408可以通过在显示屏上显示资源泄漏提醒信息的方式进行提醒,也可以通过响铃或者振动等方式进行提醒。
进一步可选的,资源泄漏确定模块403确定检测到GDI资源泄漏之后,提醒信息生成模块407可以获取检测到GDI资源泄漏的确定次数,并根据确定次数生成进程对应的资源泄漏提醒信息,提醒模块408根据该资源泄漏提醒信息进行提醒。例如,资源泄漏确定模块403第一次确定检测到GDI资源泄漏之后,提醒模块408通过在显示屏上显示资源泄漏提醒信息的方式进行提醒;资源泄漏确定模块403第二次确定检测到GDI资源泄漏之后,提醒模块408通过振动的方式进行提醒;资源泄漏确定模块403第三次确定检测到GDI资源泄漏之后,提醒模块408通过响铃的方式进行提醒。
本发明实施例中,资源数量获取模块401获取处于运行状态的进程所占用的GDI资源的数量,资源数量判断模块402判断进程所占用的GDI资源的数量大于进程对应的预设数量阈值时,资源泄漏确定模块403确定检测到GDI资源泄漏,可有效检测GDI资源泄漏,提升GDI资源泄漏的检测效率。
请参见图6,图6为本发明实施例提供的一种终端的结构示意图,本发明实施例提供的终端可以用于实施上述图1~图3所示的本发明各实施例实现的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照图1~图3所示的本发明各实施例。
如图6所示,该终端包括:至少一个处理器601,例如CPU,至少一个输出装置603,存储器604,至少一个通信总线602。其中,通信总线602用于实现这些组件之间的连接通信。其中,输出装置604具体可以为显示屏、麦克风或者振动传感器等,用于根据资源泄漏提醒信息进行提醒。其中,存储器604可能包含高速RAM存储器,也可能还包括非不稳定的存储器,例如至少一个磁盘存储器。存储器604可选的可以包含至少一个位于远离前述处理器601的存储装置。处理器601可以结合图4或图5所示的检测资源泄漏的装置。存储器604中存储一组程序代码,且处理器601调用存储器604中存储的程序代码,用于执行以下操作:
获取处于运行状态的进程所占用的GDI资源的数量。以浏览器界面对应的进程为例,用户点击浏览器应用,终端显示浏览器界面,浏览器界面对应的进程处于运行状态,该进程所占用的GDI资源包括位图、字体、画笔以及画刷,其中该进程所占用的位图的数量为100个,画笔的数量为10个,字体的数量为50个,画刷为20个,则处理器601可以获取到该进程所占用的GDI资源的数量为180个。
判断进程所占用的GDI资源的数量是否大于进程对应的预设数量阈值。例如,各个进程对应的预设数量阈值可以为3000,处理器601获取到处于运行状态的进程所占用的GDI资源的数量之后,可以判断该进程所占用的GDI资源的数量是否大于3000,当该进程所占用的GDI资源的数量大于3000时,确定检测到GDI资源泄漏。
当进程所占用的GDI资源的数量大于预设数量阈值时,确定检测到GDI资源泄漏。
在可选实施例中,处理器601获取处于运行状态的进程所占用的GDI资源的数量,具体可以为:
以预设时长为周期获取进程所占用的GDI资源的数量。
例如,预设时长可以为10s,处理器601在该进程开始运行时第一次获取该进程所占用的GDI资源的数量,从第一次获取该进程所占用的GDI资源的数量开始经过10s后第二次获取该进程所占用的GDI资源的数量,从第二次获取该进程所占用的GDI资源的数量开始经过10s后第三次获取该进程所占用的GDI资源的数量,等等。
进一步可选的,处理器601判断进程所占用的GDI资源的数量是否大于进程对应的预设数量阈值之后,还可以执行以下操作:
当进程所占用的GDI资源的数量大于预设数量阈值时,将预设数量阈值与预设步长相加,以获取经过更新的进程对应的预设数量阈值。
处理器601以预设时长为周期获取进程所占用的GDI资源的数量之后,还可以执行以下操作:
判断进程所占用的GDI资源的数量是否大于经过更新的预设数量阈值。
当进程所占用的GDI资源的数量大于经过更新的预设数量阈值时,确定检测到GDI资源泄漏。
例如,预设数量阈值为3000,预设步长为500,处理器601第一次获取到处于运行状态的进程所占用的GDI资源的数量之后,判断该进程所占用的GDI资源的数量大于3000时,确定检测到GDI资源泄漏,并将预设数量阈值与预设步长相加,以获取经过更新的进程对应的预设数量阈值,即3500;在第二次获取到处于运行状态的进程所占用的GDI资源的数量之后,判断该进程所占用的GDI资源的数量大于3500时,再次确定检测到GDI资源泄漏,并将预设数量阈值与预设步长相加,以获取经过更新的进程对应的预设数量阈值,即4000;在第三次获取到处于运行状态的进程所占用的GDI资源的数量之后,判断该进程所占用的GDI资源的数量大于4000时,再次确定检测到GDI资源泄漏,等等。
在可选实施例中,处理器601获取处于运行状态的进程所占用的GDI资源的数量,具体可以为:
监测GDI资源信息,其中GDI资源信息可以包括:GDI资源标识、其对应GDI资源所属的进程以及各个进程所占用的GDI资源的数量。
在GDI资源信息中获取处于运行状态的进程所占用的所有GDI资源的数量总和。
例如,处理器601可以定时监测GDI资源信息,其中监测到的GDI资源信息包括画笔标识、字体标识以及位图标识,画笔所属的进程包括第一进程,第一进程所占用的画笔的数量为10个,字体所属的进程包括第一进程和第二进程,第一进程所占用的字体的数量为15个,第二进程所占用的字体的数量为100个,位图所属的进程包括第二进程和第三进程,第二进程所占用的位图的数量为100个,第三进程所占用的位图的数量为150个,则处理器601可以在GDI资源信息中获取第一进程所占用的所有GDI资源的数量总和为25个,第二进程所占用的所有GDI资源的数量总和为200个,第三进程所占用的所有GDI资源的数量总和为150个。
在可选实施例中,处理器601确定检测到GDI资源泄漏之后,还可以执行以下操作:
获取进程对应的应用程序。
根据应用程序,确定产生GDI资源泄漏的操作。
在可选实施例中,处理器601确定检测到GDI资源泄漏之后,还可以执行以下操作:
生成进程对应的资源泄漏提醒信息。资源泄漏提醒信息可以包括进程标识,可选的,资源泄漏提醒信息还可以包括产生GDI资源泄漏的操作等,
通过输出装置603根据资源泄漏提醒信息进行提醒。
例如,输出装置603为显示屏时,处理器601可以通过在输出装置603上显示资源泄漏提醒信息的方式进行提醒。又如,输出装置为麦克风时,处理器601可以通过输出装置603进行响铃或者语音播放资源泄漏提醒信息等方式进行提醒。又如,输出装置为振动传感器时,处理器601可以通过输出装置603进行振动的方式进行提醒。
具体的,本发明实施例中介绍的终端可以用以实施本发明结合图1~图3介绍的方法实施例中的部分或全部流程。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (6)

1.一种检测资源泄漏的方法,其特征在于,包括:
以预设时长为周期获取处于运行状态的进程所占用的图形设备接口GDI资源的数量;
判断所述进程所占用的GDI资源的数量是否大于所述进程对应的预设数量阈值;
当所述进程所占用的GDI资源的数量大于所述预设数量阈值时,确定检测到GDI资源泄漏;
将所述预设数量阈值与预设步长相加,以获取经过更新的所述进程对应的预设数量阈值;
在以所述预设时长为周期获取所述进程所占用的GDI资源的数量之后,判断再次获取到的所述进程所占用的GDI资源的数量是否大于所述经过更新的预设数量阈值;
当所述再次获取到的所述进程所占用的GDI资源的数量大于所述经过更新的预设数量阈值时,确定检测到GDI资源泄漏;
获取所述进程对应的应用程序;
确定所述应用程序中所述进程所占用的GDI资源对应的函数;
若所述函数被持续调用,且所述GDI资源未被所述进程释放,则确定产生所述GDI资源泄露的操作为所述函数;
获取检测到GDI资源泄漏的确定次数;
根据所述确定次数生成所述进程对应的资源泄漏提醒信息,所述资源泄露提醒信息包括所述进程的进程标识和产生所述GDI资源泄露的操作;
根据所述资源泄漏提醒信息进行提醒。
2.根据权利要求1所述方法,其特征在于,所述获取处于运行状态的进程所占用的GDI资源的数量包括:
监测GDI资源信息,所述GDI资源信息包括GDI资源标识、其对应GDI资源所属的进程以及各个所述进程所占用的所述GDI资源的数量;
在所述GDI资源信息中获取所述处于运行状态的进程所占用的所有GDI资源的数量总和。
3.一种检测资源泄漏的装置,其特征在于,包括:
资源数量获取模块,用于以预设时长为周期获取处于运行状态的进程所占用的GDI资源的数量;
资源数量判断模块,用于判断所述进程所占用的GDI资源的数量是否大于所述进程对应的预设数量阈值;
资源泄漏确定模块,用于当所述进程所占用的GDI资源的数量大于所述预设数量阈值时,确定检测到GDI资源泄漏;
阈值更新模块,用于当所述资源数量判断模块判断所述进程所占用的GDI资源的数量大于所述预设数量阈值时,将所述预设数量阈值与预设步长相加,以获取经过更新的所述进程对应的预设数量阈值;
所述资源数量判断模块,还用于所述资源数量获取模块以所述预设时长为周期获取所述进程所占用的GDI资源的数量之后,判断再次获取到的所述进程所占用的GDI资源的数量是否大于所述经过更新的预设数量阈值;
所述资源泄漏确定模块,还用于当所述资源数量判断模块判断所述再次获取到的所述进程所占用的GDI资源的数量大于所述经过更新的预设数量阈值时,确定检测到GDI资源泄漏;
应用程序获取模块,用于所述资源泄漏确定模块确定检测到GDI资源泄漏之后,获取所述进程对应的应用程序;
操作确定模块,用于确定所述应用程序中所述进程所占用的GDI资源对应的函数,若所述函数被持续调用,且所述GDI资源未被所述进程释放,则确定产生所述GDI资源泄露的操作为所述函数;
提醒信息生成模块,用于获取检测到GDI资源泄漏的确定次数,并根据所述确定次数生成所述进程对应的资源泄漏提醒信息,所述资源泄露提醒信息包括所述进程的进程标识和产生所述GDI资源泄露的操作;
提醒模块,用于根据所述资源泄漏提醒信息进行提醒。
4.根据权利要求3所述装置,其特征在于,所述资源数量获取模块包括:
资源信息监测单元,用于监测GDI资源信息,所述GDI资源信息包括GDI资源标识、其对应GDI资源所属的进程以及各个所述进程所占用的所述GDI资源的数量;
资源数量获取单元,用于在所述GDI资源信息中获取所述处于运行状态的进程所占用的所有GDI资源的数量总和。
5.一种终端,其特征在于,所述终端包括:
存储器,用于存储程序代码;
处理器,用于调用所述存储器中存储的所述程序代码,执行如权利要求1或2所述的检测资源泄漏的方法。
6.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质存储有计算机程序,所述计算机程序当被终端执行时使所述终端执行如权利要求1或2所述的检测资源泄漏的方法。
CN201510413898.XA 2015-07-14 2015-07-14 一种检测资源泄漏的方法及装置 Active CN106708605B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510413898.XA CN106708605B (zh) 2015-07-14 2015-07-14 一种检测资源泄漏的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510413898.XA CN106708605B (zh) 2015-07-14 2015-07-14 一种检测资源泄漏的方法及装置

Publications (2)

Publication Number Publication Date
CN106708605A CN106708605A (zh) 2017-05-24
CN106708605B true CN106708605B (zh) 2021-08-24

Family

ID=58898677

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510413898.XA Active CN106708605B (zh) 2015-07-14 2015-07-14 一种检测资源泄漏的方法及装置

Country Status (1)

Country Link
CN (1) CN106708605B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107360317B (zh) * 2017-06-29 2020-12-01 湖南胜云光电科技有限公司 应用程序资源泄露的检测方法及移动终端、存储介质
CN107179950B (zh) * 2017-06-29 2020-10-27 努比亚技术有限公司 一种应用进程处理方法、移动终端以及计算机可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101206616A (zh) * 2006-12-19 2008-06-25 中国电信股份有限公司 一种图形界面程序的资源泄漏测试及问题定位方法
US7761852B2 (en) * 2003-11-26 2010-07-20 International Business Machines Corporation Fast detection of the origins of memory leaks when using pooled resources
CN102597970A (zh) * 2009-11-03 2012-07-18 国际商业机器公司 用于资源泄漏检测的系统和方法
CN103460194A (zh) * 2011-03-15 2013-12-18 爱立信(中国)通信有限公司 对资源泄漏的检测
CN104461741A (zh) * 2014-12-15 2015-03-25 北京奇虎科技有限公司 基于图形设备接口的计算设备优化方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8203937B2 (en) * 2008-10-02 2012-06-19 International Business Machines Corporation Global detection of resource leaks in a multi-node computer system
CN104516817B (zh) * 2012-05-15 2017-09-29 青岛海信移动通信技术股份有限公司 一种内存泄漏检测方法及装置
CN104182332B (zh) * 2013-05-21 2017-09-29 华为技术有限公司 判断资源泄漏、预测资源使用情况的方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7761852B2 (en) * 2003-11-26 2010-07-20 International Business Machines Corporation Fast detection of the origins of memory leaks when using pooled resources
CN101206616A (zh) * 2006-12-19 2008-06-25 中国电信股份有限公司 一种图形界面程序的资源泄漏测试及问题定位方法
CN102597970A (zh) * 2009-11-03 2012-07-18 国际商业机器公司 用于资源泄漏检测的系统和方法
CN103460194A (zh) * 2011-03-15 2013-12-18 爱立信(中国)通信有限公司 对资源泄漏的检测
CN104461741A (zh) * 2014-12-15 2015-03-25 北京奇虎科技有限公司 基于图形设备接口的计算设备优化方法及装置

Also Published As

Publication number Publication date
CN106708605A (zh) 2017-05-24

Similar Documents

Publication Publication Date Title
CN109901881B (zh) 应用程序的插件加载方法、装置、计算机设备及存储介质
CN110324793B (zh) 一种信息提醒的方法、装置及电子终端
CN104978180B (zh) 一种未处理事件的提示方法、装置及移动终端
CN110609780B (zh) 数据监控方法、装置、电子设备及存储介质
CN109543405B (zh) 一种隐私调用行为识别方法和电子设备
CN105376719A (zh) 信息推送方法和装置
CN112653670A (zh) 业务逻辑漏洞检测方法、装置、存储介质以及终端
CN114996103A (zh) 页面异常检测方法、装置、电子设备和存储介质
CN107797922B (zh) 应用页面的测试方法、电子装置及电子设备
CN106708605B (zh) 一种检测资源泄漏的方法及装置
CN109634702B (zh) 一种信息提示的方法、装置、电子设备及可读介质
CN109240916B (zh) 信息输出控制方法、装置及计算机可读存储介质
CN104503674A (zh) 一种截屏图片生成方法
CN111783010B (zh) 网页空白页面监测方法、装置、终端及存储介质
CN112840305B (zh) 字体切换方法及相关产品
CN109840113B (zh) 一种应用数据处理方法及其设备、存储介质、终端
CN111083145A (zh) 消息发送方法、装置及电子设备
CN106302821B (zh) 一种数据请求方法及其设备
CN115292246A (zh) 一种文档转码方法、装置及电子设备
CN109815429B (zh) 浏览器页面关闭处理方法和装置
CN113780163A (zh) 一种页面加载时间的检测方法、装置、电子设备及介质
CN113656286A (zh) 软件测试方法、装置、电子设备及可读存储介质
CN116997891A (zh) 行为监控方法、装置、终端设备及计算机可读存储介质
CN111124841A (zh) 一种异常页面的报警方法、装置及计算机系统
CN111124627A (zh) 应用程序的调起者确定方法、装置、终端及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20221114

Address after: 1402, Floor 14, Block A, Haina Baichuan Headquarters Building, No. 6, Baoxing Road, Haibin Community, Xin'an Street, Bao'an District, Shenzhen, Guangdong 518133

Patentee after: Shenzhen Yayue Technology Co.,Ltd.

Address before: 2, 518000, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District

Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd.