四、Java 虚拟机
1、Java 内存结构
- 堆 由线程共享,存放 new 出来的对象,是垃圾回收器的主要工作区域。
- 栈 线程私有,分为 Java 虚拟机栈和本地方法栈,存放局部变量表、操作栈、动态链接、方法出口等信息,方法的执行对应着入栈到出栈的过程。
- 方法区 线程共享,存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码等信息,JDK 1.8 中方法区被元空间取代,使用直接内存。
2、Java 类加载机制
- 加载 加载字节码文件。
- 链接
- 验证 验证字节码文件的正确性。
- 准备 为静态变量分配内存。
- 解析 将符号引用(如类的全限定名)解析为直接引用(类在实际内存中的地址)。
- 初始化 为静态变量赋初值。
双亲委派模式
当一个类需要加载时,判断当前类是否被加载过。已经被加载的类会直接返回,否则才会尝试加载。加载的时候,首先会把该请求委派该父类加载器的
lo