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);

    }
}