gpt4 book ai didi

java - 删除对对象的引用是否足以避免内存泄漏?

转载 作者:行者123 更新时间:2023-11-30 08:41:54 27 4
gpt4 key购买 nike

假设我有一个国际象棋网站。人们登录并与其他人下棋,而我的 Java 程序正在执行所有计算。我只看到两种选择:

  • 为每个国际象棋游戏运行一个新的 Java 程序“实例”。这意味着每次新的国际象棋游戏开始时,我基本上都会在终端中编写 java chess

  • 运行 Java 程序的一个实例,但每当开始新游戏时,都会创建一个带有两个 Player 的新 Board()。但在这种情况下,我需要注意内存泄漏,因为我永远不会终止 Java 程序。

我假设第一个选项不好。这个假设并不是真正基于任何知识,所以我很可能是错的。但是为了这篇文章,我选择了第二个选项。如果我错了,请告诉我。

使用第二个选项,每次开始新的国际象棋游戏时我都可以做这样的事情:

Player p1 = new Player(white);
Player p2 = new Player(black);
Board b1 = new Board(p1,p2);
startMatch(b1);

当游戏结束时,这三个对象不再需要,应该从内存中删除。我听说的是 Java-garbage-collector 收集所有无法访问的对象。

如果我这样做:

p1 = null;
p2 = null;
b1 = null;

我完成任务了吗?如果是,我是不是做得很好,或者这是否令人难以置信和令人厌恶?

最佳答案

值(或实例)超出范围就足够了(一旦无法访问它们就有资格进行垃圾收集),不需要 显式 null 您的引用(除非包含它们的实例永远不会超出范围)。

关于java - 删除对对象的引用是否足以避免内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34780113/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com