JVM方法区是JVM类加载机制的重要组成部分,而且Java面试经常问,下面我就重点详解JVM方法区@mikechen
JVM内存结构组成
要搞懂JVM方法区,首先要了解JVM内存结构的组成,这点很重要,因为JVM方法区是JVM内存结构的一部分。
JVM内存结构主要包含以下5个部分,如下图所示:
主要包含:主堆内存、Java虚拟机栈、本地方法栈、方法区、程序计数器。
也就是说JVM方法区,是JVM内存结构的组成之一,主要用于存储类的信息、常量、静态变量和即时编译器编译后的代码等数据。
JVM方法区组成
JVM方法区组成,如下图所示:
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面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》