Android程序随机错误崩溃(由java.lang.OutOfMemoryError引起)

时间:2011-12-14 18:32:05

标签: android memory-management memory-leaks out-of-memory ddms

我的程序运行得很好然后我总是遇到一个随机崩溃错误(例如,错误膨胀类),它几乎总是由OutOfMemoryError启动。

我在DDMS中观看了我的VM堆,看起来gc正在做它的工作,因为我会看到%used#Objects一起上下移动

我注意到当我接近这些统计数据时,我得到了崩溃:

Heap Size    11.820 MB
Allocated    7.020 MB
Free         4.801 MB
% Used       59.39%
# Objects    148,927

这是关于设备上的使用高峰。有时它会在这里崩溃,但有时候它会让我转移到另一个类别,这样GC就可以将%used降低到32%。但是,即使使用率下降,我通常也会在不久后崩溃。

我通常会遇到一系列错误。最常见的Caused by:错误通常类似于Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget

我不知道下一步该去哪里,因为当设备崩溃时设备看起来很好,但抱怨没有足够的内存。我试过没有图像运行程序,我仍然得到一个崩溃的应用程序。无论如何,我应该从哪里开始寻找罪魁祸首

**编辑**

通过Eclipse在Android 2.3.4上点击Kindle Fire

1 个答案:

答案 0 :(得分:2)

在pre-honeycomb android版本中,位图数据存储超大的VM堆,因此无法通过DDMS跟踪位图数据:) 有两个可能的原因: 1.您的界面使用巨大数量的图像 2.手动创建位图并发生内存泄漏。在一个谷歌IO演示文稿中说,完全释放位图内存所需的几个垃圾收集


抱歉,错过了那个没有图片的应用程序崩溃了。定期尝试dump内存使用,稍后通过Eclipse Memory Analyzer

查看