了解 Android 垃圾回收

Understanding Android garbage collection

我在 Android 中找不到有关垃圾回收的有用信息。

当你出现内存异常时,我真的不明白

这里有一个问题:

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

有一个按钮,每次按下都会创建一个对象。

所以当我不断按下按钮时,分配的内存会增长直到 它达到堆大小。当达到堆大小时,分配的 内存回到 8 MB,但堆增长了一点点。在那之后, 整个事情再次发生并且堆不断增长

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

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

阅读 Managing Your App's Memory | Android Developers 以获得更深入的见解。