为什么 Android 应用程序 RAM 使用量永远稳定增加?甚至 Hello World 应用程序
Why does Android app RAM usage increase steadly forever? even Hello World app
我正在开发我的应用程序,这时我注意到我的应用程序的内存使用量一直在攀升......稳定......永远......每隔一段时间,垃圾收集器就会启动,并减少内存使用量。
最后,我发现即使是模板 Hello World 应用程序也是如此。
为什么会这样?它发生在你身上吗?我怎样才能让内存使用量无缘无故地停止增加?我不记得这之前是个问题...我快疯了哟!
这是 Hello World 应用及其内存使用情况的图片。
Android 应用程序的整体不仅仅包含客户端(您的)代码。此外,应用程序还将具有 GUI 方面,这意味着它正在 运行 循环中,并且每次都需要重新绘制。很容易推测在该循环内至少发生了一次对象分配(也可能不止一次)。考虑到对上述对象的引用超出范围,GC 只会对其进行标记,不会立即释放内存。因此,新对象将不断消耗更多可用内存。当没有空闲内存可供分配时,GC 将处理标记的对象,现在有空闲内存可以再次获取。这大致就是您在上图中看到的内容。这是正常行为,您不必担心。一般来说,大多数优化和分析应该在主要应用程序逻辑完成后完成。
我正在开发我的应用程序,这时我注意到我的应用程序的内存使用量一直在攀升......稳定......永远......每隔一段时间,垃圾收集器就会启动,并减少内存使用量。
最后,我发现即使是模板 Hello World 应用程序也是如此。
为什么会这样?它发生在你身上吗?我怎样才能让内存使用量无缘无故地停止增加?我不记得这之前是个问题...我快疯了哟!
这是 Hello World 应用及其内存使用情况的图片。
Android 应用程序的整体不仅仅包含客户端(您的)代码。此外,应用程序还将具有 GUI 方面,这意味着它正在 运行 循环中,并且每次都需要重新绘制。很容易推测在该循环内至少发生了一次对象分配(也可能不止一次)。考虑到对上述对象的引用超出范围,GC 只会对其进行标记,不会立即释放内存。因此,新对象将不断消耗更多可用内存。当没有空闲内存可供分配时,GC 将处理标记的对象,现在有空闲内存可以再次获取。这大致就是您在上图中看到的内容。这是正常行为,您不必担心。一般来说,大多数优化和分析应该在主要应用程序逻辑完成后完成。