让我们说我们有一个来自人的对象:
Person p = new Person("andrea");
如果我现在创建P的另一个对象:
p = new Person("Sam");
Person Andrea在这个cas中发生了什么?它将从垃圾收集器中删除?还是会存在?如果是这样我怎么能删除Andrea的对象?
Thanx为您的说明提供帮助。
答案 0 :(得分:5)
p = new Person("Sam");
一旦你写完这个,你就会覆盖现有的,因此无法访问。将很快收集垃圾。
答案 1 :(得分:5)
p
是一个最初指向Person
“andrea”的引用。创建新的Person
并使p
指向它后,之前创建的Person
对象(“andrea”)将变为无法访问,因此符合条件对于GC 。当实际的对象将被GC时,取决于当前的JVM状态和正在使用的GC。
答案 2 :(得分:1)
无法强制垃圾收集器从堆中删除该对象。您唯一能做的就是通过编写System.gc()
来调用垃圾收集。
但它会在调度程序运行垃圾收集时使用。