我正在阅读the jvm specification,它声明了“方法区”'存储每类结构,例如运行时常量池,字段和方法数据,以及方法和构造函数的代码。
我知道运行时常量池是什么。我想字段和方法数据是代码程序员编写的方法和构造函数的代码或编译的字节码jdk,但方法数据究竟是什么?
答案 0 :(得分:1)
它是JVM的五个运行时逻辑内存区域之一,如堆,堆栈,本机堆栈等...请参阅Inside the JVM。
这就是它的作用:
当Java虚拟机加载类型时,它使用类加载器来定位相应的类文件。类加载器读入类文件 - 二进制数据的线性流 - 并将其传递给虚拟机。虚拟机从二进制数据中提取有关类型的信息,并将信息存储在方法区域中。类中声明的类(静态)变量的内存也取自方法区域。
类型信息:
对于它加载的每种类型,Java虚拟机必须在方法区域中存储以下类型的信息:
类型的直接超类的完全限定名称(除非类型是接口或类java.lang.Object,它们都没有超类)
该类型是类还是接口
类型的修饰符(公共,抽象,最终的某些子集)
任何直接超接口的完全限定名称的有序列表
这是一张图片来说明: