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 都不会在方法完成后收集学生对象)
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 都不会在方法完成后收集学生对象)