我想更多地了解out of memory
。我知道它主要导致位图和大型对象试图操纵。无论如何,有一种情况我得到这个错误,虽然没有图像或我在那里的任何其他东西,只有简单的textViews和手机ram就像12%免费。所以我知道有一些kb-s我的应用程序用作内存来分配,但我想知道那个内存对ram做了什么吗?因为RAM内存较低,android内存是否会出现内存错误?
答案 0 :(得分:1)
网络中有大量资源,只有谷歌。一个好的开始是http://developer.android.com/training/articles/memory.html
设备的RAM不会直接影响App的内存,真正的问题是所谓的堆。想象一下,它是你的应用程序允许使用的RAM的一小部分(还有更多,但现在应该足够了)。
所有java对象都在堆上分配,即保存。如果你正在创建一个新对象,堆将总是试图摆脱未使用的东西,但如果它不能(因为你仍在使用所有对象)它会尝试增长。如果堆不能再进一步增长,则会发生OutOfMemoryError
。
你知道,不仅是位图累积了你的内存消耗,而且基本上是任何。特别大的StringBuffer
也可能是一个问题。
然而,位图通常是原因。如果你正在使用例如ImageView
或仅设置视图的背景图像,它将在内部使用位图。
如果您在应用中没有使用任何大型文件或位图,那么您遇到内存泄漏的可能性很高。要了解有关这些内容的更多信息(以及如何发现它们),请查看https://corner.squareup.com/2015/05/leak-canary.html