Java虚拟机(JVM)元数据区存放的内容

类元数据

元数据区(在HotSpot虚拟机中也称为Metaspace)主要存放了类的元数据信息,如类的名称、访问修饰符、常量池、字段描述、方法描述等。

运行时常量池

运行时常量池是每个类或接口的常量池表的运行时表示形式,包含了若干种不同的常量,从编译期生成的字面量到方法和字段的引用,这些都会在类加载后进入元数据区的运行时常量池。

静态变量

类的静态变量也被存放在元数据区,因为它们是与类相关的,而不是与类的某个特定实例相关的。

JIT编译器编译后的代码

即时编译器(JIT)编译后的代码有时也会存放在元数据区或类似的本地内存区域中。

其他信息

此外,元数据区可能还包含了类的加载器信息、类的结构信息、数组信息等。

在Java 8之前,类的元数据信息是存放在永久代(PermGen)中的,但从Java 8开始,永久代被移除,取而代之的是元数据区(Metaspace)。Metaspace相对于永久代的好处在于,它使用本地内存,因此默认情况下不受Java堆大小的限制,能够更灵活地管理类的元数据信息。

相关推荐
大道至简Edward15 分钟前
深入 JVM 核心:一文读懂 Class 文件结构(附 Hex 实战解析)
jvm
Nyarlathotep011315 分钟前
SpringBoot Starter的用法以及原理
java·spring boot
wuwen520 分钟前
WebFlux + Lettuce Reactive 中 SkyWalking 链路上下文丢失的修复实践
java
SimonKing41 分钟前
GitHub 10万星的OpenCode,正在悄悄改变我们的工作流
java·后端·程序员
Seven972 小时前
虚拟线程深度解析:轻量并发编程的未来趋势
java
雨中飘荡的记忆11 小时前
ElasticJob分布式调度从入门到实战
java·后端
考虑考虑20 小时前
JDK25模块导入声明
java·后端·java ee
_小马快跑_21 小时前
Java 的 8 大基本数据类型:为何是不可或缺的设计?
java
Re_zero1 天前
线上日志被清空?这段仅10行的 IO 代码里竟然藏着3个毒瘤
java·后端
洋洋技术笔记1 天前
Spring Boot条件注解详解
java·spring boot