一种内存空间分配方法及装置制造方法及图纸

技术编号:13417916 阅读:55 留言:0更新日期:2016-07-27 15:05
本发明专利技术涉及计算机技术领域,尤其涉及一种内存空间分配方法及装置,用以突破应用程序的内存限制,提高应用程序的可用内存。本发明专利技术实施例提供的内存空间分配方法应用于安装有Android操作系统的终端,包括:在运行应用的过程中,生成第一编程语言层(Java层)的待存储数据;在确定所述应用当前在第一编程语言层能够利用的内存占比低于设定阈值后,为所述待存储数据分配基于第二编程语言层(Native层)的内存空间;在所述第二编程语言层,将所述待存储数据写入分配的所述内存空间。这样,当应用在第一编程语言层的可用内存占比低于设定阈值后,可在第二编程语言层为该应用分配内存空间,从而减少了发生内存耗尽的几率。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及一种内存空间分配方法及装置
技术介绍
目前,安卓(Android)应用程序在运行中是基于Java语言层进行数据存储的,在该语言层进行数据存储时会有一定的内存限制,一般限制大小为16MB或24MB。当应用程序涉及到多媒体资源的资源处理时,会消耗大量的内存资源,很容易超过该内存限制,引发应用程序可用内存耗尽(OutOfMemory,OOM),导致程序异常退出。现有的解决方案一般采用缓存、压缩图像、降低图像质量等手段来减少内存占用。这些减少内存占用的方式都是基于对应用程序输出的待存储数据进行处理来实现的,无法从本质上提高应用程序的可用内存。
技术实现思路
本专利技术实施例提供一种内存空间分配方法及装置,用以突破应用程序的内存限制,提高应用程序的可用内存。本专利技术实施例提供一种内存空间分配方法,该方法应用于安装有安卓Android操作系统的终端,包括:在运行应用的过程中,生成第一编程语言层的待存储数据;所述第一编程语言层为Java层;在确定所述应用当前在第一编程语言层能够利用的内存占比低于设定阈值后,为所述待存储数据分配基于第二编程语言层的内存空间;所述第二编程语言层为Native层;在所述第二编程语言层,将所述待存储数据写入分配的所述内存空间。可选地,在所述第二编程语言层,将所述待存储数据写入分配的所述内存空间之后,还包括:在所述第二编程语言层,将分配的所述内存空间转换为字符串形式的句柄反馈到第一编程语言层,并保存该句柄与所述内存空间的对应关系;在所述第一编程语言层,当需要从内存中读取所述待存储数据时,将包括所述句柄的内存访问指令指示给所述第二编程语言层;在所述第二编程语言层,根据保存的句柄与内存空间的对应关系,将所述句柄对应的内存空间中的数据反馈到所述第一编程语言层。可选地,将所述句柄对应的内存空间中的数据反馈到所述第一编程语言层之后,还包括:在所述第一编程语言层,将包括所述句柄的内存释放指令指示给所述第二编程语言层;在所述第二编程语言层,根据保存的句柄与内存空间的对应关系,删除所述句柄对应的内存空间中的数据。可选地,在所述第二编程语言层,将所述待存储数据写入分配的所述内存空间,包括:在所述第二编程语言层,将所述待存储数据进行序列化处理后后写入分配的所述内存空间;在所述第二编程语言层,根据保存的句柄与内存空间的对应关系,将所述句柄对应的内存空间中的数据反馈到所述第一编程语言层,包括:在所述第二编程语言层,根据保存的句柄与内存空间的对应关系,将所述句柄对应的内存空间中的数据进行反序列化处理后反馈到所述第一编程语言层。可选地,在确定所述应用当前在第一编程语言层能够利用的内存占比低于设定阈值后,为所述待存储数据分配基于第二编程语言层的内存空间,包括:在确定所述应用当前在第一编程语言层能够利用的内存占比低于设定阈值后,通过定义的第一编程语言层的存储接口,调用定义的第二编程语言层的存储接口,为所述待存储数据分配基于第二编程语言层的内存空间。本专利技术实施例提供一种内存空间分配装置,该装置应用于安装有安卓Android操作系统的终端,包括:生成模块,用于在运行应用的过程中,生成第一编程语言层的待存储数据;所述第一编程语言层为Java层;分配模块,用于在确定所述应用当前在第一编程语言层能够利用的内存占比低于设定阈值后,为所述待存储数据分配基于第二编程语言层的内存空间;所述第二编程语言层为Native层;写入模块,用于在所述第二编程语言层,将所述待存储数据写入分配的所述内存空间。本专利技术实施例在采用Android操作系统运行应用的过程中,生成Java层的待存储数据后,若该应用当前在Java层能够利用的内存占比低于设定阈值,则为待存储数据分配基于Native层的内存空间,并在Native层,将待存储数据写入分配的内存空间。可见,本专利技术实施例使应用的可用内存不仅限于Java层,当应用在Java层的可用内存占比低于设定阈值后,可在Native(通过C或C++语言实现)层为该应用分配内存空间,从而极大地减少了发生OOM的几率,大大提高了应用的健壮性。附图说明图1为本专利技术实施例一提供的内存空间分配方法流程图;图2为本专利技术实施例二提供的内存空间分配方法流程图;图3为本专利技术实施例提供的内存空间分配装置结构示意图。具体实施方式本专利技术实施例的基本思想是:在采用Android操作系统运行应用的过程中,生成Java层的待存储数据后,若该应用当前在Java层能够利用的内存占比低于设定阈值,则为待存储数据分配基于Native层的内存空间,并在Native层,将待存储数据写入分配的内存空间。可见,本专利技术实施例使应用的可用内存不仅限于Java层,当应用在Java层的可用内存占比低于设定阈值后,可在Native(通过C或C++语言实现)层为该应用分配内存空间,从而极大地减少了发生OOM的几率,大大提高了应用的健壮性。下面结合说明书附图对本专利技术实施例作进一步详细描述。如图1所示,为本专利技术实施例一提供的内存空间分配方法流程图,该方法应用于安装有安卓(Android)操作系统的终端,包括以下步骤:S101:在运行应用的过程中,生成第一编程语言层的待存储数据;所述第一编程语言层为Java层。比如,安卓(Android)应用程序是基于Java语言实现的,在运行过程中,需要在Java层将数据写入内存。这里的Java层即所述第一编程语言层。S102:在确定所述应用当前在第一编程语言层能够利用的内存占比低于设定阈值后,为所述待存储数据分配基于第二编程语言层的内存空间;所述第二编程语言层为Native层。比如,在Java层监测内存消耗;具体的,可以在Java层定义一个接口如StringSaveObject(Object),当Java层需要存储数据时,调用该接口,通过使用ActivityManager的getProcessMemoryInfo方法获取Java层内存消耗。在具体实施中,当确定所述应用当前在第一编程语言层能够利用的内存占比低于设定阈值后,可以通过定义的第一编程语言层的存储接口,调用定义的第二编程语言层的存储接口,为所述待存储数据分配基于第二编程语言层的内存空间。比如,通过Java-Native界面(JavaNativeInterface,JNI)定义Java层的存储接口N本文档来自技高网...

【技术保护点】
一种内存空间分配方法,其特征在于,该方法应用于安装有安卓Android操作系统的终端,包括:在运行应用的过程中,生成第一编程语言层的待存储数据;所述第一编程语言层为Java层;在确定所述应用当前在第一编程语言层能够利用的内存占比低于设定阈值后,为所述待存储数据分配基于第二编程语言层的内存空间;所述第二编程语言层为Native层;在所述第二编程语言层,将所述待存储数据写入分配的所述内存空间。

【技术特征摘要】
1.一种内存空间分配方法,其特征在于,该方法应用于安装有安卓Android
操作系统的终端,包括:
在运行应用的过程中,生成第一编程语言层的待存储数据;所述第一编程
语言层为Java层;
在确定所述应用当前在第一编程语言层能够利用的内存占比低于设定阈
值后,为所述待存储数据分配基于第二编程语言层的内存空间;所述第二编程
语言层为Native层;
在所述第二编程语言层,将所述待存储数据写入分配的所述内存空间。
2.如权利要求1所述的方法,其特征在于,在所述第二编程语言层,将
所述待存储数据写入分配的所述内存空间之后,还包括:
在所述第二编程语言层,将分配的所述内存空间转换为字符串形式的句柄
反馈到第一编程语言层,并保存该句柄与所述内存空间的对应关系;
在所述第一编程语言层,当需要从内存中读取所述待存储数据时,将包括
所述句柄的内存访问指令指示给所述第二编程语言层;
在所述第二编程语言层,根据保存的句柄与内存空间的对应关系,将所述
句柄对应的内存空间中的数据反馈到所述第一编程语言层。
3.如权利要求2所述的方法,其特征在于,将所述句柄对应的内存空间
中的数据反馈到所述第一编程语言层之后,还包括:
在所述第一编程语言层,将包括所述句柄的内存释放指令指示给所述第二
编程语言层;
在所述第二编程语言层,根据保存的句柄与内存空间的对应关系,删除所
述句柄对应的内存空间中的数据。
4.如权利要求2或3所述的方法,其特征在于,在所述第二编程语言层,
将所述待存储数据写入分配的所述内存空间,包括:
在所述第二编程语言层,将所述待存储数据进行序列化处理后后写入分配

\t的所述内存空间;
在所述第二编程语言层,根据保存的句柄与内存空间的对应关系,将所述
句柄对应的内存空间中的数据反馈到所述第一编程语言层,包括:
在所述第二编程语言层,根据保存的句柄与内存空间的对应关系,将所述
句柄对应的内存空间中的数据进行反序列化处理后反馈到所述第一编程语言
层。
5.如权利要求1所述的方法,其特征在于,在确定所述应用当前在第一
编程语言层能够利用的内存占比低于设定阈值后,为所述待存储数据分配基于
第二编程语言层的内存空间,包括:
在确定所述应用当前在第一编程语言层能够利用的内存占比低于设定阈
值后,通...

【专利技术属性】
技术研发人员:严欣
申请(专利权)人:中国移动通信集团公司
类型:发明
国别省市:北京;11

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

1