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
  • 相关阅读:
    elasticsearch 基本操作
    ElasticSearch停止启动
    oracle误删数据
    多层级sql查询
    max_result_window
    测试ik分词效果
    TransportClient 新建index,mappings dynamic_templates。
    7.10考试
    C#生成TXT文件
    C#的进度条--progressBar
  • 原文地址:https://www.cnblogs.com/lihaoyang/p/4851539.html
Copyright © 2011-2022 走看看