【问题标题】:Are Memory Leaks Possible in Java? [duplicate]Java中可能存在内存泄漏吗? [复制]
【发布时间】:2016-10-28 09:39:50
【问题描述】:

我刚刚接受了一次面试,有人问我在 Java 中是否可能存在内存泄漏。我不知道答案。所以我想知道:

  • 怎么可能?
  • 有什么例子呢?
  • 即使 Java 使用垃圾回收,它仍然可能吗?

【问题讨论】:

    标签: java memory-leaks garbage-collection


    【解决方案1】:

    从广义上讲,内存泄漏是指您继续持有您不再需要且不再打算使用的已分配内存的任何情况。

    考虑以下 [诚然人为的] 示例:

    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 列表在每次迭代中都会增长,无法释放它,但它从未被使用过。这是泄漏。

    【讨论】:

    • 为什么需要用户输入? LEAK.add("str");while(true) 就足够了
    • @sharonbn 确实如此。这个例子似乎有点可口,但归根结底,它并没有什么特别之处,而且可能有无数不同的例子。
    猜你喜欢
    • 2019-12-01
    • 2011-08-12
    • 2011-07-18
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 2017-09-11
    • 2016-08-27
    • 1970-01-01
    相关资源
    最近更新 更多