当前位置: 首页 > 面试题库 >

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

傅博容
2023-03-14
问题内容

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

感谢和问候


问题答案:

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

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

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



 类似资料:
  • 问题内容: 我知道常量池的概念以及JVM用于处理字符串文字的字符串常量池。但是我不知道JVM使用哪种类型的内存来存储String常量文字。堆栈还是堆?由于它的文字不与任何实例相关联,因此我假定它将存储在堆栈中。但是,如果没有任何实例引用该文字,则必须通过GC运行来收集文字(如果我错了,请纠正我),那么如果将其存储在堆栈中,该如何处理? 问题答案: 从技术上来说,答案都不是。根据Java虚拟机规范,

  • 问题内容: 我对Java不太了解。 我浏览了几个链接,发现博客上写着“ Java Primitives存储在堆栈上”,我觉得这取决于实例变量或局部变量。 经过几个链接后,我的结论是, 类变量(基元)作为对象包含的对象的一部分存储在堆中。 类变量– object(用户定义)–作为其包含的Object的一部分存储在堆中。对于参考对象和实际对象都是如此。 方法变量-基元-作为该堆栈框架的一部分存储在堆栈

  • 问题内容: 我有个问题 例如,当我在方法内部声明变量时会发生什么。 在堆栈或堆中的哪里分配了myShip参考? 我认为是在堆栈中,但由于我在阅读《 J2ME游戏编程》“ Java类已实例化到Java堆”上而感到困惑 所有Java类别? 提前致谢 问题答案: 是对对象的引用,位于方法调用堆栈上,称为“堆栈”。当一个方法被称为一个内存块被推到栈顶时,该内存块有空间容纳所有原语(int,float,bo

  • 我对Java没什么概念。 我浏览了一些链接,发现博客上写着“存储在堆栈上的Java原语”,我觉得这取决于实例变量或局部变量。 经过几个环节,我的结论是, 类变量(原语)作为对象的一部分存储在堆中。 类变量——对象(用户定义)——作为对象的一部分存储在堆中。这对于参考对象和实际对象都是正确的。 方法变量——基元——作为堆栈框架的一部分存储在堆栈上。 方法变量-对象(用户定义)-存储在堆上,但是对堆上

  • 问题内容: 被存储在客户端或服务器上的变量? 问题答案: 变量存储的位置由PHP的配置确定。通常这是在Linux / Unix系统上。如果无法100%确定,请使用此功能查看您的特定设置,方法是在您域的中创建具有以下内容的文件:

  • 问题内容: 请看以下示例: 首先,存放在哪里?是吗: 由编译器复制到引用它的内部类的隐藏成员变量中 复制到堆并在堆上引用 留在堆栈上并以某种方式引用 其他的东西 我的 猜测 是第一选择。 其次,要做到这样做所引起的任何性能问题(而不是简单地作为类的成员变量创建并按其引用),尤其是当您创建大量引用最终局部变量的内部类构造时。 问题答案: 是的,它们已被复制,这就是为什么您必须将变量声明为final的