java - 定义静态List会导致内存泄漏吗?

标签 java memory-leaks static class-variables

如果我在类中定义一个 static 变量,如下所示:

class MyClass
{
  private static List<String> list = new ArrayList<String>();
}

list会导致内存泄漏吗?如果是,那么如何?

最佳答案

您发布的代码片段是内存泄漏,因为如果您从不清除该列表中的元素或将其设置为 null,它将继续增长并且不会被垃圾收集。

对于非静态列表(实例或本地范围列表),这种情况发生的频率要低得多。对于非静态变量,一旦实例超出范围,变量(也可能是对象)也会超出范围,因此它可以被垃圾收集。对于静态变量,它们永远不会超出范围(除非您将引用设置为 null ,而您不能在 final 上执行此操作),因为它们链接到类。

关于java - 定义静态List会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17883187/

相关文章:

java - 使用 mergeSort 的合并算法合并大小为 n 的 K 个已排序数组

java - 如何从 Java 中的日期对象格式中删除毫秒

java - 使用 FART 删除斜杠、反斜杠

c++ - 类(class)和类(class)助手

Java SunPKCS11 通过网络访问 USB 加密 token

c - 内存泄漏,我似乎找不到原因

javascript - Ionic(或 Angular )中的内存泄漏?

在 FFmpeg 中正确分配和填充帧

static - 为什么 Rust 中的 const 函数不能调用关联函数?

c++ - 从静态函数调用非静态变量