Java-变量名称或标识符存储在哪里,堆栈还是堆?

时间:2016-05-12 13:59:40

标签: java variables object stack heap

标识符或变量名称在哪里存储在java中?我理解对象存储在堆中,变量根据变量的类型和范围在堆或堆栈中存储。我们可以调试或编写任何程序来确认吗?

谢谢&此致

3 个答案:

答案 0 :(得分:3)

字段的名称作为类元数据的一部分存储在以前的PermGen now-Metaspace中。

数组元素没有名称,只有数字。 (Cue Patrick McGoohan.)

方法和构造函数参数以及局部变量和处理程序参数的名称仅存储在类文件中的调试符号信息中(如果选择了该选项)。 JVM不需要它们,因为编译器已将它们映射到字节码中使用的堆栈帧插槽号。

答案 1 :(得分:1)

变量名存储在"方法区" (这是permgen的一部分。)以及其他类元数据。

有一个特殊区域可以保存称为方法区域的类元数据。这是permgen的一部分(在java 8之前的堆中)现在它已被移动到元空间

答案 2 :(得分:0)

变量名称存储在永久生成的方法区域中。对象始终存储在堆中,但对象引用存储在堆栈中。