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

问题描述 投票:0回答:3

我的项目完全基于图像。我在我的项目中使用画廊和封面流,由于堆大小较小,应用程序被强制关闭。

因此,每次加载应用程序时,我都想清除堆大小,以便可以重用它。
我在画廊和封面流中使用了

System.gc() & recycle ()
方法,但是我的画廊和封面流是相互关联的,因此该对象始终被引用,因此
System.gc()
recycle()
没有效果,我的画廊和封面流仍然崩溃使用时的随机时间点。

由于某种原因,我无法在这里显示我的代码,即使它很大,所以我无法在这里显示。

请帮助我并感谢您阅读这个问题。

android heap-memory forceclose
3个回答
0
投票

嗯,您对强制 GC 运行没有任何真正的控制权。只要它认为时间到了,它就会自行运行。

System.gc()什么时候做任何事

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

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


0
投票

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

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

inSampleSize 值减少了内存消耗。

可以从此线程获得更多信息:

将图像加载到位图对象时出现奇怪的内存不足问题

希望这对您有帮助。


0
投票

增加堆空间..并打开自动删除,就像在 Eclipse 中一样,如果您进入首选项并管理堆空间;你可以点击那里的垃圾按钮

© www.soinside.com 2019 - 2024. All rights reserved.