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

静态变量的实际存储位置是什么?

朱兴安
2023-03-14
问题内容

静态变量是在程序执行的整个过程中分配的,因此堆栈和堆都不方便。那在哪呢 应该在某个地方加载它吗?


问题答案:

静态字段在加载类时被初始化,并且在卸载该类的类加载器时被丢弃。它们可以被清理,甚至可以在另一个类加载器中复制。

对于使用OSGi的此类应用程序,静态变量在整个应用程序生命周期中都不会存在,因此可以多次重装。

实现方式可能取决于JVM,但Sun / Oracle
JVM创建一个“对象”来保存类的静态字段。可通过Unsafe类访问此对象,该类也可用于检查此“对象”字段。



 类似资料:
  • 本文向大家介绍请说明静态变量存在什么位置?相关面试题,主要包含被问及请说明静态变量存在什么位置?时的应答技巧和注意事项,需要的朋友参考一下 考察点:类 方法区

  • 问题内容: 我已经学习Python几个月了,对C语言的了解也很少,我想知道是否有人可以帮我解决这个疑问: 变量是名称,值还是存储位置? 例如: 变量x,x的值还是x在内存中的位置? 我正在寻找关于什么是变量的清晰解释。我已经看过Wikipedia上有关变量和此问题的页面,但对我来说都不是很清楚。如果这是一个重复的问题,那么指向正确答案的链接将非常有用。 谢谢! 问题答案: 语句发生了几件事: 创建

  • Swift中的静态变量是如何存储的? > 如果我从未调用func usesticvar(),会发生什么?这些变量是否已初始化? 如果我调用useStaticVar()然后再也不访问它们,会发生什么?应收账

  • 问题内容: 例如: 这些变量将在Java,堆或堆栈存储器中存储在哪里?它们如何存储? 问题答案: 静态方法(实际上是所有方法)以及静态变量都存储在PermGen堆的部分中,因为它们是反射数据(与类相关的数据,而不与实例相关的数据)的一部分。 更新说明: 请注意,只有变量及其技术值(原始或引用)存储在空间中。 如果你的静态变量是对对象的引用,则对象本身存储在堆的常规部分(青年/旧世代或幸存者空间)中

  • 我用动物代替了我真正的代码,所以这可能看起来有点傻,但这是一个真正的问题。 我的java程序得到一个不同动物的列表,一次遍历一个动物,对每个动物做以下事情:动物被创建,动物做一些随机运动,每个运动被计数,然后程序收集运动数据,做一些分析,并继续到列表中的下一个动物。 我有一个抽象的动物类,由不同的动物对象扩展,狗,猫等等。每个都有自己的动作。在基础动物类中,有一个散列表计算动物的随机运动。 upd

  • 问题内容: 我已经定义了一个对象并声明了一个静态变量。在该方法中,当我尝试打印实例和类变量时,两者都打印相同的值。 不是实例变量吗?它应该打印0而不是50吗? 问题答案: 不,只有一个变量-您尚未声明任何实例变量。 不幸的是,Java允许您访问静态成员,就像通过相关类型的引用访问静态成员一样。这是IMO的设计缺陷,某些IDE(例如Eclipse)允许您将其标记为警告或错误- 但这是语言的一部分。您