我最近开始学习Java编程,我们只是访问了Java Threads主题。
我想要理解的是,假设我有一个Thread
对象,在Object cat
方法中创建run()
的实例,据我所知(非常欢迎您如果我错了就纠正我)引用变量cat
应该保存在堆中(使其对所有“活”线程都可见)。然而,我想要了解的是,在Object cat
这个线程的“私有”堆栈中存储了什么样的数据。
答案 0 :(得分:1)
不,引用变量不会在堆上..它将在线程的私有堆栈上...
当run方法执行时..创建的对象将是无引用的,因此使其自身符合GC ..
答案 1 :(得分:0)
您的cat变量将位于线程堆栈上,其可见性将是run方法。您生成的主线程和所有线程没有任何公共变量,除非您在线程和SO变量之间明确共享。
答案 2 :(得分:0)
cat引用(指针)将在线程堆栈中,cat对象将在堆中。
如果您想了解更多信息,可以查看此链接:
答案 3 :(得分:0)
当run
被执行时,对象将在heap
中创建,但引用变量将位于Thread
的私有堆栈中。