Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 内存分配和变量寿命_Java - Fatal编程技术网

Java 内存分配和变量寿命

Java 内存分配和变量寿命,java,Java,我的问题或更确切地说是问题如下: 1) 静态变量驻留在哪里。有些文章说它们位于堆上,有些文章说它们位于类定义的perm gen区域,因为它们是类属性。我知道第二个选项可能是正确的,因为它是一个类属性。 2) 最后一个变量位于何处,如果: a) 它是primitive类型的实例变量 b) 它是基元类型方法的局部变量 c) 它是一个引用类型的实例变量 b) 它是类型引用方法的局部变量 3) 如果参考局部变量是局部变量,则将其存储在何处。 4) 对于数组,内存分配是否有任何差异,因为它们是实例变量或本

我的问题或更确切地说是问题如下:

1) 静态变量驻留在哪里。有些文章说它们位于堆上,有些文章说它们位于类定义的perm gen区域,因为它们是类属性。我知道第二个选项可能是正确的,因为它是一个类属性。
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提供了很大的帮助