1.一种内存分配方法,其特征在于,包括:
统计应用的堆内存使用数据;
计算出所述应用运行时所需的堆内存大小;
在启动时根据所述所需的堆内存大小为所述应用分配堆内存。
2.根据权利要求1所述的方法,其特征在于,统计所述应用的堆内存使用数据包括:以所述应用对应的进程为单位统计所述应用的堆内存使用数据,其中,当进程创建时开始统计,进程结束时停止统计。
3.根据权利要求2所述的方法,其特征在于,计算出所述应用运行时所需的堆内存大小包括:在所述应用对应进程的运行过程中,当检测到有组件创建和退出时,统计所述进程的堆内存大小;
在所述应用对应的进程结束时,计算所述进程使用的堆内存大小的平均值和堆内存大小的最大值;
根据所述堆内存大小的平均值和所述堆内存大小的最大值确定所述应用运行时所需的堆内存大小。
4.根据权利要求3所述的方法,其特征在于,计算所述进程使用堆内存大小的平均值和所述堆内存大小的最大值包括:在所述应用为首次使用,所述应用退出后,根据收集的堆内存使用数据,计算所述堆内存使用数据的平均值,将所述堆内存使用数据的平均值确定为所述堆内存大小的平均值,所述堆内存使用数据中的最大值确定为所述堆内存大小的最大值。
5.根据权利要求4所述的方法,其特征在于,在启动时根据所述所需的堆内存大小为所述应用分配堆内存包括:当所述应用首次使用时,使用安卓运行时ART虚拟机参数的默认值作为堆内存大小的初始值,其他值均使用ART虚拟机的默认配置。
6.根据权利要求3所述的方法,其特征在于,计算所述进程使用的堆内存大小的平均值和堆内存大小的最大值包括:在所述应用为非首次使用,所述应用本次退出后,选取上次使用的最大值和本次收集的堆内存使用数据的最大值,确定为所述堆内存大小的最大值;上次的平均值和本次的平均值的均值,确定为所述堆内存大小的平均值。
7.根据权利要求6所述的方法,其特征在于,在启动时根据所述所需的堆内存大小为所述应用分配堆内存包括:当所述应用非首次使用时,使用所述堆内存大小的平均值作为ART虚拟机堆内存的初始值。
8.根据权利要求3至7中任一项所述的方法,其特征在于,在启动时根据所述所需的堆内存大小为所述应用分配堆内存包括:当所述应用在前台运行时,保持堆内存大小的最小值为所述堆内存大小的平均值;当堆内存不足待申请的堆内存时,执行垃圾收集GC操作,如果GC操作后堆内存仍不足待申请的堆内存,将堆内存大小扩展为所述堆内存大小的最大值;如果所述待申请的堆内存超过所述堆内存大小的最大值时,根据ART默认的堆内存分配机制处理;
当所述应用在前台运行时,内存回收后,堆内存已使用的大小小于所述堆内存大小的平均值时,保持堆内存大小为所述堆内存大小的平均值;如果大于所述堆内存大小的平均值但小于所述堆内存大小的最大值,则保持为所述堆内存大小的最大值;若大于所述堆内存大小的最大值时,按ART默认机制处理;
当所述应用推到后台时,执行GC操作,并释放所述应用的堆内存,采用ART默认内存管理机制;
当所述应用从后台切到前台时,如果堆内存大小小于所述堆内存大小的平均值,则设置堆内存大小为所述堆内存大小的平均值;如果大于所述堆内存大小的平均值但小于所述堆内存大小的最大值,则设置堆内存大小为所述堆内存大小的最大值;如果大于所述堆内存大小的最大值,则保持不变。
9.一种移动终端,其特征在于,所述移动终端包括处理器、存储器及通信总线;
所述通信总线用于实现处理器和存储器之间的连接通信;
所述处理器用于执行存储器中存储的内存分配程序,以实现以下步骤:统计应用的堆内存使用数据;
计算出所述应用运行时所需的堆内存大小;
在启动时根据所述所需的堆内存大小为所述应用分配堆内存。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1-8中任一项所述内存分配方法的步骤。