一尘不染

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

java

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


阅读 398

收藏
2020-09-08

共1个答案

一尘不染

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

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

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

2020-09-08