为什么要使用双亲委派模型 , 组织类加载器之间的关系?Java类随着它的类加载器一起具备了一种带优先级的层次关系 。比如java.lang.Object , 它存放在rt.jar中 , 无论哪个类加载器要加载这个类 , 最终都是委派给启动类加载器进行加载 , 因此Object类在程序的各个类加载器环境中 , 都是同一个类 。
如果没有使用双亲委派模型 , 让各个类加载器自己去加载 , 那么Java类型体系中最基础的行为也得不到保障 , 应用程序会变得一片混乱 。
文章插图
什么是类加载机制?Class文件描述的各种信息 , 都需要加载到虚拟机后才能运行 。虚拟机把描述类的数据从Class文件加载到内存 , 并对数据进行校验、转换解析和初始化 , 最终形成可以被虚拟机直接使用的Java类型 , 这就是虚拟机的类加载机制 。
虚拟机和物理机的区别是什么?这两种机器都有代码执行的能力 , 但是:
- 物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面的 。
- 虚拟机的执行引擎是自己实现的 , 因此可以自行制定指令集和执行引擎的结构体系 , 并且能够执行那些不被硬件直接支持的指令集格式 。
- 局部变量表
- 操作数栈
- 动态连接
- 方法返回地址
文章插图
Java 方法调用什么是方法调用?方法调用唯一的任务是确定被调用方法的版本(调用哪个方法) , 暂时还不涉及方法内部的具体运行过程 。
Java的方法调用 , 有什么特殊之处?Class文件的编译过程不包含传统编译的连接步骤 , 一切方法调用在Class文件里面存储的都只是符号引用 , 而不是方法在实际运行时内存布局中的入口地址 。这使得Java有强大的动态扩展能力 , 但使Java方法的调用过程变得相对复杂 , 需要在类加载期间甚至到运行时才能确定目标方法的直接引用 。
Java虚拟机调用字节码指令有哪些?
- invokestatic:调用静态方法
- invokespecial:调用实例构造器方法、私有方法和父类方法
- invokevirtual:调用所有的虚方法
- invokeinterface:调用接口方法
经验总结扩展阅读
- 2023年9月15日适合入宅吗 2023年9月15日入宅黄道吉日
- 2023年农历八月初一宜祭祖吗 2023年9月15日祭祖黄道吉日
- JVM学习笔记——垃圾回收篇
- 2023年1月27日取蜂蜜行吗 2023年1月27日适合取蜂蜜吗
- 2023年农历正月初六安装房门吉日 2023年1月27日是安装房门的黄道吉日吗
- 2023年1月27日举办成人仪式行吗 2023年1月27日举办成人仪式吉日一览表
- 银手镯变黑是生病了吗?
- 九州缥缈录铁皇结局是什么?
- 向前是什么电视剧的男主角?
- 长脸型适合什么样的眼镜?