[发明专利]一种内存分配方法、移动终端以及计算机可读存储介质有效
申请号: | 201710498643.7 | 申请日: | 2017-06-27 |
公开(公告)号: | CN107357656B | 公开(公告)日: | 2020-10-27 |
发明(设计)人: | 刘磊 | 申请(专利权)人: | 海南飞特同创科技有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 深圳市恒程创新知识产权代理有限公司 44542 | 代理人: | 赵爱蓉 |
地址: | 578101 海南省儋州市洋浦经*** | 国省代码: | 海南;46 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 分配 方法 移动 终端 以及 计算机 可读 存储 介质 | ||
1.一种内存分配方法,其特征在于,包括:
统计应用的堆内存使用数据;
计算出所述应用运行时所需的堆内存大小;
在启动时根据所述所需的堆内存大小为所述应用分配堆内存;
其中,所述统计所述应用的堆内存使用数据包括:
以所述应用对应的进程为单位统计所述应用的堆内存使用数据,其中,当进程创建时开始统计,进程结束时停止统计。
2.根据权利要求1所述的方法,其特征在于,计算出所述应用运行时所需的堆内存大小包括:
在所述应用对应进程的运行过程中,当检测到有组件创建和退出时,统计所述进程的堆内存大小;
在所述应用对应的进程结束时,计算所述进程使用的堆内存大小的平均值和堆内存大小的最大值;
根据所述堆内存大小的平均值和所述堆内存大小的最大值确定所述应用运行时所需的堆内存大小。
3.根据权利要求2所述的方法,其特征在于,计算所述进程使用堆内存大小的平均值和所述堆内存大小的最大值包括:
在所述应用为首次使用,所述应用退出后,根据收集的堆内存使用数据,计算所述堆内存使用数据的平均值,将所述堆内存使用数据的平均值确定为所述堆内存大小的平均值,所述堆内存使用数据中的最大值确定为所述堆内存大小的最大值。
4.根据权利要求3所述的方法,其特征在于,在启动时根据所述所需的堆内存大小为所述应用分配堆内存包括:
当所述应用首次使用时,使用安卓运行时ART虚拟机参数的默认值作为堆内存大小的初始值,其他值均使用ART虚拟机的默认配置。
5.根据权利要求2所述的方法,其特征在于,计算所述进程使用的堆内存大小的平均值和堆内存大小的最大值包括:
在所述应用为非首次使用,所述应用本次退出后,选取上次使用的最大值和本次收集的堆内存使用数据的最大值,确定为所述堆内存大小的最大值;上次的平均值和本次的平均值的均值,确定为所述堆内存大小的平均值。
6.根据权利要求5所述的方法,其特征在于,在启动时根据所述所需的堆内存大小为所述应用分配堆内存包括:
当所述应用非首次使用时,使用所述堆内存大小的平均值作为ART虚拟机堆内存的初始值。
7.根据权利要求2至6中任一项所述的方法,其特征在于,在启动时根据所述所需的堆内存大小为所述应用分配堆内存包括:
当所述应用在前台运行时,保持堆内存大小的最小值为所述堆内存大小的平均值;当堆内存不足待申请的堆内存时,执行垃圾收集GC操作,如果GC操作后堆内存仍不足待申请的堆内存,将堆内存大小扩展为所述堆内存大小的最大值;如果所述待申请的堆内存超过所述堆内存大小的最大值时,根据ART默认的堆内存分配机制处理;
当所述应用在前台运行时,内存回收后,堆内存已使用的大小小于所述堆内存大小的平均值时,保持堆内存大小为所述堆内存大小的平均值;如果大于所述堆内存大小的平均值但小于所述堆内存大小的最大值,则保持为所述堆内存大小的最大值;若大于所述堆内存大小的最大值时,按ART默认机制处理;
当所述应用推到后台时,执行GC操作,并释放所述应用的堆内存,采用ART默认内存管理机制;
当所述应用从后台切到前台时,如果堆内存大小小于所述堆内存大小的平均值,则设置堆内存大小为所述堆内存大小的平均值;如果大于所述堆内存大小的平均值但小于所述堆内存大小的最大值,则设置堆内存大小为所述堆内存大小的最大值;如果大于所述堆内存大小的最大值,则保持不变。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于海南飞特同创科技有限公司,未经海南飞特同创科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710498643.7/1.html,转载请声明来源钻瓜专利网。