一个对象的存在,以及在这种情况下会发生什么
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。
假设我们有一个来自人的对象:
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。