包含引用好/坏的属性

Dan*_*l B 7 android

我是Android/Java的新手(通常使用PHP和JavaScript).我已经阅读了一些关于应用程序内存泄漏问题的文章,当引用被错误地使用时,所以我对我在其他人的工作中经常看到的问题有疑问.

很多人,当他们需要访问诸如Views之类的东西时,在多个方法中,会在创建活动期间分配的属性中保留对此的引用.根据我的阅读(或者至少了解我所读过的内容),这是内存泄漏的课程之一?

是否更好地为对象分配ID,然后在每种方法中搜索它们?如果是这样,那么动态创建的对象呢?

Bri*_*uis 0

当对那些也持有对象引用的事物的引用被不与 UI 绑定的Context事物所持有时,您在 Android 中提到的泄漏问题就会发生。在其包含的活动中保留对视图的引用,因为在某些时候该活动将不再被系统中的任何内容引用(之后),并且因为不再有来自垃圾收集根的对它的引用(如全局变量) ,它有资格进行垃圾收集。换句话说,一旦没有其他人持有对该活动的引用,在该活动及其视图之间建立的循环引用就不再重要。onDestroy()

问题出现的地方是在UI 和活​​动生命周期调用之外发送对活动的引用(活动本身就是一个活动)。Context诸如位置侦听器之类的东西或您忘记取消注册的东西。这将保留该引用,使整个树不符合垃圾收集的条件。因此,大泄漏。