理解Android垃圾收集

理解Android垃圾收集,android,memory,collections,garbage,Android,Memory,Collections,Garbage,我很难在Android中找到关于垃圾收集的好信息 我真的不明白你什么时候有记忆异常 这里有一个问题: 当我运行我的应用程序并用Android设备监视器监视它时 我看到应用程序刚启动时分配的内存是8MB 有一个按钮,可以在每次按下时创建一个对象 因此,当我继续按下按钮时,分配的内存会增加,直到 它达到堆大小。当达到堆大小时,分配的 内存恢复到8MB,但堆已经增长了一点。之后, 整个事情又发生了,堆不断地增长 在这种情况下,我是否有内存异常?或者这是正常的吗 堆大小一直在增长?堆大小是一种可以使用的

我很难在Android中找到关于垃圾收集的好信息

我真的不明白你什么时候有记忆异常

这里有一个问题:

当我运行我的应用程序并用Android设备监视器监视它时 我看到应用程序刚启动时分配的内存是8MB

有一个按钮,可以在每次按下时创建一个对象

因此,当我继续按下按钮时,分配的内存会增加,直到 它达到堆大小。当达到堆大小时,分配的 内存恢复到8MB,但堆已经增长了一点。之后, 整个事情又发生了,堆不断地增长

在这种情况下,我是否有内存异常?或者这是正常的吗
堆大小一直在增长?

堆大小是一种可以使用的保留内存。分配的内存是实际使用的内存。
当分配的内存接近堆大小时,您会看到分配的内存下降,对象将被垃圾收集。堆大小将稍微增大,因为您可能需要比当前保留的内存更多的内存。
最后,如果继续分配内存而不释放内存,堆大小和分配的内存将增加,直到系统内存耗尽(对于您的应用程序)。此时,将抛出一个
OutOfMemoryException
,您的应用程序将崩溃


阅读以获得更深入的了解。

我已经阅读了文档,但不够具体,无法完全理解。所以我的理解是,当分配的内存不在堆大小附近时,垃圾收集也会发生。因此,当按下按钮时,堆会不断增长,直到达到创建对象(未被引用)所需的堆大小,但它应该在某个点停止增长,因为垃圾收集会在启发式确定的时刻处理它?