`

jvm中的classloader

    博客分类:
  • jvm
 
阅读更多

class装载验证流程:加载、链接(验证、准备、解析)、初始化

加载:

装载类的第一个阶段

取得类的二进制流

转为方法区的数据结构

在java堆中生成对应的java.long.Class对象

链接(验证)

文件格式的验证:(以0xCAFEBABE)开头、版本号是否合理

元数据验证:是否有父类、继承了final类?、非抽象实现了所有的抽象方法

字节码验证:操作数栈的和局部变量是否吻合、跳转指令指定到合理的位置。

符号引用验证:常量池描述类是否存在、访问的方法或字段是否存在且有足够的权限

链接(准备)

分配内存,并未类设置初始值(方法区中)

public static int v=1;在准备阶段中,v会被设置为0。在初始化<clinit>中才会被设置为1

对于static final类型,在准备阶段就会被赋值为正确的值,例如,public static final int v=1。

链接(解析)

符号应用替换为直接引用(指针或者地址偏移量)

初始化

执行类构造器<clinit>

static变量赋值语句,static{}语句

子类的<clinit>调用钱保证父类的<clinit>先被调用

<clinit>是线程安全的

---------

ClassLoader是一个抽象类

ClassLoader的实例将读入Java字节码将类装在到JVM中

ClassLoader可以定制,满足不同的字节流获取方式,网络,文件,本地。

ClassLoader负责类装在过程中的加载阶段

ClassLoader重要方法:

public Class<?> loadClass 

protected final Class<?> defineClass

protected Class<?> findClass

protected final Class<?> findLoadedClass 寻找已经加载的类

 

至底向上加载加载类,自顶向下尝试加载类。

Bootstrap ClassLoader (rt.jar /-Xbootclasspath classpath设置这个参数下的类也会被bootstrap)

Extension ClassLoader %JAVA_HOME%/lib/ext/*.jar

App ClassLoader Classpath下

Custom ClassLoader

分享到:
评论

相关推荐

    JVM ClassLoader简析

    ClassLoader是JVM中的一个重要组件,它的主要任务是加载类的二进制数据,转换为Class对象,并供Java应用程序使用。本文将深入浅出地探讨JVM ClassLoader的工作原理和相关知识点。 首先,ClassLoader可以分为三种...

    JVM.zip_JVM代理_classloader

    在Java世界中,JVM(Java虚拟机)是运行所有Java程序的核心,它负责加载、验证、执行字节码,并管理内存。而JVM代理(JVM Agent)和类加载器(ClassLoader)则是两个关键的概念,它们对于深入理解Java应用程序的运行...

    探索JVM底层奥秘ClassLoader源码分析与案例讲解

    在JVM的运行机制中,ClassLoader起着至关重要的作用。ClassLoader负责查找并加载类到JVM中,使得程序得以运行。本篇将深入探讨ClassLoader的源码,通过实例解析其工作原理。 ClassLoader的基本工作流程可以概括为...

    ClassLoader运行机制 自己写的

    在Java虚拟机(JVM)中,类加载器(ClassLoader)是至关重要的组成部分,它负责查找和加载类的字节码文件。理解ClassLoader的工作机制对于深入掌握Java应用程序的运行至关重要。这里我们将详细讨论ClassLoader的运行...

    深入理解ClassLoader工作机制.docx

    Java虚拟机(JVM)中的ClassLoader是负责加载类到内存中的核心组件。它不仅承担着将字节码转换为可执行对象的重任,还参与了类生命周期的各个阶段,包括加载、验证、准备、解析、初始化、使用和卸载。这些阶段共同...

    java面试视频资源探索JVM底层奥秘ClassLoader源码分析与案例讲解

    java面试视频资源探索JVM底层奥秘ClassLoader源码分析与案例讲解提取方式是百度网盘分享地址

    java ClassLoader机制及其在OSGi中的应用

    Java ClassLoader机制是Java虚拟机(JVM)中一个至关重要的组成部分,它的主要任务是将类的.class文件加载到JVM中,使得程序能够运行。ClassLoader不仅负责类的加载,还涉及类的验证、初始化等一系列过程。理解...

    classloader

    通过创建自定义ClassLoader,你可以定制JVM,使类文件的引入方式完全重新定义,这提供了很多实用和有趣的可能。这篇教程将对Java ClassLoader进行概述,并指导你构建一个示例ClassLoader,该ClassLoader可以自动编译...

    java中classLoader的使用

    Java中的类加载器(ClassLoader)是Java虚拟机(JVM)的一个重要组成部分,它负责将类的.class文件从文件系统或者网络中加载到内存中,并转换为对应的Class对象。类加载器的工作流程主要包括加载、验证、准备、解析...

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

    1. JVM原理:JVM的工作原理涉及类加载器(ClassLoader)、类文件(ClassFile)、内存管理及垃圾收集机制。类加载器负责将.class文件加载到内存中,为程序的运行准备数据结构。内存管理涉及JVM内存区域,包括堆、栈、...

    ClassLoader小例子

    在Java编程语言中,ClassLoader是一个至关重要的组成部分,它负责加载类到JVM(Java虚拟机)中,使得程序能够执行。本示例"ClassLoader小例子"将深入探讨这个概念,并通过一个具体的程序来演示其工作原理。下面我们...

    Java ClassLoader定制实例

    在Java编程语言中,ClassLoader是一个至关重要的组成部分,它负责加载类到JVM(Java虚拟机)中。理解ClassLoader的工作原理以及如何定制它,对于深入学习Java的运行机制和进行高级应用开发具有重要意义。本篇文章将...

    Java ClassLoader学习总结

    ClassLoader 是 Java 中的一个抽象类,它的主要作用是加载 Class 文件到 JVM 中。ClassLoader 使用了双亲委托模式进行类加载,每一个自定义的 ClassLoader 都必须继承 ClassLoader 这个抽象类,而每个 ClassLoader ...

    JVM必知必会

    - **一个运行中的实例**:指的是特定JVM实现的某次运行实例。 - **技术兼容**:输入为符合规范的Class文件,可以执行Java程序外的其它语言编译后的文件。 #### 2. JVM与JRE、JDK的关系 - **JVM**:负责执行Class...

    ClassLoader

    在Java编程语言中,`ClassLoader`是一个非常重要的组件,它负责加载程序运行所需的类文件到Java虚拟机(JVM)中。`ClassLoader`不仅管理着类的加载过程,而且其设计模式还对Java的安全性和性能有着至关重要的影响。 #...

    jvm笔记

    在 JVM 中,我们可以使用不同的 ClassLoader 来加载类文件,从而实现类的多版本共存。 在 JVM 中,还有一个非常重要的概念,即双亲委派模式。双亲委派模式可以防止用户自定义的类加载器加载系统的类库,从而避免了...

    理解Java ClassLoader机制

    Java ClassLoader机制是Java运行时环境中的核心组件之一,它负责加载类到JVM(Java虚拟机)中,使得程序能够执行。理解ClassLoader的工作原理对于优化应用性能、处理类加载问题以及实现自定义加载器至关重要。 首先...

    ClassLoader 详解.doc

    Bootstrap ClassLoader并非继承自java.lang.ClassLoader,而是由JVM直接实现,因此在Java代码中无法直接获取和操作。它加载的类库路径可以通过-Xbootclasspath或-Dsun.boot.class.path系统属性进行设置。 2. ...

Global site tag (gtag.js) - Google Analytics