zoukankan      html  css  js  c++  java
  • java动态加载机制

    假设有一个class,ClassLoader首先把它load到内存里的code segment(内存里存放代码段的),站在ClassLoader的角度,内存里的一个一个的class就是一个一个的对象,这个对象就是xx.class,实际就是Class类的对象。Load完class,找到main函数开始执行,然后会把很多其他的类Load进来,动态加载机制。

    测试动态加载机制:

    新建项目Reflection,new一个class,TestDynamicLoading:

    public class TestDynamicLoading {
        public static void main(String[] args) {
            
            new A();
            
            System.out.println("*****-------------------------******");
            
            new B();
            
            new C();
            new C();
            
            new D();
            new D();
            
        }
    
    }
    class A{
        
    }
    
    class B{
        
    }
    class C{
        //static语句块,只调用一次。
        static{
            System.out.println("CCCCCCCCCCCCCCCCCCCCCCCCCCCC");
        }
        
    }
    class D{
        //动态语句块,每次new出来对象时被调用一次。用的不多。
        {
            System.out.println("DDDDDDDDDDDDDDDD");
        }
    }

    右键,Run As-----> Run  Configurations。

    Program arguments:程序命令行参数

    VM arguments:虚拟机的参数,java程序运行的时候java命令行上给你指定的虚拟机参数

    -verbose:class  :详细的输出。

    ---> Run

    可以看到控制台的输出,程序的执行步骤是:

    1,先加载  class  A,

    2,再执行 System.out.println("*****-------------------------******");

    3,加载 class  B,

    4,加载 class  C,而且static语句块只执行了一次。

    5,加载class  D ,动态语句块执行了2次。

    java的动态加载机制就是如此,被验证。

    [Loaded A from file:/D:/Eclipse/gongzuokongjian/Reflection/bin/]
    *****-------------------------******
    [Loaded B from file:/D:/Eclipse/gongzuokongjian/Reflection/bin/]
    [Loaded C from file:/D:/Eclipse/gongzuokongjian/Reflection/bin/]
    CCCCCCCCCCCCCCCCCCCCCCCCCCCC
    [Loaded D from file:/D:/Eclipse/gongzuokongjian/Reflection/bin/]
    DDDDDDDDDDDDDDDD
    DDDDDDDDDDDDDDDD
  • 相关阅读:
    Redux其实很简单(原理篇)
    基于Docker的UI自动化初探
    视觉设计师的进化
    浅谈容器监控和网易云计算基础服务实践
    微服务实践沙龙-上海站
    知物由学 | 见招拆招,Android应用破解及防护秘籍
    6本互联网技术畅销书免费送(数据分析、深度学习、编程语言)!
    Lily-一个埋点管理工具
    ArcGIS 10 许可配置
    How to Programmatically Add/Delete Custom Options in Magento?
  • 原文地址:https://www.cnblogs.com/lihaoyang/p/4851539.html
Copyright © 2011-2022 走看看