[发明专利]用于辅助位图对象内存分配的方法及装置有效
申请号: | 201910527016.0 | 申请日: | 2019-06-18 |
公开(公告)号: | CN110362311B | 公开(公告)日: | 2023-03-14 |
发明(设计)人: | 王佐 | 申请(专利权)人: | 创新先进技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/30;G06F12/02;G06F9/50 |
代理公司: | 北京永新同创知识产权代理有限公司 11376 | 代理人: | 林锦辉 |
地址: | 英属开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 辅助 位图 对象 内存 分配 方法 装置 | ||
本公开提供一种用于辅助位图对象内存分配的方法及装置。在该方法中,获取位图对象在应用程序Java层中的数据结构中的第一地址字段的位置信息,位图对象在应用程序原生层的数据结构中的第二地址字段和第三地址字段的位置信息以及在应用程序Java层的内存空间中创建的第一字节型数组对象的数组对象信息。然后,基于第一字节型数组对象的数组对象信息,在应用程序原生层的内存空间中创建第二字节型数组对象,第二字节型数组对象具有与第一字节型数组对象相同的内存大小和数据结构。随后,使用第二字节型数组对象的虚拟地址覆盖第一地址字段、第二地址字段和第三地址字段处存储的虚拟地址。
技术领域
本公开通常涉及图片渲染领域,更具体地,涉及用于辅助位图对象内存分配的方法及装置。
背景技术
内存溢出错误(OOM,Out of Memory)是指应用程序申请内存过大,而应用程序虚拟机无法满足,然后发生系统崩溃。OOM是应用程序开发中经常碰到的现象。这个现象通常出现在大图片类应用程序开发或者需要使用大量图片的应用程序开发中。比如,应用程序从本地文件中读取图片,然后在GridView中进行图片显示,这时,应用程序需要申请内存来存放图片,由于应用程序的每个进程或者应用程序虚拟机具有最大内存限制,一旦应用程序所申请的内存超过最大内存限制,则会发生OOM错误。
位图(Bitmap)对象的尺寸通常比较大,创建一个Bitmap对象会消耗大量的内存。在大图片类应用程序中,需要从本地文件中读取图片,然后在GridView中进行图片渲染。图片渲染操作需要创建大量的Bitmap对象,并且在应用程序Java层的内存堆(例如,Java堆)中为所创建的Bitmap对象分配内存,以存储所绘制的Bitmap对象的像素。在内存堆碎片化严重时,针对位图对象的内存分配操作容易发生OOM错误。如何在Bitmap对象创建时进行内存分配以降低OOM错误发生概率,成为亟待解决的问题。
发明内容
鉴于上述,本公开提供了一种用于辅助位图对象内存分配的方法及装置。利用该方法及装置,通过为位图对象分配原生层的内存空间中的内存来存储对应的像素数据,能够降低OOM错误的发生概率。
根据本公开的一个方面,提供了一种用于辅助位图对象内存分配的方法,包括:获取位图对象在应用程序Java层中的数据结构中的第一地址字段的位置信息,所述位图对象在应用程序原生层的数据结构中的第二地址字段的位置信息和第三地址字段的位置信息以及在所述应用程序Java层的内存空间中创建的第一字节型数组对象的数组对象信息,所述数组对象信息包括内存大小和数据结构信息,所述第一字节型数组对象用于存储所述位图对象的像素数据,所述第一地址字段和所述第二地址字段用于存储所使用的字节型数组对象的虚拟地址,以及所述第三地址字段用于存储全局引用所指向的字节型数组对象的虚拟地址;基于所述第一字节型数组对象的数组对象信息,在所述应用程序原生层的内存空间中创建第二字节型数组对象,所述第二字节型数组对象具有与所述第一字节型数组对象相同的内存大小和数据结构;以及使用所述第二字节型数组对象的虚拟地址覆盖所述第一地址字段、所述第二地址字段和所述第三地址字段处存储的虚拟地址。
可选地,在上述方面的一个示例中,所述第一地址字段的位置信息、所述第二地址字段的位置信息和所述第三地址字段的位置信息使用相对于各自的数据结构的起始位置的偏移量来表示。
可选地,在上述方面的一个示例中,所述方法还可以包括:在所述第一地址字段、所述第二地址字段和所述第三地址字段处存储的虚拟地址被覆盖后,经由应用程序虚拟机执行针对所述第一字节型数组对象的回收操作。
可选地,在上述方面的一个示例中,所述方法还可以包括:在所述第一地址字段、所述第二地址字段和所述第三地址字段处存储的虚拟地址被覆盖后,在所述位图对象被使用时,由应用程序虚拟机使用所述第三地址字段处存储的虚拟地址来创建全局引用。
可选地,在上述方面的一个示例中,所述方法还可以包括:在应用程序虚拟机执行针对所述第二字节型数组对象的虚拟地址的对象地址检查时,使得所述应用程序虚拟机跳过所述对象地址检查。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于创新先进技术有限公司,未经创新先进技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910527016.0/2.html,转载请声明来源钻瓜专利网。