1.介绍
方法区就是存储了运行在Java虚拟机中所有类的信息,存储的这些类的信息在后面我们都会讲解。
我们只需要知道,当Java虚拟机通过类加载器加载这个类,这个类的信息就会保存到方法区中。
2.方法区结构
方法区会存储类的如下信息:
1. 类名
在方法区中会存储包名/类名,在Java程序中我们是包名.类名,但是在方法区中存储的却是包名/类名
2. 父类、接口
也是存储父类的包名/类名与接口的包名/接口名
3. 类与接口区分标志
为了辨别这个class到底是类还是接口,这个标志就是用来区分的
4. 权限修饰符
public、private、protected、default、static、final这些修饰符
5. 常量池
这个class中包含的所有常量,常量池需要讲的东西很多,以后会有一篇文档专门介绍常量池
6. 变量信息
类中的所有成员变量的信息,成员变量的修饰符、变量类型、变量名称、变量初始值等
7. 方法信息
类中方法的修饰符、返回值、方法名、参数列表、方法字节码,方法字节码就是这个方法的内容,方法字节码就是Java虚拟机要指定的指令
8. 静态变量
static修饰的变量,存储变量的修饰符、变量名、初始值
9. 装载该类的类装载器引用
class文件是由类装载器进行装载的,在方法区的这块存储类信息的区域中也存储了类装载器的引用。
10. java.lang.Class类对象的引用
当装载一个class文件,就会创建一个java.lang.Class的对象,这个java.lang.Class的对象就代表了这个类型
3.方法区概念图
文档免费下载:
百度文库:请搜索"深入讲解Java虚拟机系列之方法区"