01-005 jvm方法区
定义
方法区(Method Area):1.6永久代(PermGen),1.8元空间(metaspace)
1.8中定义:
方法区是所有线程共享的,存储一些和类结构相关的一些信息,包括方法、构造器、成员方法等等。
虚拟机启动时创建方法区,逻辑上是堆的一个组成部分(不一定)。
各个公司可能会有自己的不同实现,比如Oracle的Hotspot在1.8以前实现是永久代(堆的一部分),1.8之后实现是元空间(本地内存,即操作系统内存)。
方法区也可能内存溢出。
二进制字节码包括类基本信息,常量池,类方法定义,包含了虚拟机指令。
常量池
一张常量表,虚拟机指令根据常量表找到要执行的类名,方法名,参数类型,字面量等信息。
运行时常量池
常量池是*.class文件中的,当该类被加载,它的常量池信息就放入运行时常量池,并把里面的符号地址变为真实地址。
学习整理于解密JVM.