2.7方法区

方法区是所有java线程共享的区,它存储了跟类结构相关的信息,如运行时常量池成员变量方法数据成员方法和构造器方法的代码以及特殊化方法(指类的构造器)

方法区在虚拟机启动时创建,逻辑上方法区是堆的一部分,但并不强制如此实现。如Oracle的Hotspot虚拟机在1.8以前,方法区的实现叫做永久代,永久代的实现就是使用了堆的一部分。而在1.8以后,移除了永久代,换了一个实现,这个实现叫做元空间,元空间的实现就不是使用堆的内存,而是使用操作系统的内存。

注意:方法区是规范,永久代、元空间都是实现

更详细的方法区定义请参考JVM规范-方法区定义

下面通过图的方式,方便大家的理解

永久代 ![](./media/virtual_machine_metaspace.jpg)元空间

Last updated

Was this helpful?