如何动态清空或清除堆内存

时间:2012-04-17 05:57:01

标签: android heap-memory forceclose

我的项目完全基于图像。我在我的项目中使用了一个库和一个封面流,由于堆大小较小,应用程序强行关闭。

所以每次加载我的应用程序时,我都想清除堆大小,所以我可以重复使用它 我在图库和封面流程中使用了System.gc() & recycle ()方法,但我的图库和封面流是相互关联的,因此始终引用该对象,因此System.gc()recycle()无效,我的图库并且在使用它时,coverflow仍会在随机时间点崩溃。

出于某种原因,我无法在此处显示我的代码,即使它非常大,所以我无法在此处展示。

请帮助我&谢谢你阅读这个问题。

3 个答案:

答案 0 :(得分:0)

好吧,你没有任何真正的控制权来强制GC运行。只要它认为是时候,它就会独立运行。

When does System.gc() do anything

因此,您唯一的选择是明智地使用图像和位图。

提示=>使用软引用。 http://developer.android.com/reference/java/lang/ref/SoftReference.html

答案 1 :(得分:0)

要控制因内存问题导致的崩溃,您需要这样做:

BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 8;
Bitmap preview_bitmap=BitmapFactory.decodeStream(is,null,options);

inSampleSize值可减少内存消耗。

可以从这个帖子获得更多信息:

Strange out of memory issue while loading an image to a Bitmap object

希望这会对你有所帮助。

答案 2 :(得分:0)

增加堆空间..并启用自动删除,就像在eclipse中一样,如果你去偏好并管理堆空间;你可以点击那里的垃圾按钮