Java中是否存在内存泄漏?

时间:2016-06-26 06:48:03

标签: java memory-leaks garbage-collection

我刚接受采访,有人问我是否有可能在Java中发生内存泄漏。我不知道答案。所以我想知道:

  • 怎么可能?
  • 它的一个例子是什么?
  • 即使Java使用垃圾收集,它仍然可以吗?

1 个答案:

答案 0 :(得分:3)

从广义上讲,内存泄漏是指您继续保留已分配但不再需要使用的内存的任何情况。

考虑以下[公认的人为]例子:

public class LeakingClass {
    private static final List<String> LEAK = new ArrayList<>();

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("What is your name? ");
        while (in.hasNext()) {
            name = in.next();
            System.out.println("Hi " + name);
            LEAK.add(name);
            System.out.println("What is your name? ");
        }
    }
}

LEAK列表在每次迭代中都会增长,并且无法释放它,但它从未使用过。这是泄密。