一种应用程序运行过程的内存管理方法及装置的制造方法

文档序号:9249108阅读:309来源:国知局
一种应用程序运行过程的内存管理方法及装置的制造方法
【技术领域】
[0001]本发明涉及一种应用程序运行过程的内存管理方法及装置。
【背景技术】
[0002]目前,安卓Andr1d系统已成为一个普遍采用的操作系统。通常,该操作系统下的各个应用程序在运行过程中需要占用采用Andr1d系统的设备中的内存。在运行应用程序过程中,打开执行任一界面时,将该界面的所有数据都存储至内存中。Android系统中应用程序的界面所占用的内存是一种堆栈累加的内存管理模式(如图1),应用程序所占用的内存会随着打开的界面数量的累加而不断增加。一般的,Android系统针对各个应用程序会预设一个允许使用内存,该允许使用内存具有一个上限值,当应用程序界面所占用的内存过大时,就有可能在运行过程中应用程序所占用的内存超过这个上限,从而造成系统出现内存泄漏。
[0003]现有技术中,针对出现内存泄露的情况,提供了这样一种解决方法:当判断出现内存泄漏时,立即关掉该应用程序所对应的进程,也就是,强制退出该应用程序。
[0004]显然,关掉该应用程序所对应的进程,使得用户所开启的应用程序被强制退出,这样影响了用户的操作体验。

【发明内容】

[0005]本发明实施例的目的在于提供一种应用程序运行过程的内存管理方法及装置,以减少应用程序运行过程中出现的内存泄露的现象。
[0006]为达到上述目的,本发明实施例公开了一种应用程序运行过程的内存管理方法,应用于采用安卓Andr1d系统的设备中,以堆栈累加的方式对内存进行管理,包括:
[0007]按照打开的应用程序中各个界面的打开顺序,将各个界面所占内存压入栈中;
[0008]其中,位于栈顶的当前显示的界面所占的内存包括:预先划分的该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存;位于非栈顶的隐藏界面所占的内存包括:预先划分的该界面的不可转移数据所占的内存;
[0009]所述隐藏界面的可转移数据被转换为文件形式存储至用户存储空间中;
[0010]当隐藏界面被打开时,该隐藏界面切换为当前显示界面,将该界面的文件形式的可转移数据,从用户存储空间中恢复至内存中;并将该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存压入栈顶。
[0011]较佳的,所述预先划分的该界面的可转移数据为该界面要加载的图片和/或文件;所述预先划分的该界面的不可转移数据为该界面除要加载的图片和/或文件之外的数据。
[0012]较佳的,所述隐藏界面的可转移数据被转换为文件形式存储至用户存储空间的步骤,包括:
[0013]当位于栈顶的当前显示的界面切换为隐藏界面时,将该界面可转移数据转换为文件形式存储至用户存储空间,并释放该界面可转移数据所占内存。
[0014]较佳的,所述将该界面的文件形式的可转移数据,从用户存储空间中恢复至内存中的步骤,包括:
[0015]将该界面的文件形式的可转移数据,从用户存储空间中恢复至第一内存中;所述第一内存为:该界面首次为当前显示界面时,可转移数据所占的内存。
[0016]较佳的,还包括:
[0017]当位于栈顶的当前显示的界面执行完时,释放该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存。
[0018]较佳的,通过本地编程接口 JNI调用预设的C/C++函数来实现所述隐藏界面的可转移数据被转换为文件形式存储至用户存储空间中;
[0019]所述当隐藏界面被打开时,该隐藏界面切换为当前显示界面,通过本地编程接口JNI调用预设的C/C++函数来实现将该界面的文件形式的可转移数据,从用户存储空间中恢复至内存中;并将该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存压入栈顶。
[0020]为达到上述目的,本发明实施例公开了一种应用程序运行过程的内存管理装置,应用于采用安卓Android系统的设备中,以堆栈累加的方式对内存进行管理,包括:
[0021]内存入栈模块,用于按照打开的应用程序中各个界面的打开顺序,将各个界面所占内存压入栈中;
[0022]其中,位于栈顶的当前显示的界面所占的内存包括:预先划分的该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存;位于非栈顶的隐藏界面所占的内存包括:预先划分的该界面的不可转移数据所占的内存;
[0023]数据存储模块,用于所述隐藏界面的可转移数据被转换为文件形式存储至用户存储空间中;
[0024]内存管理模块,用于当隐藏界面被打开时,该隐藏界面切换为当前显示界面,将该界面的文件形式的可转移数据,从用户存储空间中恢复至内存中;并将该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存压入栈顶。
[0025]较佳的,所述预先划分的该界面的可转移数据为该界面要加载的图片和/或文件;所述预先划分的该界面的不可转移数据为该界面除要加载的图片和/或文件之外的数据。
[0026]较佳的,所述数据存储模块,具体用于:
[0027]当位于栈顶的当前显示的界面切换为隐藏界面时,将该界面可转移数据转换为文件形式存储至用户存储空间,并释放该界面可转移数据所占内存。
[0028]较佳的,所述内存管理模块,包括:数据恢复子模块和压入栈顶子模块;其中,
[0029]所述数据恢复子模块,用于当隐藏界面被打开时,该隐藏界面切换为当前显示界面,将该界面的文件形式的可转移数据,从用户存储空间中恢复至内存中;
[0030]所述压入栈顶子模块,用于当隐藏界面被打开时,将该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存压入栈顶。
[0031]较佳的,所述数据恢复子模块,具体用于:
[0032]将该界面的文件形式的可转移数据,从用户存储空间中恢复至第一内存中;所述第一内存为:该界面首次为当前显示界面时,可转移数据所占的内存。
[0033]较佳的,所述内存管理装置还包括:内存释放模块;其中,
[0034]所述内存释放模块,用于当位于栈顶的当前显示的界面执行完时,释放该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存。
[0035]较佳的,所述数据存储模块,具体用于通过本地编程接口 JNI调用预设的C/C++函数来实现所述隐藏界面的可转移数据被转换为文件形式存储至用户存储空间中;
[0036]所述内存管理模块,具体用于:
[0037]当隐藏界面被打开时,该隐藏界面切换为当前显示界面,通过本地编程接口 JNI调用预设的C/C++函数来实现将该界面的文件形式的可转移数据,从用户存储空间中恢复至内存中;并将该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存压入栈顶。
[0038]本发明实施例提供的一种应用程序运行过程的内存管理方法及装置,预先对基于Andr1d系统的应用程序界面的数据进行划分,即将界面数据分为可转移数据和不可转移数据。这样,在应用程序的运行过程中,将隐藏界面的可转移数据以文件形式存储于用户存储空间中,因而不会占用内存中的存储空间,这
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1