【Java】基础知识

4-23 类的加载
Java类的加载 是把.class文件的二进制的数据读取到内存中,将其放在运行时数据区的方法区内,并在堆区上创建java.lang.class对象,该对象封装了类在方法区的数据结构,给使用者提供了方法区内的数据结构相关接口。
类加载器并不会等到 某个类被首次使用到,再加载他.JVM允许类加载器在某个即将被使用的时候,预先加载他.如果在预先加载的使用遇到了.class文件缺失或存在错误,类加载器将会在该类被首次使用时,才会报告错误.而如果没有被使用则不会报错。
类的加载过程包括 加载 验证 准备 解析 初始化.
类的加载有
1. 命令行启动应用时候由JVM初始化加载
2. 通过Class.forName()方法动态加载.
3. 通过ClassLoader.loaderClass()动态加载
双亲委派机制:当一个类加载器收到一个请求时,他首先不会自己去加载这个类,还是将其将给父对象,并且接着向上传递,直至传递给启发式类加载器,由启发式类加载器加载.只有当搜索范围内没有找到所需的类,该类加载器才会主动尝试加载该类.

4-23 绑定
将一个方法与类或者对象关联起来,叫做绑定.绑定分为两种,静态绑定和动态绑定.
静态绑定:在方法运行前时,已经知道方法属于哪一个类了,那么在编译的时候就可以连接到类中,定位到那个方法.
动态绑定:在程序运行过程中,根据具体的实例对象才能具体确定是哪个方法.
每个类被加载到虚拟机时,在方法区保存元数据,其中包含一张方法表,这个表的每个项是指向具体方法的代码,如果这个类的方法被重写,那么这个表项将会指向新的代码.

猜你喜欢

转载自blog.csdn.net/yr12Dong/article/details/80055338