一种基于Android系统的内存优化方法及系统的制作方法

文档序号:9750644阅读:600来源:国知局
一种基于Android系统的内存优化方法及系统的制作方法
【技术领域】
[0001 ]本发明涉及Android应用开发技术领域,尤其涉及一种基于Android系统的内存优化方法及系统。
【背景技术】
[0002]Android的程序都是由Java语言编写,所以Android的内存管理与Java的内存管理相似,内存的释放是由垃圾回收器来完成的,而垃圾回收器不是实时回收的,而且不能针对单个或指定程序进行回收。且Android的另一套内存管理是采取完全杀死进程的方法,这就使得无用的垃圾数据占据着内存,而被迫将有用的进程结束掉,内存没有得到合理有效的利用。
[0003]因此,现有技术还有待于改进和发展。

【发明内容】

[0004]鉴于现有技术的不足,本发明目的在于提供一种基于Android系统的内存优化方法及系统,旨在解决现有技术中Andro i d系统的程序中存在无用的垃圾数据占据着内存,而被迫将有用的进程结束掉,内存没有得到合理有效的利用缺陷。
[0005]本发明的技术方案如下:
一种基于Andro id系统的内存优化方法,其中,方法包括:
A、Android系统开机后,内存监测程序监测Android系统各进程占用的内存值;
B、获取用户输入的需要进行监控的目标程序名称,查询目标程序占用的内存值,判断目标程序占用的内存值是否大于用户设置的内存阀值;
C、若目标程序占用的内存值大于用户设置的内存阀值,释放目标程序占用的内存。
[0006]所述的基于Android系统的内存优化方法,其中,所述步骤A之前还包括:
S、预先将监测Android系统内各进程的内存值的内存监测程序注册为开机启动,并将内存监测程序设置为系统权限程序。
[0007]所述的基于Android系统的内存优化方法,其中,所述步骤B具体包括:
B1、通过binder与内存监测程序建立通信连接,接收用户输入的需要监控的目标程序名称;
B2、内存监测程序解析出目标程序名称对应的程序进程号,根据程序进程号查询对应的目标程序占用的内存值;
B3、判断目标程序占用的内存值是否超过用户设置的内存阀值。
[0008]所述的基于Android系统的内存优化方法,其中,所述步骤C具体包括:
Cl、若目标程序占用的内存值大于用户设置的内存阀值,Android系统接收用户的关闭进程指令,向内存监测程序发送内存释放目标程序信号;
C2、执行回收内存操作,释放目标程序占用的内存。
[0009]所述的基于Android系统的内存优化方法,其中,所述步骤C之后还包括: D、Android系统执行一次内存释放操作后,休眠一预定时间后,继续监测Android系统各进程的内存值。
[OO1O]—种基于Android系统的内存优化系统,其中,系统包括:
监测模块,用于Android系统开机后,内存监测程序监测Android系统各进程占用的内存值;
查询与判断模块,用于获取用户输入的需要进行监控的目标程序名称,查询目标程序占用的内存值,判断目标程序占用的内存值是否大于用户设置的内存阀值;
内存释放模块,用于若目标程序占用的内存值大于用户设置的内存阀值,释放目标程序占用的内存。
[0011 ]所述的基于Android系统的内存优化系统,其中,所述系统还包括:
预先设置模块,用于预先将检监测Android系统内各进程的内存值的内存监测程序注册为开机启动,并将内存监测程序设置为系统权限程序。
[0012]所述的基于Android系统的内存优化系统,其中,所述查询与判断模块具体包括:
目标程序名称获取单元,用于通过binder与内存监测程序建立通信连接,接收用户输入的需要监控的目标程序名称;
解析与查询单元,用于内存监测程序解析出目标程序名称对应的程序进程号,根据程序进程号查询对应的目标程序占用的内存值;
判断单元,用于判断目标程序占用的内存值是否超过预先设置的内存阀值。
[0013]所述的基于Android系统的内存优化系统,其中,所述内存释放模块具体包括:
内存释放信号发送单元,用于若目标程序占用的内存值大于用户设置的内存阀值,Android系统接收用户的关闭进程指令,向内存监测程序发送内存释放目标程序信号;指令执行单元,用于执行回收内存操作,释放目标程序占用的内存。
[0014]所述的基于Android系统的内存优化系统,其中,所述系统还包括:
休眠模块,用于Android系统执行一次内存释放操作后,休眠一预定时间后,继续监测Andr ο i d系统各进程的内存值。
[0015]有益效果:本发明提供了一种基于Android系统的内存优化方法及系统,可以主动并实时地监测内存的使用情况并做到垃圾内存及时回收,同时还可实现指定单个或多个程序进行实施,并提供用户预设阀值的,为用户可以管理自己设备的内存使用提供了方便。
【附图说明】
[0016]图1为本发明的一种基于Android系统的内存优化方法的较佳实施例的流程图。
[0017]图2为本发明的一种基于Android系统的内存优化方法的具体应用实施例的流程图。
[0018]图3为本发明的一种基于Android系统的内存优化系统的较佳实施例的功能原理框图。
【具体实施方式】
[0019]为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0020]本发明中适用于采用Android系统的设备,具体地本发明实施例中用Android虚拟机为例进行介绍。Android虚拟机可以在PC端(电脑上)安装运行模拟Android系统,并可以在电脑端进行几乎任何Android手机上可以进行的操作,甚至还可以像Android手机一样连接电脑,被手机助手监测到,可以模拟所有官方版本的安卓系统。
[0021]本发明提供了一种基于Android系统的内存优化方法的较佳实施例的流程图,如图1所示,所述方法包括:
步骤S100、Android系统开机后,内存监测程序监测Android系统各进程占用的内存值。
[0022]具体实施时,当监测到监测Android虚拟机开机后,利用内存监测程序监测Android虚拟机中的各进程的内存堆栈使用情况。具体是在init.rc文件中注册该程序内存监测程序CauseGC,监测Android虚拟机各进程占用的内存值。
[0023]步骤S200、获取用户输入的需要进行监控的目标程序名称,查询目标程序占用的内存值,判断目标程序占用的内存值是否大于用户设置的内存阀值。
[0024]具体实施时,用户可通过一种通信机制与内存监测程序建立通信,从而使目标程序可获取用户输入的目标程序名称及用户输入的目标程序所占用的内存阀值。用户输入的目标程序名称可以是一个也可以是多个。当有多个程序需要监测和优化时,可同时传递多个参数,无参数传入时,默认对所有程序进行默认值优化。查询目标程序占用的内存值,并将目标程序占用的内存值与用户设置的内存阀值进行比较,判断目标程序占用的内存值是否大于用户设置的内存阀值。
[0025]步骤S300、若目标程序占用的内存值大于用户设置的内存阀值,释放目标程序占用的内存。
[0026]具体实施时,若目标程序占用的内存值大于用户设置的内存阀值,执行内存回收操作,释放目标程序占用的内存,并重新分配使用。
[0027]进一步的,所述步骤S100之前还包括:
步骤S1、预先将监测Android系统内各进程的内存值的内存监测程序注册为开机启动,并将内存监测程序设置为系统权限程序。
[0028]具体实施时,预先在开机启动项init.rc文件中注册内存监测程序CauseGC开机启动,并设置为系统权限程序,从而监控所有进程的内存使用情况。
[0029]进一步地实施例中,所述步骤S300之后还包括:
步骤S400、Android系统执行一次内存释放操作后,休眠一预定时间后,继续监测Andr ο i d系统各进程的内存值。
[0030]具体实施时,内存释放操作也需要时间和资源,因此,GC操作不能过于频繁,否则会占用更多的CPU资源,减慢系统执行的速度。因此在执行完一次内存回收后,休眠数秒后,再去循环监控内存的使用情况。具体的可休眠3-5s。
[0031]进一步的实施例中,其中步骤S200具体包括:
步骤S201、通过binder与内存监测程序建立通信连接,接收用户输入的需要监控的目标程序名称;
步骤S202、内存监测程序解析出目标程序名称对应的程序进程号,根据程序进程号查询对应的目标程序占用的内存值;
步骤S203、判断目标程序占用的内存值是否超过用户设置的内存阀值。
[0032]具体实施时,用户通过binder与CauseGC建立通信,并传递所要监测和优化的程序名称appName,以及设置给该程序所占用的内存阀值threshHold,当有多个程序需要监测和优化时,可同时传递多个参数,无参数传入时,默认对所有程序进行默认值优化;
CauseGC接收到用户传入的appName和threshHoId后,通过获取运行时状态机Runtime.getRuntime(),并执行shell 命令procrank grep appName 并解析出其中的第一个参数即为PID的值为程序进程号。SYSTEMUI_PID='procrank 2>&1 | busybox grepappName | busybox awk '{print $1},';
创建以一定时间间隔的while循环获取该PID所占用的内存大小,可通过shell命令procrank grep appName并解析出其中的第四个参数即为PSS的值为该程序目前所占用的内存.SYSTEMUI_MEM='procrank 2>&1 | busybox grep appName | busybox awk ’{print $5}’ ;
将该程序目前所占用的内存大小SYSTEMUI_MEM与用户预设阀值threshHold进行比较。
[0033
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1