Java 中静态成员存储在内存中的什么位置?
静态方法和变量,例如提供的 Java 代码片段中演示的那些,存储在 Oracle 的 Hotspot JVM 和其他基于它的堆内存的 PermGen 部分中。 PermGen 保存元数据,包括类相关数据。
存储机制:
-
静态变量:仅其技术值(原语或引用)存储在 PermGen 中。如果静态变量引用一个对象,则该对象本身驻留在标准堆区域中,而不是 PermGen。
-
静态方法: 所有方法(包括静态方法)都会作为反射的一部分占用 PermGen 中的空间数据。
重要注意:
- PermGen 仅用于元数据;静态字段存储在常规堆中。
- Eclipse OpenJ9 和其他 JVM 可能没有 PermGen 或 Metaspace。
- 依靠 Finalize() 进行垃圾回收是不可靠的。由 JVM 来确定垃圾回收时间和合格的对象。
- 单独将静态变量设置为 null 可能无法保证从堆中删除对象。
- 代码和数据的存储方式可能会有所不同取决于 JVM 实现和版本。
以上是Java 静态成员存储在内存中的什么位置?的详细内容。更多信息请关注PHP中文网其他相关文章!