Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
对于我测试过的几个应用程序,即使在应用程序启动时,堆内存使用率似乎也很高。例如,我有一个应用程序应该在 ImageView 上显示来自资产的图像。但是,即使在加载图像之前,使用的堆也大约是 95%。当我加载并显示图像时,它仍然很好,它将已用内存增加到大约 98%。但是,如果我创建位图的副本,则应用程序会因内存不足错误而崩溃。
同样,我的主要问题是为什么在应用程序开始时,在任何处理完成之前,可用内存量如此之低。
您看到如此高的内存使用百分比的原因是堆尚未增长到其最大大小。这意味着即使您看到 98% 的使用量是指您当前的堆大小,而不是您可以使用的总量。
在运行时,堆会随着 Dalvik VM 需要更多内存而动态增长。通常从相对较小的堆开始,如果需要,每次 GC 时 Dalvik 会请求更多内存。
现在对你OutOfMemoryError来说可能有很多事情。我建议在运行时使用BitmapFactory该类对您的位图进行采样inSampleSize
OutOfMemoryError
BitmapFactory
inSampleSize