Java 将静态堆栈<;活动>;导致内存泄漏?;
我创建一个对象来管理活动。像这样:Java 将静态堆栈<;活动>;导致内存泄漏?;,java,android,memory-leaks,Java,Android,Memory Leaks,我创建一个对象来管理活动。像这样: public class ActivityManager { private static ActivityManager instance; private static Stack<Activity> activityStack; public void addActivity(Activity activity) { activityStack.add(activity); } } 在本例中
public class ActivityManager {
private static ActivityManager instance;
private static Stack<Activity> activityStack;
public void addActivity(Activity activity) {
activityStack.add(activity);
}
}
在本例中,包含活动引用的静态对象
这是内存泄漏吗
为什么金丝雀什么也没发生
如果集合中的add函数将保存活动引用?请尝试故意泄漏一些内容,例如将启动器活动实例分配给静态字段 或者试着按下按钮,我相信这会在活动被破坏后触发泄漏(并且会出现吐司),LeakCanary会检测到是否泄漏
或者尝试引用另一个示例我知道引用会导致内存泄漏。但在这个例子中,什么都没有发生。如果它是专门用于收集的?我以前没有尝试过,也不在文档中,但这可能是[本回购协议]的另一个特点[,我猜。我已经使用了leakcanary。我对集合中的add函数是否包含活动引用感到困惑。如果您真的想检查活动的实例,请尝试换行并调试,这样您就可以轻松地分析从那里添加的活动列表。
public class BaseActivity extends AppCompatActivity {
protected String TAG = "BaseActivity";
protected ActivityManager mActivityManger;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivityManger = ActivityManager.getInstance();
mActivityManger.addActivity(this);
}
}