让我们说我有一个国际象棋网站。人们登录并与其他人下棋,我的Java程序正在进行所有计算。我看只有两个我会怎么做选择:正在移除对象的引用足以不会导致内存泄漏?
运行Java程序的每一个象棋游戏的一个新的“实例”。这意味着我在每次新的国际象棋游戏开始时都在终端写入
java chess
。运行Java程序的一个实例,但每创建一个新游戏时创建一个新的
Board()
和两个Player
。但在这种情况下,我需要关注内存泄漏,因为我永远不会终止Java程序。
我假设第一个选项是坏的。这个假设并不是基于任何知识,所以我很可能是错的。但为了这篇文章,我正在与第二个选项。如果我错了,让我知道。
与第二个选项去,我可以做这样的事情每一个新的国际象棋游戏开始时间:
Player p1 = new Player(white);
Player p2 = new Player(black);
Board b1 = new Board(p1,p2);
startMatch(b1);
,当游戏结束这三个对象不再需要,应予删除来自记忆。我听到的是Java垃圾收集器收集所有无法访问的对象。
所以,如果我这样做:
p1 = null;
p2 = null;
b1 = null;
我已经完成了任务?如果是的话,我是否以一种好的方式做到了,或者这是令人难以置信的令人难以置信的恶心?
删除对象的所有*(实时)引用足以避免内存泄漏。我们没有看到这些对象在'startMatch'(或更高版本)内发生了什么。如果他们藏在某个地方,他们可能会活得很好。 – Thilo