java - 使用 arraylist 和 foreach 时如何避免内存泄漏?

标签 java android arraylist memory-leaks

private ArrayList<OutputInputPair> pairs = new ArrayList<OutputInputPair>();
public void process() {
    while (!stopped) {
        for (OutputInputPair pair : pairs) {
            processCommandPairs(pair);
        }
    }
}

首先当用户单击停止按钮时,stopped = true 因此,如果用户没有单击按钮, 始终执行 processCommandPairs 方法。

当停止按钮点击时

@Override
public void stop() {
    Log.d(TAG, "STOP memory leak");
    pairs.clear();
    pairs = null;
    stopped = true;
}

我只有1个问题,如果用户不点击按钮,数组列表中会发生内存泄漏是对的吗?

如果不是,如何避免 arraylist 上的内存泄漏?

谢谢。 enter image description here

最佳答案

重写 Activity 的 onDestroy 方法,并将 stopped 显式设置为 true,以便在 Activity 关闭时退出 while 循环,并且 ArrayList 可用于垃圾回收.

关于java - 使用 arraylist 和 foreach 时如何避免内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46901298/

相关文章:

android - 使用 NFC 启动特定的 Android 应用程序

Java无法识别main方法中的数组

java - JTable 保持模型的颜色而不是行的颜色

java - 在那种情况下我真的需要实现迭代器吗?

java - 使用 Architecture Components MVVM 进行身份验证,将 token 从 Repository 传递到 ViewModel

Java 流对映射列表的值求和

android - 当您将主题应用于 Activity/应用程序并将样式应用于 View 时会发生什么?

android - 如何更改 preferences.xml 数据库的默认名称?

java - 从 Scanner 添加多个数据类型元素到 ArrayList

java - 如果有多个结果,数组的最低值