Java匿名对象和垃圾收集部分-2

Java Anonymous Object and Garbage collection part -2

private Student student = new Student();

public Student getStudent(){
    return student;
}


public void function(){
   getStudent().setName("john");
}

public void function(){
   Student student_local = getStudent();
   student_local.setName("john");
}

Does GC behave differently for both of the snip?

I mean which case (CASE-1/CASE-2) is more GC efficient in terms of Time?

I simple word GC will be called for CASE-1 or not?

阿米特我已经看到你的另一个问题,重要的永远只是可达性,无论你如何使用学生,它总是可以到达,直到包含它的 class 可以到达。

更新,关于您添加的问题:

I mean which case (CASE-1/CASE-2) is more GC efficient in terms of Time?

都不是,因为您在两个函数中做同样的事情,并且请记住,您无法真正知道您的对象何时会被收集,对于此类示例甚至都无关紧要。

阅读关于 GC 工作原理的描述:http://www.cubrid.org/blog/dev-platform/understanding-java-garbage-collection/

已编辑:应该学会阅读问题,阅读我的答案的修订版,对不起阿米特。

在所有这三种情况下,方法 function() 对在 class 初始化时实例化的实例变量进行操作。这意味着在所有情况下,实例变量 student 将在方法 function 完成后继续持有对对象 Student 的引用,因此该对象不会成为垃圾收集的候选对象。这也意味着这些代码片段在垃圾收集方面的效率将是相同的(因为在所有情况下,GC 都不会在方法完成后收集学生对象)