`
chenhetong
  • 浏览: 15384 次
  • 性别: Icon_minigender_1
  • 来自: 保定
最近访客 更多访客>>
社区版块
存档分类

类的加载、链接和初始化

 
阅读更多

系统可能在第一次使用某个类的时候加载这个类,也可能采用预先加载机制来欲加载某个类。

当我们调用Java命令运行某个程序的时候,将会启动一条JVM进程,无论程序多么复杂,都处于这个虚拟机的进程里,两个不同的程序分别占用两个虚拟机进程,两个JVM进程之间是无法共享数据的。


当程序主动使用某一个类的时候,如果该类还未加入到内存中,系统会通过加载、链接、初始化三个步骤来对该类进行初始化,

类的加载,是指将类的class文件读入内存,并创建一个java.lang.Class对象,系统中所有的类其实也都是对相关,他们都是java.lang.Class对象的实例。


JVM提供的类加载器通常称为系统类加载器。除此之外,开发者可以通过继承ClassLoader基类来创建自己的类加载器。

加载类的来源:
    1、本地class文件
    2、jar包,jdbc的驱动
    3、网络上的class

在类加载完成以后,系统为之生成一个Class对象,接着进入连接阶段,连接阶段将会负责把类的二进程数据合并到jre中,

类连接分为三个阶段
   验证:用于检验被加载的类是否有正确的内部结构,
   准备:为类的静态属性分配内存并设置默认值
   解析:将类中的符号引用替换为直接引用

当运行一个程序的时候,JVM启动,运行bootstrap classloader,该ClassLoader加载java核心API(ExtClassLoader和AppClassLoader也在此时被加载),然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class,这就是一个程序最基本的加载流程。

分享到:
评论
2 楼 该用户名已经存在 2011-11-23  
初始化呢?
1 楼 该用户名已经存在 2011-11-23  
 

相关推荐

    Java虚拟机(加载,链接,初始化)1

    在JVM中,类的加载、链接和初始化是至关重要的三个步骤,它们共同确保了程序的正常运行。 1. **加载(Loading)** 加载阶段是JVM寻找和导入类或接口的二进制数据的开始。这个过程通常是从类路径下的`.class`文件中...

    全局变量初始化导致的dll加载失败工程

    标签中提到了“示例工程”,这意味着它提供了一个实际的代码示例,帮助开发者理解全局变量初始化和DLL加载失败之间的关联。"c++"指出了这个问题是在C++语言环境中发生的,而“dll加载失败”则明确了问题的核心在于...

    Java类加载器:静态变量初始化.docx

    在本文中,我们讨论了 Java 类加载器中的静态变量初始化机制,了解了静态变量的初始化顺序和类加载器的生命周期。通过对静态变量初始化机制的理解,我们可以更好地掌握 Java 语言的基础知识,并更好地应用 Java 语言...

    解析Java虚拟机中类的初始化及加载器的父委托机制共14页

    总结,理解Java虚拟机中类的初始化和加载器的父委托机制对于开发者来说极其重要。这不仅可以帮助我们编写更高效、安全的代码,也是解决一些疑难问题的关键。在实际编程过程中,我们应该灵活运用这些知识,以提升软件...

    Java类的加载、链接和初始化

    一、Java的类加载机制回顾与总结:  我们知道一个Java类要想运行,必须由jvm将其装载到内存中才能运行,装载的目的是把Java字节代码转换成JVM中的java....由于代理模式的存在,启动一个类的加载过程的类加载器和终

    MFC中通用控件的初始化

    - `ICC_BAR_CLASSES` 初始化工具栏、状态栏、滚动条和工具提示类。 - `ICC_TAB_CLASSES` 初始化选项卡和工具提示类。 - `ICC_UPDOWN_CLASS` 初始化上下箭头控件。 - `ICC_PROGRESS_CLASS` 初始化进度条控件。 - `ICC...

    java的ClassLoader类加载器机制

    在初始化阶段,类加载器会对加载的类进行初始化,包括静态变量的初始化和 static 块的执行。 Java 的类加载器机制是 JVM 运行过程中的核心组件,负责加载和管理 Java 类。理解类加载器的工作原理可以帮助开发者更好...

    【Vision源文件】类加载流程图

    1. 如果这个类没有被加载和链接,那就先进行加载和链接。 2. 如果这个类存在直接父类,并且这个类还没有初始化(**在一个类加载器中,类只能被初始化一次**),那就先初始化直接父类(不适用于接口)。 3. 加入类...

    深入研究Java类加载机制 深入研究Java类加载机制

    类加载过程涉及到类的加载、链接(验证、准备、解析)、初始化等阶段,并且这一过程是由类加载器系统完成的。 #### 二、类加载器系统 Java中的类加载器系统主要包括以下几种类型的类加载器: 1. **Bootstrap ...

    ClassLoader类加载机制和原理详解

    本文将深入探讨ClassLoader的工作原理和类加载机制,帮助开发者理解这个至关重要的概念。 1. 类加载机制概述 Java的类加载机制遵循“双亲委派模型”(Delegation Model)。当一个类被加载时,它首先会尝试由当前...

    易语言DLL初始化

    易语言DLL初始化是编程过程中一个重要的环节,尤其是在开发动态链接库(DLL)时。DLL是一种可执行文件,它包含可由多个程序同时使用的代码和数据。初始化过程是DLL加载到进程地址空间时进行的一些关键操作,确保DLL...

    深入Java虚拟机_002_深入详解JVM之类加载器深度剖析、根、扩展及系统类加载器

    这个过程分为三个阶段:加载、链接和初始化。加载阶段,类加载器找到对应的.class文件;链接阶段,字节码被校验并转化为内存中的数据结构;初始化阶段,静态变量被赋予默认值,静态初始化块被执行。 根类加载器,也...

    JVM(三):类加载机制(类加载过程和类加载器)1

    Java虚拟机(JVM)的类加载机制是Java应用程序运行灵活性的关键。类加载涉及多个步骤,包括加载、验证、准备、解析、初始化...通过理解加载过程和类加载器的工作原理,开发者可以更好地控制和优化Java应用程序的运行。

    深入研究Java的类加载机制.pdf

    类加载机制的过程可以分为三个阶段:加载、链接和初始化。 加载阶段:在加载阶段,Java虚拟机将.class文件加载到内存中,并将其转换为机器可执行的代码。加载阶段是类加载机制的第一阶段。 链接阶段:在链接阶段,...

    初始化数据库链接信息

    在初始化数据库链接信息的过程中,`slf4j`用于记录和调试连接过程中的日志信息,如连接成功、失败、异常等,帮助开发者更好地理解和追踪系统状态。 `logback`是`slf4j`的一个实现,提供更高效的日志记录功能。它...

Global site tag (gtag.js) - Google Analytics