美文网首页
深入剖析Classloader(一)--类的主动使用与被动使用

深入剖析Classloader(一)--类的主动使用与被动使用

作者: fuxiongbing | 来源:发表于2019-11-07 14:31 被阅读0次

    深入剖析Classloader(一)--类的主动使用与被动使用

    主动使用(六种)

    1)   –创建类的实例 (如new Integer())

    2)   –访问某个类或接口的静态变量,或者对该静态变量赋值 (读写静态变量)

    3)   –调用类的静态方法

    4)   –反射(如Class.forName(“com.yhj.jvm.classloader.ClassLoaderTest”))

    5)   –初始化一个类的子类 (初始化子类的过程中会主动使用父类的构造方法)

    6)   –Java虚拟机启动时被标明为启动类的类(含有main方法并且是启动方法的类)

    除了以上六种情况,其他使用Java类的方式都被看作是对类的被动使用,都不会导致类的初始化 (除了上述6种情况以外,都不会执行初始化,只会执行加载和连接)

    加载.class文件有几种方式

    –从本地系统中直接加载 (直接加载本地硬盘上的.class文件加载)

    –通过网络下载.class文件 (通过java.net.URLClassLoader加载网络上的某个.class文件)

    –从zip,jar等归档文件中加载.class文件 (引入外部zip、jar包)

    –从专有数据库中提取.class文件 (不常用)

    –将Java源文件动态编译为.class文件 (动态代理)

    1.通过子类访问父类的static 变量,不会导致子类的初始化

    2.定义引用数组,不会初始化累

    obj[] ojbs = new obj[10]

    3.final修饰的常量会在编译期间放到常量池中,不会初始化类

    4.final修饰的复杂类型,在编译期间无法计算得出,会初始化类

    深入分析Java ClassLoader原理

    相关文章

      网友评论

          本文标题:深入剖析Classloader(一)--类的主动使用与被动使用

          本文链接:https://www.haomeiwen.com/subject/pkhvbctx.html