0

我正在开发一个 android 应用程序,它使用更多分辨率约为 640*960 的图像。所有这些图像都加载了具有适当比例因子的位图。

当我加载 bitmpas 时,堆大小正在增加,即使我正在回收 bitmpas,它也不会减少。当我读到很少关于这个问题的理论时,最大值说一旦堆增加它就不会减少。

我的问题是如果我在堆大小为 10MB 时关闭我的应用程序,而当我重新打开应用程序堆时从 10Mb 开始。它会导致 VM 超过最大堆内存,然后在一段时间后内存不足。

我必须为此做些什么,并且我保证如果没有回收位图,我的应用程序将永远不会关闭。

谁能建议我如何最小化堆内存并解决这个OOM。

4

1 回答 1

0

即使我遇到了同样的问题....您可以参考此链接以有效加载位图http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

一旦堆大小超过了垃圾收集器运行的限制......它会清理任何不需要的对象。所以最好不要调用垃圾收集器,因为它会自动运行。

在 API 级别 11+ 上运行的应用程序可以在清单中的元素上使用 android:largeHeap="true" 以请求大于正常的堆大小

在您活动的 onCreate 方法中,您可以使用这个(我没有尝试过)dalvik.system.VMRuntime.getRuntime().setMinimumHeapSize(yournumberhere);

于 2013-02-05T16:23:14.440 回答