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
  • 相关阅读:
    (原)Lazarus 异构平台下多层架构思路、DataSet转换核心代码
    (学)新版动态表单研发,阶段成果3
    (学) 如何将 Oracle 序列 重置 清零 How to reset an Oracle sequence
    (学)XtraReport WebService Print 报错
    (原)三星 i6410 刷机 短信 无法 保存 解决 办法
    (原) Devexpress 汉化包 制作工具、测试程序
    linux下网络配置
    apache自带ab.exe小工具使用小结
    Yii::app()用法小结
    PDO使用小结
  • 原文地址:https://www.cnblogs.com/lihaoyang/p/4851539.html
Copyright © 2011-2022 走看看