`

JVM 原理

 
阅读更多

1、什么是类加载器,其工作原理是什么?

 

寻找类的字节码文件并构造出类在JVM内部表示对象的组件。

 

在java中,类装载器将一个java类装入JVM中,必须要经过以下步骤:

a. 装载:查找和导入class文件

b. 链接:执行校验,准备,和解析步骤,其中解析步骤是可以选择的。

             校验:检查装入的class文件数据的准确性

             准备:给类的静态变量分配存储空间

             解析:将符号引用转化为直接引用

c. 初始化 对类的静态变量,静态代码块执行初始化工作

 

 

类加载工作是由ClassLoader及其子类负责,ClassLoader是一个重要的java运行时系统组件,它负责在运行时查找和装入Class字节码文件。JVM在运行时会产生三个ClassLoader:根装载器,ExtClassLoader(扩展类装载器),AppClassLoader(系统类装载器)。其中,根装载器不是ClassLoader的子类,它使用C++编写的,因此,我们在java中看不到它,根装载器负责装载jre的核心类库,如jre下的rt.jar,charsets.jar等。ExtClassLoader和AppClassLoader都是ClassLoader的子类。其中ExtClassLoader负责装载扩展目录ext中的jar类包;AppClassLoader负责装载ClassPath路径下的类包。

 

这三个装载器存在父子层级关系,即根装载器是ExtClassLoader的父装载类器,ExtClassLoader是AppClassLoader的父装载类器。

 

  默认情况下,使用AppClassLoader装载应用程序的类。

 

  JVM装载类时使用“全盘负责委托机制”,全盘负责是指当一个ClassLoader装载一个类的时,除非显示使用另一个ClassLoader,该类所依赖及引用的类也由这个ClassLoader载入;委托机制是指先委托父装载器寻找目标类,只有在找不到的情况下才从自己的类路径中查找病装载目标类。这一点是基于安全考虑,如果有人编写了一个恶意的基础类“java.lang.String” 并装载到JVM中将会引起很可怕的后果,由于使用了“全盘负责委托机制”,java.lang.String 永远是由根装载器装载的,这样就可以避免上述事件的发生。

 

 

全盘负责委托机制也会引起一些异常比如NoSuchMethodError的错误信息。因为类路径放置了不同版本的类包,类加载碰上没有这个方法的这个版本类包,就会运行时抛出异常。

 

 

 

            

分享到:
评论

相关推荐

    JVM原理一秒懂,不懂算我输.zip

    了解并熟练掌握JVM原理对于Java开发者至关重要,无论是编写高效代码还是排查性能问题,都有着深远的影响。通过阅读提供的"JVM原理.pdf",你可以更深入地理解这些概念,并结合实际应用,提升自己的编程技能。

    浅谈jvm原理

    "浅谈 JVM 原理" JVM(Java Virtual Machine)是一种虚拟机,它可以模拟完整的硬件系统功能,运行在一个完全隔离的环境中,提供了一个完整的计算机系统。JVM 可以分为三类:VMWare、Visual Box 和 JVM。其中,...

    jvm原理及调优

    ### JVM原理及调优 #### 一、JVM概述 JVM(Java Virtual Machine,Java虚拟机)是Java编程语言的基础,它作为一种软件层面的抽象计算机,能够在多种操作系统平台上执行Java字节码程序。Java编译器的目标是生成能够...

    JAVA JVM原理资料

    ### JAVA JVM原理资料知识点 #### 一、语言处理器的基本结构 **语言处理器**是指能够处理某种编程语言的工具,常见的包括编译器、解释器、IDE等。 1. **编译器的基本结构**: - **词法分析器**:将源代码分割成...

    JAVA应用JVM原理及参数调优深入讲解视频.zip

    JAVA应用JVM原理及参数调优深入讲解视频.1 JAVA应用JVM原理及参数调优深入讲解视频.2 JAVA应用JVM原理及参数调优深入讲解视频.3 JAVA应用JVM原理及参数调优深入讲解视频.4 JAVA应用JVM原理及参数调优深入讲解视频.5 ...

    06.JVM原理讲解和调优.pdf

    JVM 原理讲解和调优 JVM(Java Virtual Machine,Java 虚拟机)是 Java 语言的核心组件,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM 的主要功能是将 Java 字节码转换为...

    JAVA应用JVM原理及参数调优深入讲解视频.rar

    通过以上对JVM原理和参数调优的深入学习,开发者可以更好地理解Java应用程序的运行机制,优化系统性能,解决可能出现的内存溢出、性能瓶颈等问题。本课程详细讲解了这些内容,无论你是初学者还是经验丰富的开发者,...

    JVM原理.pdf

    总的来说,JVM原理的深入理解可以帮助开发者更好地编写代码、优化性能和解决线上问题。冯立全通过分享,将JVM原理的理论与实践相结合,为听众提供了一个全面了解JVM的机会。这对于需要深入探讨Java生态系统和提高...

    推荐一些JVM原理,JVM调优,JVM内存模型,JAVA并发 电子书1

    标题中提到了JVM原理、JVM调优、JVM内存模型和JAVA并发,这些都是Java虚拟机(JVM)相关的核心概念。JVM是运行Java字节码的虚拟计算机,为Java提供了一个跨平台的环境,确保Java程序可以在不同的操作系统上运行而...

    JVM原理讲解和调优,详细讲解JVM底层

    理解JVM的工作原理对于提升Java应用的性能和稳定性具有重要意义。开发者可以通过对JVM进行调优,结合业务场景和应用需求,合理配置JVM内存大小、调整垃圾回收策略和类加载机制,从而达到优化应用性能的目的。

    jvm原理与调优

    该文档是关于java虚拟机的原理,描述及调优视频,其中,详细讲述了jvm的运行机制,类装载器,GC算法,性能监控工具,堆,锁等内容。

    JVM原理.doc

    Java虚拟机(JVM)是Java平台的核心组成...总结来说,JVM原理包括了它的整体结构、代码的编译执行流程、类加载的逻辑以及内存管理策略和垃圾回收机制。理解和掌握这些知识点对于深入理解Java程序的运行机制至关重要。

    jvm 启动过程 JVM 原理

    本文将深入探讨JVM的启动过程及其基本原理。 首先,我们需要理解JVM的基本概念。JVM是Java Virtual Machine的缩写,它是Java平台的核心组件之一。它的主要任务是将编译后的Java类文件(.class文件)中的字节码转换...

    JVM原理-jvm内存及相关图示

    JVM原理-jvm内存及相关图示 JVM(Java Virtual Machine)是Java开发工具包(JDK)的一部分,它的主要作用是将Java字节码文件(.class文件)解释并执行,使得Java语言可以跨平台运行。JVM主要由类加载子系统、执行...

    Sun JVM原理与内存管理

    ### Sun JVM原理与内存管理 #### 一、Sun JDK 1.6 GC (Garbage Collector) Sun JDK 1.6 的垃圾收集器(GC)是其内存管理的关键组成部分,它负责自动地回收不再使用的对象所占用的内存。本文将详细介绍Sun JDK 1.6 GC...

    JVM原理.docx

    ### JVM原理核心知识点详解 #### 一、Java虚拟机的生命周期 Java虚拟机的主要任务是在程序开始时启动,执行Java程序,并在程序结束时停止。一个运行中的Java虚拟机实例代表着一个正在执行的Java程序。 - **启动**...

    (主讲视频)JVM原理、内存模型、性能调优

    ### JVM原理、内存模型、性能调优 #### 一、JVM原理概述 Java虚拟机(JVM)是一种用于执行Java字节码的虚拟机。它为Java程序提供了一个独立于平台的运行环境,并且能够自动处理内存管理和垃圾回收等工作。JVM的核心...

    jvm原理机器调优-jvm.zip

    JVM原理和调优是每个Java开发人员必须掌握的关键技能,这涉及到内存管理、垃圾收集、性能优化等多个方面。在深入理解JVM的工作机制后,我们可以更好地调整和优化应用程序,提升系统的性能和稳定性。 一、JVM结构与...

    精通jvm,你想要的jvm原理都在这理

    深入理解JVM原理和垃圾回收机制对于Java开发者来说至关重要,它能帮助你编写出更高效、更稳定的代码,避免内存泄漏和性能瓶颈。通过实践和学习,你可以掌握如何有效地配置和调优JVM,从而提升应用的整体性能。同时,...

    java中jvm原理和实现

    ### Java中JVM原理与实现 #### 一、引言 Java虚拟机(JVM)作为Java语言的基础支撑,是确保Java程序能够在不同平台上顺畅运行的关键技术。本文将深入探讨JVM的工作原理及其核心组成部分,包括类加载器、运行时数据区...

Global site tag (gtag.js) - Google Analytics