一个 for 循环中的强引用对象 String a=new String("") 在 for 循环结束后会被回收吧?
是 for 循环全部结束,还是当前循环结束就算了?
但是这个是基于哪个理论基础的,,查了好久资料没看到哪里提到了作用域和垃圾回收之间的关系。
java 中没有被 gcroots 引用的对象就会被回收,那到底谁是 gcroots。。为啥离开作用域就会被回收?
1
fkdog 2019-02-21 15:05:46 +08:00
回收的话应该是会在所有线程到达 safepoint 点的时候再进行回收操作的。
作用域结束以后,作用域内的对象不可被作用域外部访问而已 |
2
cyspy 2019-02-21 20:02:57 +08:00
只能保证作用域内不被回收(否则程序就崩了),但不保证离开就一定会被回收。GCRoots 包括栈、static、常量、native 方法,不被这些引用的你代码里也不可能访问到了
|