0%

方法区

本文默认基于64位的JDK 8(其虚拟机实现是HotSpot),除非特别说明。

一、方法区内部数据

方法区内有:类元数据、运行时常量池、即时编译器编译以后的代码等数据。

1.1、类元数据

类元数据,存放有:类型信息,访问修饰符,字段信息,方法信息等。

在C/C++实现层面,对应的是一个Klass对象。

1.2、运行时常量池

运行时常量池,其英文名为“Runtime Constant Pool”。

Class字节码文件中有一部分信息是常量池,其英文名为Constant Pool Table,在运行时,它其中的内容会被载入到运行时常量池中。

二、方法区实现

JDK 6使用“永久代”实现方法区,JDK 8使用“元空间”实现方法区:实现策略升级解决一些已知存在问题,具体原因没有必要深究[3]。


参考文献

[1]http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5.4
[2]http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html
[3]http://openjdk.java.net/jeps/122

您的支持将鼓励我继续分享!