JVM5、方法区
5、方法区
5.1 栈、堆、方法区的交互关系
5.2 方法区的理解
是一种虚拟机规范,而元空间是HotSpotJVM对方法区的一种实现;HotSpotJVM中把方法区看作是非堆目的是要和堆分开,所以将方法区看作是一块独立于Java堆的内存空间;
5.3 方法区的内部结构
类型信息
对每个加载的类型(类class,接口interface,枚举enum,注解annotation)。JVM在方法区存储以下信息:
- 这个类型的完整有效类名
- 这个类型直接父类完整有效名(interface和Object都没有父类)
- 这个类型的修饰符
- 这个类型的直接接口的一个有序列表
域信息
方法信息
- 方法名称
- 返回类型
- 参数的数量和类型
- 修饰符
- 字节码、操作数栈、局部变量表及大小
- 异常表(异常处理的开始位置、结束位置、代码处理在PC的偏移地址、异常类的常量池索引)
non-final的类变量
- 静态变量和类关联在一起,随着类的加载而加载,成为类数据在逻辑上的一部分。
- 类变量被类的所有实例共享。
注:全局变量在编译的时候就会被分配了。