Android应用程序中的堆空间

时间:2014-08-28 10:58:18

标签: java android heap-memory

我有一个应用程序使用SurfaceView尽可能快地绘制动画。它几乎是完美的,只是有时,动画会在短时间内冻结。这个短暂的时间大约持续10毫秒,但不是很大,但足够大,以至于用户可以注意到。

我已经看到这些冻结是由堆空间的变化引起的,这些变化是由垃圾收集器触发的。在我的应用程序清单中添加android:largeHeap="true"并没有解决问题。

有谁知道如何摆脱这个恼人的问题?

2 个答案:

答案 0 :(得分:1)

垃圾收集器试图释放一些资源。你需要看看logcat - 它会在那里可见。

我建议优化内存使用量(降低位图大小,或者修改加载方案),或者(如果可能的话)找到一些没有任何强化动画的间隔,并在那时做System.gc() ,以隐藏用户的冻结。

答案 1 :(得分:0)

似乎Android的速度不足以增加应用的堆空间。

尝试在Manifest文件中使用largeHeap设置。启用该设置后,Android每次增加堆时都会留下更多可用内存,从而最大限度地降低达到当前限制的可能性。

您只需在AndroidManifest.xml的应用标签上设置largeHeap="true"

即可