[发明专利]一种应用程序的管理方法及电子设备有效
申请号: | 202111157747.4 | 申请日: | 2021-09-30 |
公开(公告)号: | CN114020652B | 公开(公告)日: | 2022-12-30 |
发明(设计)人: | 肖名鹏;雒云;李鹏 | 申请(专利权)人: | 荣耀终端有限公司 |
主分类号: | G06F12/06 | 分类号: | G06F12/06;G06F9/50 |
代理公司: | 深圳中一联合知识产权代理有限公司 44414 | 代理人: | 吴冬羽 |
地址: | 518040 广东省深圳市福田区香蜜湖街道*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 应用程序 管理 方法 电子设备 | ||
本申请实施例提供一种应用程序的管理方法,包括:在应用程序运行过程中,监测图形缓冲区的申请结果;若图像缓冲区的申请结果为申请失败,则根据申请结果分析失败类型;若失败类型为内存映射失败,则获取应用程序的虚拟内存占用情况;若应用程序占用的虚拟内存超过预设阈值,则启动所述应用程序的自杀恢复功能,以释放被该应用程序占用的内存,避免由于内存泄露导致系统崩溃、卡死等严重后果,减轻对用户使用的影响。
技术领域
本申请涉及电子领域,尤其涉及一种应用程序的管理方法及电子设备。
背景技术
内存泄露(memory leak),是指应用程序中已动态分配的堆内存由于某种原因未释放或无法及时释放,造成系统内存的浪费的现象。
然而,由于内存泄露不是过错类错误,目前存在难检测、难定位的问题,最终就会导致内存溢出、应用程序运行异常甚至系统卡死等严重后果。
发明内容
本申请提供了一种应用程序的管理方法,可以避免目前由于内存泄漏导致的系统卡死的情况。
第一方面,提供了一种应用程序的管理方法,包括:在应用程序运行过程中,监测图形缓冲区的申请结果;若图像缓冲区的申请结果为申请失败,则根据申请结果分析失败类型;若失败类型为内存映射失败,则获取应用程序的虚拟内存占用情况;若应用程序占用的虚拟内存超过预设阈值,则启动所述应用程序的自杀恢复功能。
在应用程序运行过程中,为了绘制界面和保存绘制的数据,运行的进程会向系统内存申请图形缓冲区(graphicbuffer)。
示例性的,可以通过graphicbuffermapper申请进程间共享的图形缓冲区,也可以通过graphicbufferallocator进程接口申请应用程序使用的图形缓冲区。
由于向内存管理器申请图形缓冲区时有可能存在内存泄漏的情况,因此可以在应用程序的进程发起图形缓冲区申请时,启动内存申请监测功能来监测图形缓冲区的申请结果。
需要说明的是,也可以在应用程序开始运行时就启动内存申请监测功能,还可以实时获取应用程序的虚拟内存占用情况,在应用程序的虚拟内存占用超过某一数值时(这个数值可以根根据实际应用场景来设定,本申请对此不加以限制),开启内存申请监测功能,还可以是在应用程序的虚拟内存占用超过某一数值且该应用程序的进程发起图形缓冲区申请时才启动内存申请监测功能,当然还可以在其他情况下启动内存申请监测功能。
示例性的,上述开启内存申请监测可以包括:用户主动开启内存申请监测功能的方式、电子设备自动开启内存申请监测功能的方式以及默认开启内存申请监测功能的方式。
上述图形缓冲区申请的申请结果包括申请成功和申请失败。
在系统可用内存满足该申请,且申请到的内存能够映射到该进程的虚拟内存的地址时,内存管理器会返回申请成功的结果。
在系统可用内存过少(申请的图形缓冲区占用的内存大于系统可用内存)、申请到的内存无法映射到进程的虚拟内存的地址中以及其他异常情况时,内存管理器会返回申请失败的结果。
其中,可以通过/proc/self/status函数来调出应用程序的虚拟内存占用情况。
其中,预设阈值可以根据应用程序来设置,例如对于32位的应用程序,上述预设阈值可以设置为3.7G。当然对于32位的应用程序,上述预设阈值可以设置为比3.7G低的某些数值,例如3.5G、3.2G等。
以上可以看出,通过监测应用程序的进程向系统内存申请图形缓冲区的情况,在内存申请失败且是由于虚拟内存占用过多的情况下,启动自杀恢复功能,以释放被该应用程序占用的内存,避免由于内存泄露导致系统崩溃、卡死等严重后果,减轻对用户使用的影响。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于荣耀终端有限公司,未经荣耀终端有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111157747.4/2.html,转载请声明来源钻瓜专利网。