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

时间:2015-10-27 09:13:26

标签: java garbage-collection

让我们说我们有一个来自人的对象:

Person p = new Person("andrea");

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

p = new Person("Sam");

Person Andrea在这个cas中发生了什么?它将从垃圾收集器中删除?还是会存在?如果是这样我怎么能删除Andrea的对象?

Thanx为您的说明提供帮助。

3 个答案:

答案 0 :(得分:5)

p = new Person("Sam");

一旦你写完这个,你就会覆盖现有的,因此无法访问。将很快收集垃圾。

答案 1 :(得分:5)

p是一个最初指向Person“andrea”的引用。创建新的Person并使p指向它后,之前创建的Person对象(“andrea”)将变为无法访问,因此符合条件对于GC 。当实际的对象将被GC时,取决于当前的JVM状态和正在使用的GC。

答案 2 :(得分:1)

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