我的问题或更确切的问题如下:
1)静态变量驻留在哪里。有些文章称它们位于堆上,有些人在perm gen区域中使用类定义,因为它们是类属性。我理解第二个选项可能是正确的,因为它是一个类属性
2)如果最终变量存在于何处以及它的生命是什么:
a)它是一个类型为primitive的实例变量
b)它是类型原语方法的局部变量
c)它是类型引用的实例变量
b)它是类型引用方法的局部变量
3)如果参考局部变量是本地变量,它们在哪里存储
4)在数组的情况下,内存分配存在任何差异,因为它们是实例变量或本地线程变量。
由于
答案 0 :(得分:3)
Where does the static variable reside
- 静态变量位于Method Area
,而permgen位于方法区域内。
Where does the final variable reside and what is its life if
Its an instance variable of type primitive
- 如果是它的实例变量,它会停留在它所属的Heap inside the Object
上,并且超出范围,因为没有对包含它的对象的引用。
Its a local variable of a method of type primitive
- 它停留在堆栈上,并且超出了范围,因为达到了大括号的方法......
Its an instance variable of type reference
- 它会停留在它所属的Heap inside the Object
上,并且超出范围,因为没有对包含它的对象的引用..
Its a local variable of a method of type reference
- 它停留在堆栈上,并且超出了范围,因为达到了大括号的方法......
Where are the reference local variables stored if they are local.
- 在堆栈上......
In case of arrays is there any difference in memory allocation as in they are instance
variable or local thread variable.
- 以及数组是一个对象它存储在Heap
....但是从Java 6u23
版本开始,引入Escape Analysis
,根据这个,如果 JVM决定对象无法转义方法,它将尝试在线程堆栈上创建对象,而不是在HE HEAP ....