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

技术编号:12175339 阅读:78 留言:0更新日期:2015-10-08 12:52
本发明专利技术实施例提供的一种应用程序运行过程的内存管理方法及装置,应用于采用Andriod系统的设备中,以堆栈累加的方式对内存进行管理,该方法包括:按照打开的应用程序中各个界面的打开顺序,将各个界面所占内存压入栈中;所述隐藏界面的可转移数据被转换为文件形式存储至用户存储空间中;当隐藏界面被打开时,该隐藏界面切换为当前显示界面,将该界面的文件形式的可转移数据,从用户存储空间中恢复至内存中;将该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存压入栈顶。应用本发明专利技术实施例,降低了应用程序运行过程中随着打开界面的增多而超过预设的内存使用上限的可能性,从而减少了应用程序运行过程中出现的内存泄露的现象。

【技术实现步骤摘要】

本专利技术涉及一种应用程序运行过程的内存管理方法及装置
技术介绍
目前,安卓Andr1d系统已成为一个普遍采用的操作系统。通常,该操作系统下的各个应用程序在运行过程中需要占用采用Andr1d系统的设备中的内存。在运行应用程序过程中,打开执行任一界面时,将该界面的所有数据都存储至内存中。Android系统中应用程序的界面所占用的内存是一种堆栈累加的内存管理模式(如图1),应用程序所占用的内存会随着打开的界面数量的累加而不断增加。一般的,Android系统针对各个应用程序会预设一个允许使用内存,该允许使用内存具有一个上限值,当应用程序界面所占用的内存过大时,就有可能在运行过程中应用程序所占用的内存超过这个上限,从而造成系统出现内存泄漏。现有技术中,针对出现内存泄露的情况,提供了这样一种解决方法:当判断出现内存泄漏时,立即关掉该应用程序所对应的进程,也就是,强制退出该应用程序。显然,关掉该应用程序所对应的进程,使得用户所开启的应用程序被强制退出,这样影响了用户的操作体验。
技术实现思路
本专利技术实施例的目的在于提供一种应用程序运行过程的内存管理方法及装置,以减少应用程序运行过程中出现的内存泄露的现象。为达到上述目的,本专利技术实施例公开了一种应用程序运行过程的内存管理方法,应用于采用安卓Andr1d系统的设备中,以堆栈累加的方式对内存进行管理,包括:按照打开的应用程序中各个界面的打开顺序,将各个界面所占内存压入栈中;其中,位于栈顶的当前显示的界面所占的内存包括:预先划分的该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存;位于非栈顶的隐藏界面所占的内存包括:预先划分的该界面的不可转移数据所占的内存;所述隐藏界面的可转移数据被转换为文件形式存储至用户存储空间中;当隐藏界面被打开时,该隐藏界面切换为当前显示界面,将该界面的文件形式的可转移数据,从用户存储空间中恢复至内存中;并将该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存压入栈顶。较佳的,所述预先划分的该界面的可转移数据为该界面要加载的图片和/或文件;所述预先划分的该界面的不可转移数据为该界面除要加载的图片和/或文件之外的数据。较佳的,所述隐藏界面的可转移数据被转换为文件形式存储至用户存储空间的步骤,包括:当位于栈顶的当前显示的界面切换为隐藏界面时,将该界面可转移数据转换为文件形式存储至用户存储空间,并释放该界面可转移数据所占内存。较佳的,所述将该界面的文件形式的可转移数据,从用户存储空间中恢复至内存中的步骤,包括:将该界面的文件形式的可转移数据,从用户存储空间中恢复至第一内存中;所述第一内存为:该界面首次为当前显示界面时,可转移数据所占的内存。较佳的,还包括:当位于栈顶的当前显示的界面执行完时,释放该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存。较佳的,通过本地编程接口 JNI调用预设的C/C++函数来实现所述隐藏界面的可转移数据被转换为文件形式存储至用户存储空间中;所述当隐藏界面被打开时,该隐藏界面切换为当前显示界面,通过本地编程接口JNI调用预设的C/C++函数来实现将该界面的文件形式的可转移数据,从用户存储空间中恢复至内存中;并将该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存压入栈顶。为达到上述目的,本专利技术实施例公开了一种应用程序运行过程的内存管理装置,应用于采用安卓Android系统的设备中,以堆栈累加的方式对内存进行管理,包括:内存入栈模块,用于按照打开的应用程序中各个界面的打开顺序,将各个界面所占内存压入栈中;其中,位于栈顶的当前显示的界面所占的内存包括:预先划分的该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存;位于非栈顶的隐藏界面所占的内存包括:预先划分的该界面的不可转移数据所占的内存;数据存储模块,用于所述隐藏界面的可转移数据被转换为文件形式存储至用户存储空间中;内存管理模块,用于当隐藏界面被打开时,该隐藏界面切换为当前显示界面,将该界面的文件形式的可转移数据,从用户存储空间中恢复至内存中;并将该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存压入栈顶。较佳的,所述预先划分的该界面的可转移数据为该界面要加载的图片和/或文件;所述预先划分的该界面的不可转移数据为该界面除要加载的图片和/或文件之外的数据。较佳的,所述数据存储模块,具体用于:当位于栈顶的当前显示的界面切换为隐藏界面时,将该界面可转移数据转换为文件形式存储至用户存储空间,并释放该界面可转移数据所占内存。较佳的,所述内存管理模块,包括:数据恢复子模块和压入栈顶子模块;其中,所述数据恢复子模块,用于当隐藏界面被打开时,该隐藏界面切换为当前显示界面,将该界面的文件形式的可转移数据,从用户存储空间中恢复至内存中;所述压入栈顶子模块,用于当隐藏界面被打开时,将该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存压入栈顶。较佳的,所述数据恢复子模块,具体用于:将该界面的文件形式的可转移数据,从用户存储空间中恢复至第一内存中;所述第一内存为:该界面首次为当前显示界面时,可转移数据所占的内存。较佳的,所述内存管理装置还包括:内存释放模块;其中,所述内存释放模块,用于当位于栈顶的当前显示的界面执行完时,释放该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存。较佳的,所述数据存储模块,具体用于通过本地编程接口 JNI调用预设的C/C++函数来实现所述隐藏界面的可转移数据被转换为文件形式存储至用户存储空间中;所述内存管理模块,具体用于:当隐藏界面被打开时,该隐藏界面切换为当前显示界面,通过本地编程接口 JNI调用预设的C/C++函数来实现将该界面的文件形式的可转移数据,从用户存储空间中恢复至内存中;并将该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存压入栈顶。本专利技术实施例提供的一种应用程序运行过程的内存管理方法及装置,预先对基于Andr1d系统的应用程序界面的数据进行划分,即将界面数据分为可转移数据和不可转移数据。这样,在应用程序的运行过程中,将隐藏界面的可转移数据以文件形式存储于用户存储空间中,因而不会占用内存中的存储空间,这当前第1页1 2 3 4 本文档来自技高网...

【技术保护点】
一种应用程序运行过程的内存管理方法,其特征在于,应用于采用安卓Andriod系统的设备中,以堆栈累加的方式对内存进行管理,包括:按照打开的应用程序中各个界面的打开顺序,将各个界面所占内存压入栈中;其中,位于栈顶的当前显示的界面所占的内存包括:预先划分的该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存;位于非栈顶的隐藏界面所占的内存包括:预先划分的该界面的不可转移数据所占的内存;所述隐藏界面的可转移数据被转换为文件形式存储至用户存储空间中;当隐藏界面被打开时,该隐藏界面切换为当前显示界面,将该界面的文件形式的可转移数据,从用户存储空间中恢复至内存中;并将该界面的可转移数据所占的内存和该界面的不可转移数据所占的内存压入栈顶。

【技术特征摘要】

【专利技术属性】
技术研发人员:廖松茂刘鹏
申请(专利权)人:北京奇艺世纪科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1