【发布时间】:2014-07-24 13:12:35
【问题描述】:
假设我在实体类中有代码:
this.setCurrentState(new NormalState(this));
如果在正常状态类中我将实体的状态切换为:
entity.setCurrentState(new HungryState(entity));
虽然 NormalState 对象持有对仍处于活动状态的实体的引用,但它是否会成为垃圾回收事件,或者它不会导致内存泄漏?
【问题讨论】:
-
至少在我看来,您在 似乎 不同的对象上调用
setCurrentState的方式可能会造成混淆...... -
是的,最终。大概只有一个
currentState引用变量,当新状态的引用值被存放在那里时,旧状态变得无法访问。 -
@user3580294 第一段代码来自的实体类在构造函数中设置,第二段用于普通状态类,它们都处理同一个实体。
-
关于 Java 垃圾收集的重要知识是您不需要了解它的任何内容。除了在一些相当罕见的情况下,这一切都得到了神奇的照顾。