美文网首页
JVM加载类 - 懒加载模式

JVM加载类 - 懒加载模式

作者: LssTechnology | 来源:发表于2021-02-07 19:45 被阅读0次
    可能有时有想,项目开发过程中经常会用到各种第三方库,包括各种框架、工具类、sdk等等,那么这些第三方的类难道都等到项目启动的时候,把这些类统统都加载到JVM内存中嘛,这不得把JVM给“挤爆了”,所以,为了解决这个困境,就引出了一个“懒加载”的概念
    那么如何证明是 JVM 是懒加载模式呢
    1、先看下面一段代码
    public class ClassLoaderController {
    
        static {
            System.out.println("********** loading ClassLoaderController class **********");
        }
    
        public static void main(String[] args) {
            new DemoA();
            System.out.println("*************** loading test ************");
            DemoB demoB = null;
        }
    }
    
    class DemoA {
        static {
            System.out.println("********** loading DemoA class **********");
        }
    
        public DemoA() {
            System.out.println("********** init DemoA **********");
        }
    }
    
    class DemoB {
        static {
            System.out.println("********** loading DemoB class **********");
        }
    
        public DemoB() {
            System.out.println("********** init DemoB **********");
        }
    }
    
    2、简单分析一下执行顺序
    • 第一步:运行main方法,运行main()方法首先肯定会加载ClassLoaderController这个类,类加载的最后一步是初始化,其中就会有执行静态代码块这一步骤,所以首先会输出
      ********** loading ClassLoaderController class **********
    • 第二步:在main方法中,会去new DemoA(),这一步,也代表了会去用DemoA()这个类,那毫无疑问,肯定会去加载DemoA()这么一个类,那么在加载DemoA()类的过程中,同样最后一步初始化中会去执行静态代码快,输出********** loading DemoA class **********,接着再执行构造方法,输出********** init DemoA **********
    • 第三步:为了方便观察打印结果,我们直接输出*************** loading test ************
    • 第四步:我们定义了DemoB类,但是我们给它赋值的是空值,也就是说,我们是没用到DemoB类的,所以自然也不会打印********** loading DemoB class ******************** init DemoB **********
    3、综合分析,打印结果为
    ********** loading ClassLoaderController class **********
    ********** loading DemoA class **********
    ********** init DemoA **********
    *************** loading test ************
    
    符合我们的预期,也证明了,JVM的类加载是一个懒加载
    本文只是简单验证了一下,希望对你有所帮助

    相关文章

      网友评论

          本文标题:JVM加载类 - 懒加载模式

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