应用程序关闭时如何将堆大小设置为最小值

时间:2013-02-05 16:00:10

标签: android bitmap out-of-memory heap-memory

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

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

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

我必须为此做些什么,我保证我的申请永远不会因为回收位图而关闭。

任何人都可以建议我如何最小化堆内存并解决这个OOM。

1 个答案:

答案 0 :(得分:0)

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

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

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

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