概述类的加载器及类加载过程

Posted super码王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了概述类的加载器及类加载过程相关的知识,希望对你有一定的参考价值。

  • 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头 有特定的文件标识。
  • ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。
  • 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包含字符串字面量(这部分常量信息是Class文件中常量池部分的内存映射)

类的加载过程

加载 

1、通过一个类的全限定名获取定义此类的二进制字节流

2、将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构

3、在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据的访问入口。

链接

初始化

虚拟机保证一个类加载一次的代码演示

package chapter01.com.wust.yq;

public class DeadThreadTest 

    public static void main(String[] args) 
        Runnable r = new Runnable() 
            @Override
            public void run() 
                System.out.println(Thread.currentThread().getName() + "开始");
                //这一步的目的就是为了加载类
                DeadThread dt = new DeadThread();
                System.out.println(Thread.currentThread().getName() + "结束");
            
        ;

        Thread t1 = new Thread(r, "线程1");
        Thread t2 = new Thread(r, "线程2");

        t1.start();
        t2.start();
    



class DeadThread 
    static 
        System.out.println(Thread.currentThread().getName() + "初始化当前类");
        try 
            Thread.sleep(10000);
         catch (InterruptedException e) 
            e.printStackTrace();
        
    

结果展示 

以上是关于概述类的加载器及类加载过程的主要内容,如果未能解决你的问题,请参考以下文章

节:概述类的加载器及类加载过程

节:概述类的加载器及类加载过程

节:概述类的加载器及类加载过程

笔记2---初始化及类的加载

类加载器及双亲委派模型

JVM类加载器及Java类的生命周期