【问题标题】:Java- Where does the variable name or Identifier gets stored, Stack or Heap?Java-变量名或标识符存储在哪里,堆栈还是堆?
【发布时间】:2016-09-08 10:09:44
【问题描述】:

标识符或变量名存储在 java 中的什么位置?我知道对象存储在堆中,变量存储在堆或堆栈中,具体取决于变量的类型和范围。我们可以调试或编写任何程序来确认吗?

感谢和问候

【问题讨论】:

    标签: java object variables heap-memory stack-memory


    【解决方案1】:

    字段的名称作为类元数据的一部分存储在以前的 PermGen 现在的元空间中。

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

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

    【讨论】:

      【解决方案2】:

      变量名称与其他类元数据一起存储在“方法区域”(它是 permgen 的一部分)中。

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

      【讨论】:

      • 您是说类元数据和变量名称存储在堆中吗?
      • 更新了我的答案。 @JeetendraChoudhary
      • 谢谢你,这个元空间在哪里只是好奇。它重要吗?我的意思是它对开发人员有用还是只是很高兴知道的事情。
      • @JeetendraChoudhary - Permgen 数据已移至与您的堆空间不同的本机内存空间。
      【解决方案3】:

      变量名存储在永久代的方法区。对象始终存储在堆中,而对象引用存储在堆栈中。

      【讨论】:

      • 我认为 OP 在这里询问的是“字段名称”而不是字段数据
      猜你喜欢
      • 1970-01-01
      • 2015-05-27
      • 2014-04-21
      • 2015-01-24
      • 2011-06-22
      • 2013-01-10
      • 2018-08-27
      • 2010-11-15
      • 1970-01-01
      相关资源
      最近更新 更多