我想知道垃圾收集器何时释放与 LinkedList 中已删除节点关联的内存!
我的意思是GC释放内存只是因为没有对该对象的引用? (请引用下面的代码)
public class Node {
int data;
Node next;
public Node(int data){
this.data = data;
}
public Node(Node node){
data = node.data;
next = node.next;
}
}
public void delete (Node prevNode, Node currentNode){
if (currentNode == tail){
tail = prevNode;
}
if (currentNode == head){
head = currentNode.next;
} else {
prevNode.next = currentNode.next;
}
len--;
}
最佳答案
垃圾收集器定期检查无法访问的对象,例如此处删除的节点(假设没有其他引用。)
确切地说,当它这样做时,会受到很多条件的影响,因为有多个垃圾收集器实现使用不同的计时策略。一般来说,您无法预测何时。
如果您需要在删除时立即释放某些资源(例如,您的链表节点可能有关联的文件描述符),您最好在删除最后一个引用之前自己执行此操作。
如果您需要监视垃圾收集器何时处理节点,您应该查看 java.lang.ref
包中可用的类,特别是 ReferenceQueue类。
关于java - java链表中被删除的节点会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21210978/