我的程序运行得很好然后我总是遇到一个随机崩溃错误(例如,错误膨胀类),它几乎总是由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
答案 0 :(得分:2)
在pre-honeycomb android版本中,位图数据存储超大的VM堆,因此无法通过DDMS跟踪位图数据:) 有两个可能的原因: 1.您的界面使用巨大数量的图像 2.手动创建位图并发生内存泄漏。在一个谷歌IO演示文稿中说,完全释放位图内存所需的几个垃圾收集
抱歉,错过了那个没有图片的应用程序崩溃了。定期尝试dump内存使用,稍后通过Eclipse Memory Analyzer
查看