APP下载

基于Android的图片处理系统中内存溢出优化方法

2017-07-18韩聪海南工商职业学院

数码世界 2017年6期
关键词:调用内核应用程序

韩聪 海南工商职业学院

基于Android的图片处理系统中内存溢出优化方法

韩聪 海南工商职业学院

随着智能手机摄像头像素的不断提高和智能手机自带图片处理软件、三方摄影软件的不断改进,内存利用问题不容忽视。如何让图片处理软件流畅、稳定,避免因内存溢出造成系统频繁出问题,成为开发者必须解决的问题。本文旨在解决该问题。先对相关技术原理进行分析得出内存溢出原因,再提出优化方法。

图片处理 内存溢出 优化

Android操作系统(安卓)是谷歌开发的,是一款基于Linux内核设计的操作系统。因Linux完全免费开放,且所需配置不高,越来越多的企业及政府投入研究及使用,Android迅速变成全球应用最广泛的智能手机操作系统。Android操作系统能够对图片进行简单的出来了,同时支持三方摄影软件对图片进行美化处理。随着图片处理系统功能的不断改进,处理图片时所需的内存也更多,出现了out of memory(内存溢出)。

内存溢出(out of memory)即内存不够用。图片处理软件处理大量图片时需要的内存很大,主机所提供的内存不能承载大量图片时软件无法运行,系统会自动退出或提示内存溢出。OOM带来很多问题。内存溢出仅到缓冲区,程序仍然可以调用丢失的信息或子程序的列表信息。这种情况重启手机或者清除缓存释放内存软件就可以正常运行了。内存溢出超出缓冲区,软件不能正常完成任务。溢出的数据会覆盖计算机内存中原有信息。若被覆盖的信息不能恢复将会永远丢失。

1 Android操作系统内存分析

Android设计的理念是“应用程序关闭而不退出”,应用程序关闭依然要占用内存。谷歌数据显示,假设智能手机操作系统的内存是64M,高级系统服务大概需要20M内存,该手机内核大概需要24M内存,手机仅剩不到20M内存留给应用程序。手机更新换代后,内存升级为了32G、64G,但内核的内存占用量、高级系统服务内存的占用量也随之增大,应用程序的可用内存还是有限。

1.1 内存管理机制

Android操作系统对内存分配的可修改性不大,而内核层及系统运行库层和应用程序框架层却可以修改。应用程序框架层内存管理主要体现在Ams。内存回收时体现在两个当面,支持low memory killer设置进程的优先级别,否则提供一套默认的内存回收方案。内核层及系统运行库内存的管理主要是运行程序调用GC申请内存。若能够回收足够的内存则GC停止,否则内存溢出应用程序终止。

1.2 图片占用进程的内存算法

Android中处理图片使用Bitmap(位图)的基础类。图片处理时占用内存计算方法是height*width*Config。假如Config设置为ARGB则Config=4。一张720480存就是720*480*4字节。把手机设置调为默认设置,图片需要16M内存。Bitmap包含在底层C++的skia图形库中的SKBitmap对象,也包含java中数据。建议图片占用内存要小于8M。

2 内存溢出原因

(1)一次性从数据库中取出的数据量大,超出内存能够加载的上限。

(2)引用对象在集合类中使用后没有及时清空引用对象,JVM不能回收。

(3)程序中存在死循环、很多重复的对象实体。

(4)在启动参数时内存值设置的不够大。

3 内存溢出优化方法

(1)对代码进行反复检测排除死循环、重复的对象实体。

(2)避免启动参数时对内存值设置的不够大。

(3)避免一次性从数据库中获取出的数据量过大,超出内存能够加载的上限。

(4)加载图片时对图片进行等比例压缩。

(5)及时回收内存,在图片处理系统中加入图1-3中的语句。

图1-3

(6)减小内存消耗量。直接调用JNI>>nativeDecodeAsset()来完成decode,所以在调用图片时通过BitmapFactory.decodeStream方法,创建bitmap,再将其设为ImageView的source,decodeStream。在读取时加上图片的Config参数,很明显图片加载内存就减少了,内存溢出问题可以有效解决。

4 结束语

手机硬件配置越来越高,用手机拍出来的照片占用内存量越来越大,图片处理时占用的内存也越来越大。内存直接影响一个应用程序能不能正常使用,所以开发者找出解决内存溢出问题的解决方案非常重要。

[1]王华旭.Android平台图像处理软件框架的开发与设计

[J].软件.2014(02)

[2]申文.基于Android的图片产品设计与实现[D].华中科技大学2011

[3]江志俭.基于Android平台多功能特效相机的设计与实现[D].大连理工大学2011

[4]曹帮琴.徐昊.Android应用中优化Bitmap使用避免内存溢出[J].河南工程学院学报(自然科学版)2014.26(2)

猜你喜欢

调用内核应用程序
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
核电项目物项调用管理的应用研究
删除Win10中自带的应用程序
微软发布新Edge浏览器预览版下载换装Chrome内核
系统虚拟化环境下客户机系统调用信息捕获与分析①
谷歌禁止加密货币应用程序
利用RFC技术实现SAP系统接口通信
三星电子将开设应用程序下载商店