1

考虑到托管代码/垃圾收集等的性质,最初我并没有过多关注 Android 中内存泄漏的可能性。我想这可能有点幼稚。这是问题:

假设有一个活动 - MyActivity。当操作系统启动它时,它会在其 onCreate() 中实例化另一个类(MyOtherClass)并保留对它的引用。但是,假设 MyOtherClass 的实例还保留对上下文的引用——这恰好也是对 MyActivity 实例的引用。

现在发生了一些事情 - 说屏幕被旋转了。操作系统调用活动 onDestroy() 并删除对 MyActivity 的旧实例的引用。但是,该活动实例仍然具有对 MyOtherClass 实例的引用,而该实例又具有该活动的实例。

那么,我认为这两个班级将永远保持彼此的生命是对的吗?

如果是这样,我想可能的答案是(a)不保留上下文引用,以另一种方式获取它,或者(b)在活动 onDestroy() 中删除它对其他任何东西的任何引用,那么这一切都应该崩溃.

4

1 回答 1

1

Java 不允许循环链接使彼此保持活动状态(在内存中)。但是,如果您声明了静态引用或创建了单例样式对象,Java 将无法帮助您。

一个好的开始可能是阅读避免内存泄漏

于 2012-11-11T07:55:42.550 回答