请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于GC Root

老师,您好 在下面两个回答中,我感觉有点矛盾
https://coding.imooc.com/learn/questiondetail/RQyZ06gBW7zXe459.html
https://coding.imooc.com/learn/questiondetail/ZVmwRPwr0Bk61deQ.html
“方法区、栈和本地方法区不被GC所管理,因而选择这些区域内的对象作为GC roots”
按照这个说法,Object o=new Object();那么GC Root不该是o吗?为什么你说的是
“所以可以作为GC root对象的是 o引用的Object实例。”这个有点迷糊

正在回答 回答被采纳积分+3

1回答

翔仔 2021-04-26 23:35:59

同学好,主要是因为可达性分析是基于堆对象去做标记的,我们程序在虚拟机的栈中执行,每次函数调用调用都是一次入栈。在栈中包括局部变量表和操作数栈,局部变量表中的变量可能为引用类型(reference),他们引用的对象即可作为GC Root。不过随着函数调用结束出栈,这些引用便会消失。所以不矛盾呢,因为这些栈变量指向的对象是暂时能够作为GC可达性的标的的

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号