目录
-
内存结构
- 高级语言编译--->字节码文件
- -->类加载子系统(class loader system)
- 加载(loader)
- 类加载器
- 链接(linked)
- 初始化(init)
- 加载(loader)
- --->运行时数据区(runtime)
- 方法区
- 栈
- 堆(堆数据是多个线程共享的)
- pc寄存器
- 本地方法栈(和下面的本地方法接口调用有关)
- --->执行引擎
- 解释器
- 即时编译器
- 垃圾回收器
-
类加载子系统
-
加载(硬盘加载到内存)
- 之前编译成的class文件都特定的头,加载的类信息放在方法区的内存空间、
- 通过类的全类名获取类的二级制流加载,类中静态的数据结构加载到方法区,在内存中生成大的clss类
-
链接
-
验证
- 验证字节码文件的格式,比如说java的字节码文件开头
-
准备
- 为类变量赋默认初始值(static),初始化是在下一个阶段,但是final就是常量,常量是在类加载的时候就会有值;
-
解析
-
-
初始化
-
类加载器
-
bootstarp classloader(启动类加载器)
-
extension calssloader(扩展类加载器)
-
appclassloader(系统类加载器)
-
-