如果我在类中定义一个 static
变量,如下所示:
class MyClass
{
private static List<String> list = new ArrayList<String>();
}
list
会导致内存泄漏吗?如果是,那么如何?
最佳答案
您发布的代码片段是内存泄漏,因为如果您从不清除该列表中的元素或将其设置为 null
,它将继续增长并且不会被垃圾收集。
对于非静态列表(实例或本地范围列表),这种情况发生的频率要低得多。对于非静态变量,一旦实例超出范围,变量(也可能是对象)也会超出范围,因此它可以被垃圾收集。对于静态变量,它们永远不会超出范围(除非您将引用设置为 null
,而您不能在 final
上执行此操作),因为它们链接到类。
关于java - 定义静态List会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17883187/