我有一个关于GC根的问题。我读到GC的根源是“Live thread”。那是什么意思? 我总是有印象,每个线程都有它自己的堆栈,堆栈的局部变量是线程的GC根,现在我很困惑。线程表示具有哪些其他类型的对象引用,它们不在帧堆栈或本地堆栈上?作为GC根的线程
其他问题是年轻一代收集使用GC根,还是只为主要算法?
感谢
更新: 好难过,所以要保持它的简单:我读过这篇短文:yourkit.com/docs/java/help/gc_roots.jsp,有一个“主题”选项, GC根,究竟是什么意思,该线程是GC根?什么样的对象被Thread GC根引用,它没有被堆栈引用?为什么这两个类别不同?
你的问题很混乱。 1)当然,只有活动的线程才算GC根源。 2)什么是“线索表示”? 3)静态变量是非堆栈GC根。 4)每个GC变体都考虑了GC根源;它不可能*不*考虑到它们。 – 2014-10-07 09:36:13
对不起,为了保持简单:我读过这篇简短的文章:http://www.yourkit.com/docs/java/help/gc_roots.jsp,并且有一个“Thread”选项作为GC根,究竟是什么这是否意味着该线程是GC根?什么样的对象被Thread GC根引用,它没有被堆栈引用?为什么这两个类别不同? – alobodzk 2014-10-07 09:57:05
@MarkoTopolnik我不认为静态变量是根,否则类加载器将永远不会卸载。 – 2014-10-07 09:59:03