首页 > 解决方案 > 为什么在Android中使用Activity的简单示例会导致内存泄漏?

问题描述

我得到了以下示例,但我不确定为什么这会导致内存泄漏?我不能把头绕过去?!

public class MyLeakActivity extends Activity {

// static reference to evil

   private static final Evil e;   
   public MyLeakActivity() {
     e = new Evil();
   }

private final class Evil {
      }
}

提前致谢。

问候费边

标签: javaandroidmemory-managementmemory-leaks

解决方案


看看这里……这篇文章是针对Android开发的。

https://dzone.com/articles/a-troublesome-legacy-memory-leaks-in-java

  • 避免在您的活动中使用非静态内部类,使用静态内部类并创建弱引用。

我认为您的设计可能永远不允许封闭类被 gc'd。除非您有充分的理由使用非静态内部类(可能出于范围原因),否则一个好的经验法则是始终从声明为静态的内部类开始。


推荐阅读