Amo*_*kar 1 java garbage-collection
如果我有一个类Sample,我有一个实例方法,其中包含instanceMethod.该类有一个main方法,我在其中创建Sample本身的对象,并在不使用引用变量的情况下调用它的instanceMethod.
像这样:
new Sample().instanceMethod();
主要内部.
由于此对象没有引用,垃圾收集器会收集它吗?
在Java 1中,我不相信在instanceMethod()执行时可以收集对象.在该main方法的堆栈帧存在是所述对象的引用,至少在逻辑上(JIT编译器的Elid可能的话).您没有将它分配给变量这一事实不会对字节码产生太大影响.
当然,instanceMethod()完成后,该对象可能有资格进行垃圾回收 - 但可能没有.例如,instanceMethod()可以将引用存储this在静态变量中.
基本上它不值得在错综复杂的角落情况下挂起 - 只是依靠GC收集任何不能再以任何方式到达的对象,而不是收集可能仍在使用的对象.
1在.NET对象可以仍然被垃圾而一个实例方法是"在"的对象执行,如果JIT编译器可以证明无其变量的将被再次读取收集.它非常混乱,并且可能导致非常微妙的错误.
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |