在下面的堆栈实现中,它使用一个简单的链接对象而不使用任何集合。你看到任何内存泄漏吗?
以下代码:
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());
}
}
答案 0 :(得分:1)
由于垃圾收集器清理了悬挂指针,因此在这种类型的程序中,java无法进行内存泄漏。
答案 1 :(得分:0)
假设您没有在线程之间共享实例,则此程序不会出现任何类型的内存泄漏。
如果要从不同的线程访问该代码,请同步put
和pop
方法。