1
最初,由于托管代码/垃圾回收的性质等原因,我并未对Android中内存泄漏的可能性给予高度关注。我想这可能有点天真。这里的问题:Android内存泄露 - 致命拥抱
说有一个活动 - 我的活动。当OS启动时,在onCreate()中实例化另一个类(MyOtherClass)并保存对其的引用。但是,说MyOtherClass的实例也保持对上下文的引用 - 这也是对MyActivity实例的引用。
现在发生了什么 - 说屏幕旋转。 OS调用onDestroy()活动并删除对MyActivity的旧实例的引用。但是,该活动实例仍具有对MyOtherClass实例的引用,该实例又具有该活动的实例。
那么,我是否认为这两个阶级将会永远相互活着?如果是这样,我想可能的答案是(a)不保留上下文引用,以另一种方式,或(b)在活动onDestroy()中删除任何其他引用,然后它应该会崩溃。
*我是否正确地认为这两个班会保持对方永远活着?* No.(http://stackoverflow.com/questions/427363/garbage-collection-behavior-with-isolated-cyclic-参考文献)。如果是这种情况,那么这些活动每次都会抛出内存泄漏,因为它中的每个View对象(以及更多)都具有对“Activity”本身的引用。 – Luksprog