每当加载一个类时,堆中存储的内容以及堆栈中存储的内容是什么?
线程也在哪里?
答案 0 :(得分:4)
引用类型在堆中。
任何基本类型数据和对堆上的值的引用(方法的参数/局部变量)都在堆栈上。
每个线程都有自己的堆栈。
应用程序中的所有线程共享相同的堆。
答案 1 :(得分:3)
这很简单:
请注意,局部变量只能 保存引用(“指针”)或原始值。局部变量不能保存“对象”。
请注意,此视图是JVM规范中定义的视图。如果需要,具体的JVM可以在非堆区域中分配对象。例如:如果它知道新创建的对象永远不会转义当前调用,那么可以将实例化对象放入堆栈区域。但是,这是开发人员无法看到的非常优化。
答案 2 :(得分:0)
原语:堆栈
对象:堆
线程:共享同一堆时有一个单独的堆栈。
答案 3 :(得分:0)
@Joachim Sauer
如果你说的是真的,那么为什么,在下面的代码中,
class Student{
int age; //instance variable
String name; //instance variable
public Student()
{
this.age = 0; //local variable and member of an object
name = "Anonymous";
}
那为什么不是'name ='Anonymous“; '一个局部变量?? 它是什么类型的变量,它在哪里生活?