java - 删除我创建的java中的整个链表
问题描述
我想删除我在 java 中创建的整个列表(注意:我没有在 java.util 中使用内部列表)。我已将 head 分配给 null,但我的问题是 java 垃圾收集器会处理没有 head 的列表,还是应该删除将由 java 垃圾收集器处理的每个节点(我的意思是将每个节点设置为 null)?以下是我的代码,请让我知道哪一个可以,尽管两者都可以,但我仍然想知道。提前致谢。
//first code
public void deleteList()
{
Node n = head;
Node n1;
head = null;
System.out.println("Deleting list");
while(n != null)
{
n1 = n;
n = n.next;
n1 = null;
}
n1 = n;
n1 = null;
System.out.println("List deleted");
}
//second code
public void deleteList()
{
head = null;
}
解决方案
这取决于您的实施。如果您的 Node 类只是内部的(因此您永远不会返回可能保存它的 Node)并且您没有任何静态数据,那么应该没有从垃圾收集根到任何节点的路径,并且 GC 将摆脱他们。
所以这可能是对的,除非你的实现做了一些不寻常的事情。(我还假设您没有尾变量或其他任何引用内部节点的变量,因为这些变量也需要设置为 null)。
推荐阅读
- mysql - 使用 vb.net 插入 mysql 时的十进制值不正确
- micronaut - 如何在 Micronaut 中实现异步 @PostConstruct 方法?
- angular - 当我刷新页面时,Angular Web 构建部署显示白屏
- javascript - 选择日期后,日期选择器应关闭
- mysql - Docker mysql: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
- codeigniter - 无法使用提供的设置连接到数据库我的错误
- c# - 对数据库优先实体框架模型的更改
- javascript - 在多语言 Dropdows Jquery 代码中出现错误
- twig - Drupal 8 如何给下拉链接上课?
- apache-spark - 没有足够的空间在内存中缓存 Dataframe