Skip to content

Latest commit

 

History

History
7 lines (4 loc) · 1.02 KB

log.md

File metadata and controls

7 lines (4 loc) · 1.02 KB

假设我的手代表着我们 App 能用的所有内存。我的手里能放很多东西。比如:钥匙,Android 玩偶等等。设想我的 Android 玩偶需要扬声器才能工作,而我的扬声器也需要依赖 Android 玩偶才能工作,因此他们持有彼此的引用。

我的手里可以持有如此多的东西。扬声器依附到 Android 玩偶上会增加总重量,就像引用会占用内存一样。一旦我放弃了我的玩偶,把他扔到地上,会有垃圾回收器来回收掉它。一旦所有的东西都进了垃圾桶,我的手又轻便了。

不幸的是,有的时候,一些不好的情况会发生。比如:我的钥匙没准和我的 Android 玩偶黏在了一起,阻止我把 Android 玩偶扔到地上。最终的结果就是 Android 玩偶无论如何都不会被回收掉。这就是内存泄露。

有外部的引用(钥匙,扬声器)指向了 本不应该再指向的对象(Andorid 玩偶)。类似这样的小规模的内存泄露堆积以后就会造成大麻烦。