【问题标题】:Android Low memory on startAndroid 启动时内存不足
【发布时间】:2013-10-16 15:56:07
【问题描述】:

对于我测试过的几个应用程序,堆内存使用率似乎相当高,即使是在应用程序的开始。例如,我有一个应用程序应该在 ImageView 上显示来自资产的图像。但是,即使在加载图像之前,使用的堆也大约是 95%。当我加载并显示图像时,它仍然很好,它将已用内存增加到大约 98%。但是,如果我创建位图的副本,应用程序会因内存不足而崩溃。

再一次,我的主要问题是为什么在应用程序启动时,在任何处理完成之前,可用内存量如此之低。

【问题讨论】:

  • 这是一个相当广泛的问题。也许您应该添加一些代码以便我们可以看到发生了什么,或者链接到某人可以查看的 github/bitbucket 存储库?此外,这些应用程序是在多台设备上还是在一台特定设备上做同样的事情?为了帮助您,这里需要更多详细信息。

标签: android memory


【解决方案1】:

您看到如此高的内存使用百分比的原因是堆尚未增长到其最大大小。这意味着即使您看到 98% 的使用量是指您当前的堆大小,而不是您可以使用的总量。

在运行时,堆会随着 Dalvik VM 需要更多内存而动态增长。通常从相对较小的堆开始,如果需要,每次 GC 时,Dalvik 都会请求更多内存。

现在对于您的OutOfMemoryError 来说,它可以是很多事情。我建议在运行时使用BitmapFactoryinSampleSize 对位图进行采样

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多