android 加载图片时内存泄露问题

franzhong 2011-09-04 01:43:50
错误提示:12996-byte external allocation too large for this process
为啥这么小才十几K就出太大了呢
我开发游戏的welcomeView.java(SurfaceView)里加载了几张图片
在OnDestory里我已经全部都(全部)
if (!play.isRecycled())
play.recycle();了
然后跳转到gameView里再加载图片(initBmp();)的时候就提示了这个错误
请问大牛们,该怎么解决
...全文
311 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
a220315410 2011-09-05
  • 打赏
  • 举报
回复
因为大部分图片格式(jpeg,png)都对图片进行了压缩处理,BitmapFactory从文件中读取图片的时候,需要对图片进行解压缩。BitmapFactory在解压缩的过程中,需要占用额外的内存,还有,就是几百K的图片问价展开到内存中成为bitmap以后,达到1M以上也是有可能的。
念茜 2011-09-04
  • 打赏
  • 举报
回复
Android堆内存也可自己定义大小,使用Dalvik提供的 dalvik.system.VMRuntime类来设置最小堆内存为例:

private final static int CWJ_HEAP_SIZE = 6* 1024* 1024 ;
VMRuntime.getRuntime().setMinimumHeapSize(CWJ_HEAP_SIZE);

或者参看这篇总结:
http://yueguc.iteye.com/blog/1051966
wenzheng38 2011-09-04
  • 打赏
  • 举报
回复
每个应用都有其自己的虚拟及dalvik,可能是虚拟机的内存不足,把把设大一点。。。
franzhong 2011-09-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 franzhong 的回复:]
引用 3 楼 htynkn 的回复:
Bitmap的释放不够完整吧。虽然图片容易溢出但是几百K问题不大。


http://www.devdiv.com/article-2090-1.html

你的这是Gallery优化方法,解决不了我的问题,为啥说释放不够完整呢,此话怎讲,我的释放方法也贴出来了啊。我的图片可用内存好像很低,不说8M吗,我全部的图片才4M,我看也就同时能加不到2M我……
[/Quote]
而且我的图也不能再缩小了,大小正好的,缩小了还怎么用啊
franzhong 2011-09-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 htynkn 的回复:]
Bitmap的释放不够完整吧。虽然图片容易溢出但是几百K问题不大。


http://www.devdiv.com/article-2090-1.html
[/Quote]
你的这是Gallery优化方法,解决不了我的问题,为啥说释放不够完整呢,此话怎讲,我的释放方法也贴出来了啊。我的图片可用内存好像很低,不说8M吗,我全部的图片才4M,我看也就同时能加不到2M我看,为什么会这样呢
htynkn 2011-09-04
  • 打赏
  • 举报
回复
Bitmap的释放不够完整吧。虽然图片容易溢出但是几百K问题不大。


http://www.devdiv.com/article-2090-1.html
franzhong 2011-09-04
  • 打赏
  • 举报
回复
高手都哪去啦,自已顶一下!
franzhong 2011-09-04
  • 打赏
  • 举报
回复
另外还有几张我觉得大了点(几百K)我就这样加载的
在draw()里
myBmp= BitmapFactory.decodeResource(getResources(), R.drawable.vs3);
canvas.drawBitmap(myBmp, 0, 0, mPaint);
if (!myBmp.isRecycled())
myBmp.recycle();
//不知这样是不是一种正确的施放方式

80,359

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧