繁体   English   中英

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

[英]Is removing the reference to an object sufficient to not get memory leak?

假设我有一个国际象棋网站。 人们登录并与其他人下棋,而我的 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你的推荐人(除非该实例(S)包含它们永远不会去的范围之)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM