`

《深入理解java虚拟机》第七章 虚拟机类加载机制

 
阅读更多

第七章 虚拟机类加载机制

 

虚拟机类加载机制:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟直接使用的Java类型

类加载生命周期:加载-->验证-->准备-->解析-->初始化-->使用-->卸载

类加载过程第一阶段并没有强制约束,虚拟机的具体实现来自由把握

五种情况必须强制初始化

1) 遇到new getstatic putstatic或invokestatic 这四种字节码指令时

java代码场景

使用new关键字实例化对象的时候

读取或设置一个类的静态字段(被final 修饰,已在编译期把结果放入常量池的静态字段除外)

调用一个类的静态方法的时候

2) 使用java.lang.reflect包的方法对类进行反射调用的时候

3) 当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化

4) 当虚拟机启动的时候,用户需要指定一个要执行的主类(包含main()函数的那个类),虚拟机会先初始化这个主类

5) 当使用jdk 1.7的动态语言支持时,如果一个java.lang.invoke.MethodHandle 实例最后的解析结果REF_getStatic,REF_putStatic,REF_invokeStatic的语句句柄

并且这个方法句柄所对应的类没有进行初始化,则需要先触发其初始化

 

这五种场景被称为对一个类进行主动引用,除此之外,其他所有引用的类的方法都不会触发初始化,称为被动引用

 

加载的过程

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

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

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

 

符号引用和直接引用的区别

符号引用:符号引用以一组符号来描述所引用的目标,符号可以是任何形式的字面量,只要使用时能无歧义地定位到目标即可

直接引用:直接引用可以是直接指向目标的指针,相对偏移量或是一个能间接定位到目标的句柄

 

 

类加载器

比较两个类是否相等,只有在这两个类是由同一个类加载器加载的前提下才有意义

 

双亲委派模型

启动类加载器:将存放<JAVA_HOME>\lib目录中的或者-Xbootclasspath参数所指定的路径中,并且是虚拟机识别的类库加载到虚拟机内存中

扩展类加载器:将存放<JAVA_HOME>\lib\ext目录中的或者java.ext.dirs系统变量所指定的路径中所有类库

应用程序类加载器:sun.misc.Launcher$App-ClassLoader

 

自定义类加载器-->应用类加载器--->扩展类加载器-->启动类加载器

 

双亲委派模型过程:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父加载器去完成,每一个层次的类加载器都是如此

因此所有的加载请求最终都应该传送到顶层的启动类加载器,只有当父加载器反馈自己无法完成这个加载请求,子加载器才会尝试自己去加载

OSGi 中对类加载器的使用时很值得学习的,弄懂了osgi的实现,就可以算是掌握了类加载器的精髓

分享到:
评论

相关推荐

    深入java虚拟机 高清pdf 高清高清高清

    它详尽地探讨了Java虚拟机的工作原理、内存管理、类加载机制、字节码执行以及性能优化等多个核心主题,旨在帮助开发者提升程序的运行效率和稳定性。 1. **Java虚拟机概述**:Java虚拟机是Java平台的核心组件,它...

    深入JAVA虚拟机 不那么完美的第二版.pdf.zip

    虽然《深入JAVA虚拟机》的第二版可能在物理形态上有些许不足,但其内容依然对理解JVM的运作机制有着重要的指导意义。学习这些知识点,有助于Java开发者提升代码的运行效率,解决内存问题,以及进行性能优化。

    深入JAVA虚拟机第二版 Bill Venners著 曹晓钢 蒋靖译

    通过学习《深入JAVA虚拟机第二版》,开发者可以提升对JVM的深入理解,从而更好地设计和优化Java程序,解决性能问题,提升应用程序的稳定性和效率。对于任何想要成为Java技术专家的人来说,这本书无疑是一本不可多得...

    深入理解Java虚拟机读书笔记之:第3章 安全(3)

    《深入理解Java虚拟机》是Java开发者必读的经典之作,其中第三章主要探讨了Java安全方面的内容。在Java中,安全是一个至关重要的概念,因为Java的设计目标之一就是提供一种可以在不同环境中安全运行的代码机制。本章...

    深入JAVA虚拟机第二版.7z

    《深入JAVA虚拟机第二版》是一本专注于Java虚拟机(JVM)的权威指南,针对JVM的深入了解和优化提供了详尽的解析。这本书对于Java开发者、系统管理员以及对Java性能调优感兴趣的读者来说,是不可或缺的参考资料。下面...

    深入理解Java 虚拟机 原代码

    《深入理解Java虚拟机》是Java开发者深入了解JVM(Java Virtual Machine)的必备经典书籍,其第二版提供了原代码分析,帮助读者更直观地理解JVM的工作原理。这本书的各个章节涵盖了从内存管理到垃圾回收,从类加载...

    深入java虚拟机第二版随书光盘

    《深入Java虚拟机第二版》是一本深受Java开发者喜爱的经典著作,它详尽地剖析了Java虚拟机(JVM)的工作原理,为程序员提供了深入了解Java平台核心机制的机会。随书光盘包含了书中提及的各种示例代码、实验数据以及...

    java虚拟机源码-DeepInJVM:深入理解Java虚拟机第二版

    《DeepInJVM:深入理解Java虚拟机第二版》是一本深入探讨Java虚拟机(JVM)工作原理和技术细节的专业书籍。在这个压缩包文件中,包含的资源是该书的源码,对于学习和理解JVM有着极大的帮助。"系统开源"的标签表明这些...

    深入java虚拟机笔记

    综上所述,《深入Java虚拟机》这本书覆盖了Java体系结构、平台无关性、安全性、网络移动性以及JVM内部运作等多方面的内容,对于想要深入了解Java虚拟机及其工作机制的读者来说是非常有价值的参考资料。

    Java虚拟机规范(中文版) Java SE 7

    作为一位资深的软件架构师,他著有《深入理解Java虚拟机:JVM高级特性与最佳实践》一书。 - **吴璞渊**:负责第3章及第4章的1至7节翻译工作。他在西门子任职,专注于程序设计和工作流技术。 - **冶秀刚**:负责第5章...

    深入理解Java虚拟机-文前1

    本书《深入理解Java虚拟机:JVM高级特性与最佳实践》将带领读者深入到JVM的内部世界,全面地理解其各个组成部分的工作机制。全书分为五个部分,每个部分都深入浅出地介绍了JVM的不同方面。 在第一部分中,作者回顾...

    深入Java虚拟机(带目录+清晰+光盘) 第二版

    《深入Java虚拟机(带目录+清晰+光盘) 第二版》是Java开发者们不可或缺的一本技术宝典。本书全面、深入地探讨了Java虚拟机(JVM)的工作原理和内部机制,对于理解Java程序的运行性能以及优化代码具有极其重要的价值。...

    深入Java虚拟机第二版chm英文

    2. **类加载机制**:详细阐述了类加载的全过程,包括加载、验证、准备、解析和初始化。这一过程确保了类的安全性和正确性。 3. **内存区域与内存溢出**:讲解了堆、栈、方法区、本地方法栈和程序计数器等内存区域的...

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

    Java类加载机制是Java程序运行的第一步,它对于理解Java虚拟机(JVM)的行为至关重要。类加载过程涉及到类的加载、链接(验证、准备、解析)、初始化等阶段,并且这一过程是由类加载器系统完成的。 #### 二、类加载...

    深入java虚拟机源码

    《深入Java虚拟机源码》一书主要涵盖了Java虚拟机(JVM)的内部工作原理,包括类加载机制、内存管理、字节码执行引擎、垃圾收集算法、编译优化等多个核心主题。以下是对这些章节内容的详细阐述: 1. **第3章:类...

    深入java虚拟机

    《深入理解Java虚拟机:JVM高级特性与最佳实践》是一部经典的Java技术书籍,它全面地探讨了Java虚拟机(JVM)的工作原理及其优化策略。本书主要涵盖了以下几个核心知识点: 1. **JVM架构**:Java虚拟机是Java程序...

    java虚拟机

    在Java虚拟机第二版中,我们可以深入探讨以下几个关键知识点: 1. **字节码与类加载机制**:Java程序编译后生成的是.class文件,里面包含的是字节码。JVM通过类加载器将这些字节码加载到内存中,进行验证、准备、...

    深入Java虚拟机(原书第二版)Bill Venners 著

    《深入Java虚拟机》是Java开发者必读的经典之作...总的来说,《深入Java虚拟机》是Java开发者深入理解JVM,提升编程技艺的必备书籍。通过学习,你可以更好地掌握Java程序的运行机制,从而编写出更高效、更稳定的代码。

    java虚拟机_JVM高级特性与实践最新版

    《深入理解Java虚拟机_JVM高级特性与最佳实践 第2版》是一本专注于Java开发者深入探索JVM(Java Virtual Machine)的重要参考资料。本书全面讲解了Java虚拟机的内部工作机制,涵盖了JVM的高级特性和最佳实践,旨在...

Global site tag (gtag.js) - Google Analytics