Ruby线程未调用.join方法的影响及垃圾回收相关问题
关于后台线程与对象垃圾回收的问题解答
问题1:对象无引用时的GC与线程状态
- 当程序中不再存在对该句柄对象的引用时,对象本身会被正常垃圾回收,但这不会影响它包含的线程。线程的生命周期独立于宿主对象——只要线程还在运行,JVM就会让它继续执行完任务,不会因为宿主对象被GC而终止线程。只有线程自己完成工作、被中断,或者JVM退出时,线程才会停止。
问题2:未调用join的已完成线程的回收
- 线程完成工作后,就算没有调用
join(),也会被彻底清理并被垃圾回收。join()的作用仅仅是让调用它的线程等待目标线程执行完毕,完全不影响线程自身的资源回收。线程结束后会进入TERMINATED状态,JVM会自动回收它占用的资源,和是否调用join()没有关系。
内容的提问来源于stack exchange,提问作者meisel
相关产品推荐
相关产品推荐

