【发布时间】:2011-01-18 20:32:04
【问题描述】:
郑重声明,我不是一个 Java 初学者,而是 - 相反 - 一个有点忘记 Java 基础知识的中级人员。
C类{
公共静态无效主要(字符串一个[]){
C c1=新 C();
C c2=m1(c1); //第 4 行
C c3=新 C();
c2=c3; // 第 6 行
另一种方法();
}
静态 C m1(C ob1){
ob1 =新C(); // 第 10 行
返回ob1;
}
无效另一个方法(){}
}
从上面的代码:
为什么在第 6 行之后,
C类型的 2 个对象符合垃圾回收(GC)的条件?为什么不在第 4 行和第 10 行,将
c1的副本 传递给m1()方法。因此,最终在第 6 行中,将有 1 个对象(而不是 2 个)符合 GC 条件。毕竟,java不是按值传递而不是按引用传递吗?
【问题讨论】:
-
这段代码不应该编译:
anothermethod不是静态的,而是在静态上下文中调用的
标签: java garbage-collection core