android - GC 是否保证释放未使用 Activity 的内存

标签 android android-activity memory-leaks garbage-collection activity-lifecycle

我正在尝试分析 Android 应用程序的内存使用情况。我这样做是使用

adb shell dumpsys meminfo <package name>

我的应用只有一个Activity,我可能会重复以下步骤十几次:

  1. 打开应用程序;
  2. 使用后退按钮退出

执行此操作十几次后,dumpsys 显示我的 Activities 的大约 1-2 个实例仍在内存中。在我点击 adb dumpsys 几次后,Activity 计数降至零。这是正常的吗?如果是泄漏,我预计 Activity 计数不会降至零。这是否意味着 GC 缓慢地占用 Activity 对象的内存?

最佳答案

Does that mean GC claims the memory of the activity objects slowly?

通过按后退按钮完成 Activity 并不意味着其实例将立即被终止并进行内存 GC 处理。 ActivityonDestroy() 方法不是“终结器”。当启动一个新的 Activity 实例时,“旧”实例仍然位于内存中(如 reference ),可能会遇到这种情况。

If it is a leak I don't expect the activity count to go down to zero.

如果您看到应用程序的进程正在运行,则这不是泄漏,因为“Activity 计数降至零”

After I hit adb dumpsys for a couple of times the activity count goes down to zero. Is this normal?

是的,由于上述原因。

关于android - GC 是否保证释放未使用 Activity 的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37891798/

相关文章:

javascript - 无论如何,有没有办法避免由于达到 Ext JS 应用程序的内存限制而导致 chrome 崩溃

c# - 即使在 Finalizer 运行后 FileSystemWatcher 内存泄漏

android - 从简单的 FireBase 数据库中读取

Android PopupMenu 如何更改菜单项文本颜色?

android - finish() 的替代方法,用于从 View 中删除 Activity。

android - 关于android Activity 生命周期的愚蠢问题

Android startActivityForResult 在使用相机时向 onActivityResult 返回 null

android - 在 Kotlin Android 应用程序中处理传入的蓝牙数据流

android - 如何获取在使用其 SD 卡的真实设备上运行的 android 应用程序的日志?

cocoa-touch - 在 IOS4.0 中使用 UIWebView 加载请求时发生内存泄漏