Can you spot the "memory leak"。如何写出内存泄漏的代码

// Can you spot the "memory leak"?

import java.util.Arrays;

public class Stack {
    private Object[] elements;
    private int size = 0;
    private static final int DEFAULT_INITIAL_CAPACITY = 16;

    public Stack() {
        elements = new Object[DEFAULT_INITIAL_CAPACITY];
    }

    public void push(Object e) {
        ensureCapacity();
        elements[size++] = e;
    }

    public Object pop() {
        if (size == 0)
            throw new EmptyStackException();
        return elements[--size];
    }

    /**
     * Ensure space for at least one more element, roughly
     * doubling the capacity each time the array needs to grow.
     */
    private void ensureCapacity() {
        if (elements.length == size)
            elements = Arrays.copyOf(elements, 2 * size + 1);

    }
}

这段代码会发生内存泄漏,无论我如何写测试类,都没有发生内存泄漏。


car
浏览 1568回答 1
1回答

leiqjl

当你调用pop方法时,弹出了这个对象,但栈内部的数组还保留着这个引用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java