为什么在Android中使用Activity的简单示例会导致内存泄漏?

问题描述 投票:0回答:2

我有以下示例,我不确定为什么这会导致内存泄漏?我不能把头缠住吗?!

public class MyLeakActivity extends Activity {

// static reference to evil

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

private final class Evil {
      }
}

提前感谢。

问候Fabian

java android memory-management memory-leaks
2个回答
1
投票

您应在创建新对象之前检查e == null。


1
投票

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

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

  • 避免在Activity中使用非静态内部类,请使用静态内部类并进行WeakReference。

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

© www.soinside.com 2019 - 2024. All rights reserved.