一个对象的存在,以及在这种情况下会发生什么

existence of an object, and what will happen in this case

假设我们有一个来自人的对象:

Person p = new Person("andrea");

如果我现在创建 P 的另一个对象:

p = new Person("Sam");

这个 cas 和 Person Andrea 发生了什么?它会从垃圾收集器中删除吗?或者它仍然会存在?如果可以,我怎样才能删除 Andrea 的对象?

感谢您的解释和帮助。

p = new Person("Sam");

一旦你写了这个,你就覆盖了现有的,因此它是不可访问的。即将进行垃圾回收。

无法强制垃圾收集器从堆中删除该对象。您唯一可以做的就是通过编写 System.gc() 来调用垃圾回收。 但它何时会 运行 垃圾收集取决于调度程序。

p 是最初指向 Person "andrea" 的引用。一旦您创建了一个新的 Person 并使 p 指向它,之前创建的 Person 对象 ("andrea") 将变为 unreachable 并且因此 有资格获得 GC。实际对象何时被 GC 取决于当前 JVM 状态和正在使用的 GC。