相关疑难解决方法(0)

java.lang.OutOfMemoryError:位图大小超过VM预算 - Android

我开发了一个在Android上使用大量图像的应用程序.

该应用程序运行一次,填满屏幕上的信息(Layouts,Listviews,Textviews,ImageViews,等)和用户读取的信息.

没有动画,没有特效或任何可以填充内存的东西.有时候抽屉可以改变.有些是android资源,有些是保存在SDCARD文件夹中的文件.

然后用户退出(该onDestroy方法被执行并且app由VM保持在内存中)然后在某个时刻用户再次进入.

每次用户进入应用程序时,我都可以看到内存越来越多,直到用户获得java.lang.OutOfMemoryError.

那么处理许多图像的最佳/正确方法是什么?

我应该把它们放在静态方法中,这样它们就不会一直装载吗?我是否必须以特殊方式清洁布局或布局中使用的图像?

memory android memory-leaks bitmap out-of-memory

157
推荐指数
7
解决办法
11万
查看次数

哪些Android工具和方法最有效地查找内存/资源泄漏?

我已经开发了一个Android应用程序,我正处于手机应用程序开发阶段,其中一切似乎都运行良好,你想宣布胜利和发货,但你知道只需要一些内存和资源泄漏在那里; Android上只有16mb的堆,而且在Android应用程序中显然很容易泄漏.

我一直在环顾四周,到目前为止只能找到关于'hprof'和'traceview'的信息并且没有得到很多好评.

您在OS项目中遇到或开发并关心分享哪些工具或方法?

android memory-leaks

151
推荐指数
6
解决办法
9万
查看次数

Android中的垃圾收集器

我见过很多Android答案,建议在某些情况下调用垃圾收集器.

在进行需要大量内存的操作之前,在Android中请求垃圾收集器是一个好习惯吗?如果没有,如果我收到OutOfMemory错误,我应该只调用它吗?

在使用垃圾收集器之前还有其他我应该使用的东西吗?

java android garbage-collection

105
推荐指数
7
解决办法
11万
查看次数

从外部存储加载位图时出现OutOfMemory异常

在我的应用程序中,我从JPEG和PNG文件加载了几个图像.当我将所有这些文件放入assets目录并以这种方式加载时,一切正常:

InputStream stream = getAssets().open(path);
Bitmap bitmap = BitmapFactory.decodeStream(stream, null, null);
stream.close();
return new BitmapDrawable(bitmap);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试从SD卡加载完全相同的图像时,我得到一个OutOfMemory异常!

InputStream stream = new FileInputStream("/mnt/sdcard/mydata/" + path);
Bitmap bitmap = BitmapFactory.decodeStream(stream, null, null);
stream.close();
return new BitmapDrawable(bitmap);
Run Code Online (Sandbox Code Playgroud)

这是我在日志中得到的:

11-05 00:53:31.003: ERROR/dalvikvm-heap(13183): 827200-byte external allocation too large for this process.
11-05 00:53:31.003: ERROR/GraphicsJNI(13183): VM won't let us allocate 827200 bytes
...
11-05 00:53:31.053: ERROR/AndroidRuntime(13183): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
11-05 00:53:31.053: ERROR/AndroidRuntime(13183):     at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
...
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

更新:在真实设备上尝试了这两个 - 似乎我无法将超过12MB的位图加载到所谓的"外部存储器"(这不是SD卡).

android out-of-memory

17
推荐指数
3
解决办法
2万
查看次数