CN106708605A - 一种检测资源泄漏的方法及装置 - Google Patents
一种检测资源泄漏的方法及装置 Download PDFInfo
- Publication number
- CN106708605A CN106708605A CN201510413898.XA CN201510413898A CN106708605A CN 106708605 A CN106708605 A CN 106708605A CN 201510413898 A CN201510413898 A CN 201510413898A CN 106708605 A CN106708605 A CN 106708605A
- Authority
- CN
- China
- Prior art keywords
- gdi
- resource
- shared
- threshold value
- predetermined number
- 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.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
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 Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (12)
1.一种检测资源泄漏的方法,其特征在于,包括:
获取处于运行状态的进程所占用的图形设备接口GDI资源的数量;
判断所述进程所占用的GDI资源的数量是否大于所述进程对应的预设数量阈值;
当所述进程所占用的GDI资源的数量大于所述预设数量阈值时,确定检测到GDI资源泄漏。
2.根据权利要求1所述方法,其特征在于,所述获取处于运行状态的进程所占用的GDI资源的数量包括:
以预设时长为周期获取所述进程所占用的GDI资源的数量。
3.根据权利要求2所述方法,其特征在于,所述判断所述进程所占用的GDI资源的数量是否大于所述进程对应的预设数量阈值之后,还包括:
当所述进程所占用的GDI资源的数量大于所述预设数量阈值时,将所述预设数量阈值与预设步长相加,以获取经过更新的所述进程对应的预设数量阈值;
所述以预设时长为周期获取所述进程所占用的GDI资源的数量之后,还包括:
判断所述进程所占用的GDI资源的数量是否大于所述经过更新的预设数量阈值;
当所述进程所占用的GDI资源的数量大于所述经过更新的预设数量阈值时,确定检测到GDI资源泄漏。
4.根据权利要求1所述方法,其特征在于,所述获取处于运行状态的进程所占用的GDI资源的数量包括:
监测GDI资源信息,所述GDI资源信息包括GDI资源标识、其对应GDI资源所属的进程以及各个所述进程所占用的所述GDI资源的数量;
在所述GDI资源信息中获取所述处于运行状态的进程所占用的所有GDI资源的数量总和。
5.根据权利要求1~4任一项所述方法,其特征在于,所述确定检测到GDI资源泄漏之后,还包括:
获取所述进程对应的应用程序;
根据所述应用程序,确定产生所述GDI资源泄漏的操作。
6.根据权利要求1~4任一项所述方法,其特征在于,所述确定检测到GDI资源泄漏之后,还包括:
生成所述进程对应的资源泄漏提醒信息;
根据所述资源泄漏提醒信息进行提醒。
7.一种检测资源泄漏的装置,其特征在于,包括:
资源数量获取模块,用于获取处于运行状态的进程所占用的GDI资源的数量;
资源数量判断模块,用于判断所述进程所占用的GDI资源的数量是否大于所述进程对应的预设数量阈值;
资源泄漏确定模块,用于当所述进程所占用的GDI资源的数量大于所述预设数量阈值时,确定检测到GDI资源泄漏。
8.根据权利要求7所述装置,其特征在于,
所述资源数量获取模块,用于以预设时长为周期获取所述进程所占用的GDI资源的数量。
9.根据权利要求8所述装置,其特征在于,所述装置还包括:
阈值更新模块,用于当所述资源数量判断模块判断所述进程所占用的GDI资源的数量大于所述预设数量阈值时,将所述预设数量阈值与预设步长相加,以获取经过更新的所述进程对应的预设数量阈值;
所述资源数量判断模块,还用于所述资源数量获取模块以所述预设时长为周期获取所述进程所占用的GDI资源的数量之后,判断所述进程所占用的GDI资源的数量是否大于所述经过更新的预设数量阈值;
所述资源泄漏确定模块,还用于当所述资源数量判断模块判断所述进程所占用的GDI资源的数量大于所述经过更新的预设数量阈值时,确定检测到GDI资源泄漏。
10.根据权利要求7所述装置,其特征在于,所述资源数量获取模块包括:
资源信息监测单元,用于监测GDI资源信息,所述GDI资源信息包括GDI资源标识、其对应GDI资源所属的进程以及各个所述进程所占用的所述GDI资源的数量;
资源数量获取单元,用于在所述GDI资源信息中获取所述处于运行状态的进程所占用的所有GDI资源的数量总和。
11.根据权利要求7~10任一项所述装置,其特征在于,所述装置还包括:
应用程序获取模块,用于所述资源泄漏确定模块确定检测到GDI资源泄漏之后,获取所述进程对应的应用程序;
操作确定模块,用于根据所述应用程序,确定产生所述GDI资源泄漏的操作。
12.根据权利要求7~10任一项所述装置,其特征在于,所述装置还包括:
提醒信息生成模块,用于所述资源泄漏确定模块确定检测到GDI资源泄漏之后,生成所述进程对应的资源泄漏提醒信息;
提醒模块,用于根据所述资源泄漏提醒信息进行提醒。
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 true CN106708605A (zh) | 2017-05-24 |
CN106708605B 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) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107179950A (zh) * | 2017-06-29 | 2017-09-19 | 努比亚技术有限公司 | 一种应用进程处理方法、移动终端以及计算机可读存储介质 |
CN107360317A (zh) * | 2017-06-29 | 2017-11-17 | 努比亚技术有限公司 | 应用程序资源泄露的检测方法及移动终端、存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101206616A (zh) * | 2006-12-19 | 2008-06-25 | 中国电信股份有限公司 | 一种图形界面程序的资源泄漏测试及问题定位方法 |
US20100085870A1 (en) * | 2008-10-02 | 2010-04-08 | International Business Machines Corporation | Global detection of resource leaks in a multi-node computer system |
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 | 爱立信(中国)通信有限公司 | 对资源泄漏的检测 |
CN104182332A (zh) * | 2013-05-21 | 2014-12-03 | 华为技术有限公司 | 判断资源泄漏、预测资源使用情况的方法及装置 |
CN104461741A (zh) * | 2014-12-15 | 2015-03-25 | 北京奇虎科技有限公司 | 基于图形设备接口的计算设备优化方法及装置 |
CN104516817A (zh) * | 2012-05-15 | 2015-04-15 | 青岛海信移动通信技术股份有限公司 | 一种内存泄漏检测方法及装置 |
-
2015
- 2015-07-14 CN CN201510413898.XA patent/CN106708605B/zh active Active
Patent Citations (8)
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 | 中国电信股份有限公司 | 一种图形界面程序的资源泄漏测试及问题定位方法 |
US20100085870A1 (en) * | 2008-10-02 | 2010-04-08 | International Business Machines Corporation | Global detection of resource leaks in a multi-node computer system |
CN102597970A (zh) * | 2009-11-03 | 2012-07-18 | 国际商业机器公司 | 用于资源泄漏检测的系统和方法 |
CN103460194A (zh) * | 2011-03-15 | 2013-12-18 | 爱立信(中国)通信有限公司 | 对资源泄漏的检测 |
CN104516817A (zh) * | 2012-05-15 | 2015-04-15 | 青岛海信移动通信技术股份有限公司 | 一种内存泄漏检测方法及装置 |
CN104182332A (zh) * | 2013-05-21 | 2014-12-03 | 华为技术有限公司 | 判断资源泄漏、预测资源使用情况的方法及装置 |
CN104461741A (zh) * | 2014-12-15 | 2015-03-25 | 北京奇虎科技有限公司 | 基于图形设备接口的计算设备优化方法及装置 |
Non-Patent Citations (1)
Title |
---|
李鹏: "计算机系统资源泄露的原因出预防措施探讨", 《民营科技》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107179950A (zh) * | 2017-06-29 | 2017-09-19 | 努比亚技术有限公司 | 一种应用进程处理方法、移动终端以及计算机可读存储介质 |
CN107360317A (zh) * | 2017-06-29 | 2017-11-17 | 努比亚技术有限公司 | 应用程序资源泄露的检测方法及移动终端、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106708605B (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103984626B (zh) | 一种生成测试用例脚本的方法及装置 | |
US8645912B2 (en) | System and method for use in replaying software application events | |
CN107391379A (zh) | 接口自动测试方法及装置 | |
CN107102936A (zh) | 一种流畅度的评估方法和移动终端以及存储介质 | |
CN107450837B (zh) | 响应黑屏手势的方法、装置、存储介质及移动终端 | |
CN104375912B (zh) | 移动终端卡顿的测量方法与装置 | |
CN108829457A (zh) | 应用程序预测模型更新方法、装置、存储介质及终端 | |
CN107450831A (zh) | 基于双系统的笔迹显示处理方法和系统、存储介质及设备 | |
CN106502490A (zh) | 一种来电提醒方法及终端 | |
CN104035683A (zh) | 一种通讯终端分屏多任务交互方法 | |
CN102591655A (zh) | 一种图标按钮的实现方法和装置 | |
CN107402713B (zh) | 加快黑屏手势处理的方法、装置、存储介质及移动终端 | |
CN107948640A (zh) | 视频播放测试方法、装置、电子设备和存储介质 | |
CN113806183B (zh) | 应用卡顿处理方法、装置、设备、存储介质和程序产品 | |
CN106250080A (zh) | 图像显示方法及装置 | |
CN104572086A (zh) | 基于安卓设备的fps值获取方法及获取系统 | |
CN104216826A (zh) | 测试方法及装置 | |
CN105847325A (zh) | 应用客户端的调试方法及装置 | |
CN106708605A (zh) | 一种检测资源泄漏的方法及装置 | |
CN104809054A (zh) | 实现程序测试的方法和系统 | |
CN107679423A (zh) | 分区完整性检查方法及装置 | |
CN106823372A (zh) | 在线游戏启动方法、装置和终端 | |
CN104657253B (zh) | 一种显示可视化提示的方法及移动终端 | |
CN104714626B (zh) | 一种信息处理方法及电子设备 | |
CN106648703A (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 |
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. |
|
TR01 | Transfer of patent right |