2012-06-26 38 views
2

我最近开始学习Java编程,并且刚刚到达Java线程主题。 我想要了解的是,可以说我有一个Thread对象,其run()方法内部创建的Object cat一个实例,据我学会了(你比欢迎纠正我,如果我错了,更多)参考变量cat应该保存在堆中(使所有“活”线程都可见)。然而,我想了解的是什么样的数据存储在线程的“私人”堆栈w.r.t这Object cat当我在线程内创建对象的引用时会发生什么?

回答

0

猫参考(指针)将在线程堆栈,猫对象将在堆。

,如果你想了解更多,您可以检查此链接:

http://www.javaworld.com/javaworld/jw-06-2012/120618-jw-archive-under-the-hood-threads-and-shared-data.html

+0

10倍这是非常有用的。 “在Java虚拟机内部,每个线程被授予一个Java堆栈,它包含了其他线程无法访问的数据,包括线程调用的每个方法的本地变量,参数和返回值。堆栈中的数据仅限于原始类型和对象引用在JVM中,不可能将实际对象的图像放在堆栈上,所有对象都驻留在堆上。 – JanosAudron

1

否,参考变量将不会是对heap..It将是线程的私人堆栈...

当运行方法被执行创建将参考以下..the对象,从而使自己有资格GC ..

0

你的猫变量将是在线程堆栈和其知名度将运行方法。主线程和你产生的所有线程没有任何公共变量,除了你明确地在线程和SO变量之间共享的变量。

0

run是越来越执行的对象将在heap被创建,但参考变量将横亘在Thread私人堆栈。

相关问题