清楚地解释OutOfMemoryError消息

我的Android应用程序触发了这样的OutOfMemoryError:

java.lang.OutOfMemoryError: Failed to allocate a 74649612 byte allocation with 1048576 free bytes and 63MB until OOM

任何人都可以解释每个值的含义(“ 字节分配 ”,“ 空闲字节 ”和“ 直到OOM ”)吗? 这个消息对我来说有点混乱。

详细信息 :据我所知:有63MB直到出现OutOfMemoryError异常,我们尝试分配74649612字节,但我们只有1048576个空闲字节。 (如果我们拥有“1048576空闲字节”,我们如何拥有“63MB直到OOM”?我们是否有63MB + 1048576的空闲字节可用,并且我们试图分配更多的字节,比如74649612字节?)


“字节分配”是指您尝试在单个块中分配多少内存。 在这种情况下,这是74649612字节。 这种分配请求在大多数情况下都会失败。

“可用字节数”是指堆中有多少个可用空间字节可用,但不扩展堆。 在这种情况下,这是1048576字节。 但请注意,这些“空闲字节”可能不在一个连续的块中。 通常,这个空闲空间被分割成许多小块。

“直到OOM”表明你的堆可以扩展超出其当前的大小。 基于设备特性,每个进程都有一个堆栈限制。 在你的情况下,堆可以从当前的大小扩大63MB,直到堆大小的限制。 但是,即使那样也不够大,无法为您提供您请求的大小的单个连续空闲块。


的OutOfMemoryError

是Android中最常见的问题,尤其是处理位图时。 当由于缺少内存空间而无法分配对象并且垃圾收集器无法释放一些空间时,Java虚拟机(JVM)会抛出此错误。

阅读所有5节课,并重新编写代码。 如果它仍然不起作用,我们将很高兴看到你在教程材料中做了什么错误。

这里是SOF中这些类型错误的一些可能的答案

Android:BitmapFactory.decodeStream()内存不足,带有一个400MB文件,带有2MB空闲堆

如何解决Android中的java.lang.OutOfMemoryError问题

Android:java.lang.OutOfMemoryError

java.lang.OutOfMemoryError

OutOfMemoryError解决方案:位图大小超过虚拟机预算

请你可以使用图像。 而这个图像尺寸很大就是问题。 您可以调整图像大小来调整大小

链接地址: http://www.djcxy.com/p/93067.html

上一篇: Clear explanation of the OutOfMemoryError message

下一篇: strange behaviour caching bitmaps in a lrucache