Java方法区是JVM内存模型很重要组成部分,而且Java面试经常问到,下面我就重点详解Java方法区@mikechen
什么是Java方法区
Java方法区,英文全称是Method Area,是JVM内存中的一个重要区域,与堆一样是各个线程所共享的内存区域。
如下图所示:
Java方法区的作用
Java方法区的作用:主要用于存储类的信息、常量、静态变量和即时编译器编译后的代码等数据。
JVM方法区内部结构
Java方法区内部结构包括以下内容,主要分为如下6大部分:
1.运行时常量池(Runtime Constant Pool)
运行时常量池存放类中的常量,包括:字符串、final修饰的常量等。
2.字段数据
字段数据:存储类或接口中声明的变量,字段数据主要包括:字段名、字段类型、访问修饰符和常量值等信息。
3.方法数据
方法数据主要:存储类或接口中声明的方法信息,方法包括静态方法和实例方法。
方法数据主要包括:方法名、参数类型、返回值类型、访问修饰符、字节码、异常表和局部变量表等信息。
4.类数据
类数据主要:存储类的完整信息。
类数据主要包括:类名、访问修饰符、父类名、接口列表、字段数据、方法数据和注解信息等。
5.常量数据
常量数据主要存储:类中的常量数据。
常量数据主要包括:常量名、常量类型、常量值和访问修饰符等信息,比如 :静态final字段、String常量等。
6.即时编译器编译后的代码
即时编译器将Java字节码编译成本地机器代码后,会将编译后的代码存储到方法区中,供JVM在运行时使用。
以上就是Java方法区的详解,更多JVM内容,请查看:JVM(Java虚拟机)从0到1全部合集
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》