屏幕旋转更改时内存快照中的Android多个 Activity 实例

标签 android memory-leaks

我在 Android Studio 中创建了一个简单的空白 Activity (MainActivity 类)并在我的三星手机上运行它。我将屏幕从纵向模式旋转到横向模式几次。我拍了一张内存快照,发现快照中有我的 Activity(MainActivity 类)的多个实例。为什么内存配置文件中有多个 MainActivity 实例?我没有任何代码包含对 Main Activity 的任何引用,例如 AsyncTasks 或 Threads。

我已阅读http://developer.android.com/guide/topics/resources/runtime-changes.html文档。但我很好奇多个实例是否正常运行并且最终被 gc 到一个 Activity 实例。

最佳答案

HPROF 查看器显示所有驻留在内存中的对象,即使该对象无法从任何 GC 根访问。您可以通过检查对象的“到 GC Root 的距离”列来判断 Activity 是否泄漏。如果它不可访问,它将是空白的,并且至少会在执行完整的 GC 扫描时被收集。如果它在该列中有一个数字,那么您可以检查对象本身以查找持有对它的引用的内容。

如果您在意外情况下发现泄漏,最好能回复导致泄漏的原因。

关于屏幕旋转更改时内存快照中的Android多个 Activity 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34883846/

相关文章:

android - 如何将 Osmdroid 设置为永不过期磁贴?

Android 设计支持库 24.2.1 使 BottomSheet 在启动时打开

java - Firebase 用户分组

android - 对谷歌地图 api 方向的 http 请求与航路点

Android AlarmManager 在错误的时间触发

c++ - 内存泄漏无法解决 C++

c - 为什么 char *T = "hello";不给内存泄漏?

java静态成员内存泄漏

c++ - 使用函数初始化静态 vector 会导致内存泄漏吗?

android - LeakCanary 没有提供足够的信息来识别泄漏