Java 可能存在未经处理的内存泄漏

Java 可能存在未经处理的内存泄漏,java,android,garbage-collection,Java,Android,Garbage Collection,首先,我来自iOS环境,所以这就是为什么这个问题可能是显而易见的 我知道Android有垃圾收集器,但对象仍然引用(保留)其他对象,我的理解是GC只会删除没有引用的对象(这一点可能我错了)。查看此代码: private void addDefaultTextWatcher(final EditText editText) { editText.addTextChangedListener(new TextWatcher() { @Override

首先,我来自iOS环境,所以这就是为什么这个问题可能是显而易见的

我知道Android有垃圾收集器,但对象仍然引用(保留)其他对象,我的理解是GC只会删除没有引用的对象(这一点可能我错了)。查看此代码:

private void addDefaultTextWatcher(final EditText editText) {
        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }

            @Override
            public void afterTextChanged(Editable s) {
                value = s.toString();
                if (getOnValidate() != null) {
                    getOnValidate().validate(editText, s.toString());
                }
            }
        });
    }

editText
引用了
TextWatcher
匿名类,该类也引用了
editText
。垃圾收集器会帮我处理这个吗?如果没有。。。建议的方法是什么?

Java垃圾收集器足够智能,可以识别循环引用。你什么都不应该做。

太棒了,谢谢。在处理Android时,我应该注意哪些情况会导致泄漏或循环引用?到目前为止,我看到的最好的解释是:不是“如果它有引用”,而是“如果它无法访问”。垃圾收集器不是在寻找它可以收集的东西,而是在寻找它不能收集的东西,然后收集其余的东西[稍微过于简单化]