Java 内存分配和变量寿命
我的问题或更确切地说是问题如下: 1) 静态变量驻留在哪里。有些文章说它们位于堆上,有些文章说它们位于类定义的perm gen区域,因为它们是类属性。我知道第二个选项可能是正确的,因为它是一个类属性。Java 内存分配和变量寿命,java,Java,我的问题或更确切地说是问题如下: 1) 静态变量驻留在哪里。有些文章说它们位于堆上,有些文章说它们位于类定义的perm gen区域,因为它们是类属性。我知道第二个选项可能是正确的,因为它是一个类属性。 2) 最后一个变量位于何处,如果: a) 它是primitive类型的实例变量 b) 它是基元类型方法的局部变量 c) 它是一个引用类型的实例变量 b) 它是类型引用方法的局部变量 3) 如果参考局部变量是局部变量,则将其存储在何处。 4) 对于数组,内存分配是否有任何差异,因为它们是实例变量或本
2) 最后一个变量位于何处,如果: a) 它是primitive类型的实例变量 b) 它是基元类型方法的局部变量 c) 它是一个引用类型的实例变量 b) 它是类型引用方法的局部变量
3) 如果参考局部变量是局部变量,则将其存储在何处。
4) 对于数组,内存分配是否有任何差异,因为它们是实例变量或本地线程变量
谢谢
静态变量驻留在哪里
-静态变量位于方法区域中,permgen位于方法区域内
Where does the final variable reside and what is its life if
Its an instance variable of type primitive
-如果它的实例变量是,它将停留在它所属的对象的堆中,并且由于没有对保存它的对象的引用而超出范围
它是基元类型方法的局部变量
-它停留在堆栈上,当到达方法右括号时,它就不在范围内了
它是引用类型的实例变量
-它停留在它所属对象的堆中,并且由于没有对保存它的对象的引用而超出范围
它是类型引用方法的局部变量
-它停留在堆栈上,当到达方法右括号时,它就不在范围内了
如果参考局部变量是局部变量,那么它们存储在哪里。
-在堆栈上
对于数组,内存分配是否与实例变量或本地线程变量有任何区别。
-以及数组是一个对象它存储在堆上
…但是从Java 6u23
版本开始,引入了转义分析
,如果JVM确定对象无法转义该方法,它将尝试在线程堆栈上创建对象,而不是在堆上….对于4个不同的问题,4个不同的线程如何?非常感谢..dat提供了很大的帮助