Java:静态字段在内存中的什么位置?

2022-09-02 10:16:26

如果我们将对象存储在对象的静态字段中,JVM如何为其分配内存?它是否存在于“隐式”(不确定我是否使用了正确的单词)类对象中?静态字段与对象字段有何不同?


答案 1

静态字段是类变量,在该类的所有实例之间共享。实例变量(或我认为您所指的对象字段)属于类的各个实例,并且不共享。

至于它们在内存中的存储位置将基于JVM的实现,并且没有理由需要两个不同的JVM根据规范将它们存储在同一位置(至少据我所知 - 应该在这里插入适当的规格表链接)。


答案 2

正如Nick的回答所说,语言规范没有特定的“物理”位置,但就您可以推理的逻辑心理模型而言,它可以帮助您将静态字段视为附加到这些字段所属类的类对象()上。Foo.class

顺便说一句,在处理静态实体时,类对象以其他方式使用(由语言规范规定):例如,在调用静态方法时,锁保存在该方法所属类的类对象上。synchronized


推荐