位图大小超过Vm预算的错误android

当我更改为横向模式时,使用全屏位图创build的对象很less。

当我滚动另一个对象被称为和它的位图显示,当我这样做反复,位图大小超过vm预算误差,我已经做了所有的事情,如recycle() ,设置null,然后调用GC() ,我仍然同样的错误。 创build位图….

  bitmap = Bitmap.createBitmap(ChartProperties.getChartWidth(), ChartProperties.getChartHeight(), Bitmap.Config.RGB_565); imageCache.put(String.valueOf(LandscapeChartActivity.getActiveFeature()), new SoftReference(bitmap)); if(imageCache != null){ for (int i = 0; i < imageCache.size(); i++) { if (imageCache.get(String.valueOf(i)) != null) { imageCache.get(String.valueOf(i)).get().recycle(); imageCache.put(String.valueOf(i), null); } } Runtime.getRuntime().gc(); imageCache.clear(); imageCache = null; 

由于位图,我也有相同的问题OOME。

当方向从PORTRAIT改变为LANDSCAPE时,反之亦然,之前的UI被完全丢弃,并且加载并显示新的UI。在这种情况下,如果您在应用中使用多个位图,则需要在适当的位置释放它们。

要查看设备的方向,请参阅: 在Android手机上查看方向

在你的情况下,你需要在方向改变时清除位图。

在上面的链接,你可以find,如何获得当前的方向。 因此,在每个方向更改上,调用上面的代码来清理位图。

现在,当我们检查logcat时,总会有一个日志出现说GC_,但我不明白,所以我发现了一个关于内存泄漏问题的惊人的文档: http : //codelog.dexetra.com/getting-around- Android的内存布鲁斯

以上链接对您的问题非常有用。

现在,当您的应用程序中有内存泄漏时,OOME发生,所以要检查,请安装用于eclipse的MAT。 你可以在http://www.eclipse.org/mat/downloads.phpfind它;

它有点复杂的软件,但你会经历它,你会明白,它的相当有用的软件。

即使这不能解决你的问题,使用WeakReference的位图。

请参考这个链接: 如何在Java和Android开发中使用WeakReference?

如果我知道一些更多的信息,我会更新这个职位。

如果你的问题得到解决,请更新你的post。

谢谢 :)