public class GarbageCollection {
public static void main(String[] args)
{
GarbageCollection gb= new GarbageCollection();
GarbageCollection gb2=method1(gb);
GarbageCollection gb4=new GarbageCollection();
gb2=gb4;/*line 4*/
somethinsgsillogical();
}
static void somethinsgsillogical() {
// TODO Auto-generated method stub
}
static GarbageCollection method1(GarbageCollection mgb)
{
mgb=new GarbageCollection();
return mgb;
}
}
程序是否合乎逻辑? 如果是,请注意,在第4行之后,有多少对象符合垃圾收集的条件
答案 0 :(得分:1)
这似乎是一个家庭作业问题,你所做的就是发布问题,所以我会给你一个提示:
gb2=gb4
将为符合条件的垃圾收集分配任何gb2。这个对象是垃圾,因为它不再被引用。当垃圾没有被清理或标记为垃圾收集时,我们就会发生内存泄漏。
由于Java有垃圾收集器,因此在Java中泄漏内存实际上非常困难,但是当内存未正确管理时仍会发生泄漏。使用完毕后,始终将对象设置为null:
gb2 = null;
gb4 = null;
当一个对象没有对它的引用时,垃圾收集器会将其视为垃圾收集。
有关垃圾收集的更多信息,SO上有一个非常好的页面。我真的建议阅读它: