一文搞懂JVM方法区(建议收藏)

一文搞懂JVM方法区(建议收藏)-mikechen

JVM方法区是JVM类加载机制的重要组成部分,而且Java面试经常问,下面我就重点详解JVM方法区@mikechen

JVM内存结构组成

要搞懂JVM方法区,首先要了解JVM内存结构的组成,这点很重要,因为JVM方法区是JVM内存结构的一部分。

JVM内存结构主要包含以下5个部分,如下图所示:

一文搞懂JVM方法区(建议收藏)-mikechen

主要包含:主堆内存、Java虚拟机栈、本地方法栈、方法区、程序计数器。

也就是说JVM方法区,是JVM内存结构的组成之一,主要用于存储类的信息、常量、静态变量和即时编译器编译后的代码等数据。

 

JVM方法区组成

JVM方法区组成,如下图所示:

一文搞懂JVM方法区(建议收藏)-mikechen

JVM方法区存储的内容包含:已加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

1.运行时常量池

运行时常量池(Runtime Constant Pool):存放类中的常量,包括字符串、final修饰的常量等。

 

2.字段数据

字段数据:存储类或接口中声明的变量,字段包括静态字段和实例字段。

 

3.方法数据

方法数据:存储类或接口中声明的方法信息,包括方法的访问修饰符、返回值类型、参数列表和字节码等。

 

4.类数据

类数据:存储已加载的类的信息,包括类的名称、父类、接口、字段、方法等信息

 

5.常量数据

常量数据:存储类中的常量数据,包括静态final字段和String常量等

 

6.即时编译器编译后的代码

即时编译器编译后的代码:即时编译器将Java字节码编译成本地机器代码后,会将编译后的代码存储到方法区中,供JVM在运行时使用。

需要注意的是,Java方法区也被称为永久代(Permanent Generation),但是在Java 8中,永久代被移除,被一个称为元空间(Metaspace)的新的内存区域取代。

以上就是JVM方法区的详解,更多JVM内容请查看:JVM(Java虚拟机)从0到1全部合集

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法