这个堆栈实现中是否有任何内存泄漏?

时间:2014-12-16 13:53:51

标签: java data-structures memory-leaks

在下面的堆栈实现中,它使用一个简单的链接对象而不使用任何集合。你看到任何内存泄漏吗?

以下代码:

public class Stack {

    private Node nextNode = null;

    private class Node {
        String data;
        Node adjNode;
    }

    public void put(String data) {
        Node node = new Node();
        node.data = data;
        node.adjNode = this.nextNode;
        this.nextNode = node;
    }

    public String pop() {
        String data = nextNode.data;
        this.nextNode = nextNode.adjNode;
        return data;
    }

    public static void main(String[] args) {

        Stack myStack = new Stack();
        myStack.put("SP");
        myStack.put("Senthil");
        myStack.put("Arumugam");

        System.out.println("myStack.pop():" + myStack.pop());
        System.out.println("myStack.pop():" + myStack.pop());
        System.out.println("myStack.pop():" + myStack.pop());
    }
}

2 个答案:

答案 0 :(得分:1)

由于垃圾收集器清理了悬挂指针,因此在这种类型的程序中,java无法进行内存泄漏。

答案 1 :(得分:0)

假设您没有在线程之间共享实例,则此程序不会出现任何类型的内存泄漏。

如果要从不同的线程访问该代码,请同步putpop方法。