内存分配和变量的生命

时间:2012-09-06 18:29:46

标签: java

我的问题或更确切的问题如下:

1)静态变量驻留在哪里。有些文章称它们位于堆上,有些人在perm gen区域中使用类定义,因为它们是类属性。我理解第二个选项可能是正确的,因为它是一个类属性 2)如果最终变量存在于何处以及它的生命是什么:    a)它是一个类型为primitive的实例变量    b)它是类型原语方法的局部变量    c)它是类型引用的实例变量    b)它是类型引用方法的局部变量
3)如果参考局部变量是本地变量,它们在哪里存储 4)在数组的情况下,内存分配存在任何差异,因为它们是实例变量或本地线程变量。

由于

1 个答案:

答案 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 ....