`
千年松鼠
  • 浏览: 25170 次
文章分类
社区版块
存档分类
最新评论

Java 类加载简介

阅读更多




一. 加载
“加载”是“类加载“过程的一个阶段。在这个阶段,JVM以字节流的形式获取.class文件,转化为方法区运行时数据结构,并在方法区生成Class对象(由此可知,Java中并不是所有对象都在堆中分配)。
二. 连接(一个比较重要的阶段,可以细分为三个小阶段)
连接阶段,目的是将已经加载到内存的类的字节流放到JVM的运行时环境,为初始化做好准备
当然,把一个类带入自己的内部环境之前,JVM肯定会验证其合法性、可靠性,尽可能的保证这个类进入环境之后能正常运作,并防止其对JVM造成破坏,就像公司招人之前也会对应聘者进行各种考核一样,这个过程就是验证阶段。
如果验证通过,那么JVM就会让这个类做好准备,做准备的过程就是将类变量(static类型的变量)分配内存(在方法区中分配),并设置初始值的过程,注意是设置初始值(各类型的零值),并不是赋值,赋值要等到初始化阶段才进行。
如 public static int value=1;
这个阶段过后value值为0,这就是准备阶段
准备好了以后,JVM就会将常量池中的符号引用替换为直接引用。在这个阶段之前,该类所拥有的字段、方法的信息并不是直接记录的,而是存储在字段表和方法表中,经过这个阶段的解析之后字段和方法的引用将直接指向目标。这就像周杰伦的半岛铁盒,服务员告诉他:“楼上右转第二排的架子上就有了“,这时半岛铁盒对周杰伦来说就是符号引用。等杰伦走到楼上第二排的架子前,半岛铁盒已经触手可及,这时就变成了直接引用了。而半岛铁盒放在什么地方,不同的店会有所不同。同理,不同的JVM解析出来的引用也会不同。这个例子在细节上不是很恰当,但是从“半岛铁盒相对于杰伦的状态变化”上看,我认为可以帮助理解这个转换。这就是解析阶段。

三. 初始化
类加载的最后一个阶段就是初始化,这个“初始化“!=“实例化”。初始化阶段,开始真正的执行程序代码,初始化类变量等。这个阶段会执行类中定义的静态代码块。类变量与静态块按其在类中定义的先后顺序执行。
需要注意:
① 静态块不能访问定义在她之后的变量。
② 初始化子类之前会先初始化其父类
③ 接口初始化时,不会初始化其父接口
  • 大小: 45.6 KB
1
0
分享到:
评论

相关推荐

    java类加载器实例

    类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java ...

    自定义Java类加载器

    看完一个Java加载原理教程后,写了这个自己的类加载器,作个笔记,以便以且使用

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

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

    java类加载器学习三、类加载器的委托模式

    java类加载器学习三、类加载器的委托模式

    java类加载器

    ClassLoader 三种类加载方式 Boostrap Extenxsion 以及Application ClassLoad分别适用的场景

    java 类加载器 加密

    java 类加密 使用类加载器解密加载类 反射执行main

    Java类加载器.pdf

    Java类加载器.pdf

    springboot+java类热加载

    springboot 、java类热加载、jarinjar、动态编译、自动引用依赖

    java类加载机制.xmind

    该文件是JVM中关于类加载机制的知识整理的思维导图,包括类加载机制概述、类加载的生命周期、加载时机、加载过程、类加载、类的初始化和实例化等几个大方面进行了讲解,其中类加载中还对JVM三种预定义类加载器进行了...

    Java虚拟机类加载顺序

    Java虚拟机类加载顺序,Java虚拟机类加载顺序,Java虚拟机类加载顺序

    Java类加载原理解析

    每个java开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。Java的类加载机制是java技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是...

    Java类加载内幕详细讲解

     类加载是java语言提供的最强大的机制之一,但所有的编程人员都应该了解其工作机制,明白如何做才能让其满足我们的需要。这能有效节省我们的编码时间,从不断调试ClassNotFoundException的工作中解脱出来。

    java类加载原理分析

    java类加载原理分析,引导类加载器,扩展类加载器,系统类加载器(也叫应用类加载器)

    自定义Java类加载器demo

    自定义Java类加载器demo,自定义了一个classLoader,重写了loadClass 和findClass,注意 loadClass打破了双亲委派机制,所有的类都要在自定义的class文件中找到,而findClass遵循了双亲委派机制

    Java类加载机制与反射-PPT

    Java的类加载机制:加载,连接,初始化。JAVA类加载器: Bootstrap ClassLoader : 根类加载器, Extension ClassLoader: 扩展类加载器, System ClassLoader : 系统类加载器, Java反射

    java类加载机制

    java 类加载机制,课程笔记。

    JAVA类加载机制与动态代理

    类加载机制与动态代理吗,讲得很好对得资源分。

    Java 自动加载JAR文件并运行其中的类方法

    Java 自动加载JAR文件并运行其中的类方法

Global site tag (gtag.js) - Google Analytics