【补充】
按需装载:(运行时动态装载)
1.装载条件:当一个类的静态成员被第一次引用时,JVM就会去装载它,包括【静态方法-静态属性-构造方法】,这里的构造方法也就是老师视频里提到使用new关键字实例化对象。
2.按需装载流程:JVM会检查该类的Class对象是否存在已经加载,如果没有,则执行以下步骤。
1)加载:查找并导入类的字节码,创建Class对象
2)链接:其中分为三步①校验:检查导入的字节码的完整性,正确性、安全性。②准备:为静态域分配存储空间③解析:将符号引用转折为直接引用(非必需)
3)初始化:初始化静态变量并执行静态域代码
希望大家顶上去,让更多人看到,帮助理解JVM类加载机制
按需装载:(运行时动态装载)
1.装载条件:当一个类的静态成员被第一次引用时,JVM就会去装载它,包括【静态方法-静态属性-构造方法】,这里的构造方法也就是老师视频里提到使用new关键字实例化对象。
2.按需装载流程:JVM会检查该类的Class对象是否存在已经加载,如果没有,则执行以下步骤。
1)加载:查找并导入类的字节码,创建Class对象
2)链接:其中分为三步①校验:检查导入的字节码的完整性,正确性、安全性。②准备:为静态域分配存储空间③解析:将符号引用转折为直接引用(非必需)
3)初始化:初始化静态变量并执行静态域代码
希望大家顶上去,让更多人看到,帮助理解JVM类加载机制
2018-01-25
这里补充一下类的加载机制:
1.预先加载
这里有Java基础类的加载和含main()函数类的加载。
Java类的加载流程:启动程序→到jdk目录下找到并载入jvm.dll→启动虚拟机→初始化参数→创建BootStrap Loader对象,称为启动类装载器,它会在虚拟机启动时一次性加载JJVM的基础类。
含main函数的类加载:BootStrap Loader装载定义在sun.misc命名空间下的Launcher类。Launcher类有两个内部类,ExcClassLoader和AppClassLoader,含有main函数的类由AppClassLoader加载。
2.按需加载
篇幅有限下文补充。
1.预先加载
这里有Java基础类的加载和含main()函数类的加载。
Java类的加载流程:启动程序→到jdk目录下找到并载入jvm.dll→启动虚拟机→初始化参数→创建BootStrap Loader对象,称为启动类装载器,它会在虚拟机启动时一次性加载JJVM的基础类。
含main函数的类加载:BootStrap Loader装载定义在sun.misc命名空间下的Launcher类。Launcher类有两个内部类,ExcClassLoader和AppClassLoader,含有main函数的类由AppClassLoader加载。
2.按需加载
篇幅有限下文补充。
2018-01-25
有一部分老师没有讲,不过源码中找到了,也就是先获取它的get方法,因为get方法,都是get然后属性的大写字母+小写,然后通过这个get方法去找到这个方法的对象,用它去反射直接使用这个方法来获取属性的值,所以感觉同理,如果获取的是set方法也能进行赋值吧
2018-01-04