Jvm 类加载器(一)

  1、JVM的体系机构

             

  2、类加载器ClassLoader

    负责加载class文件,class文件在文件开头有特定的文件标识(CA FE BE AN),并且ClassLoader只负责class文件的加载,至于它是否可运行,则由Execution Engine决定。

    

  3、类加载器ClassLoader2

    虚拟机自带的加载器

      1、启动类加载器(Bootstrap)  C++

        2、扩展类加载器(Extension) Java

        3、应用程序类加载器(AppClassLoader),Java也叫系统类加载器,加载当前应用的classpath的所有类

        4、用户自定义加载器,Java.lang.ClassLoader的子类,用户可以定制类的加载方式

     

    

原文地址:https://www.cnblogs.com/houstao/p/11508734.html

时间: 2024-10-06 06:28:34

Jvm 类加载器(一)的相关文章

深入JVM类加载器机制,值得你收藏

先来一道题,试试水平 public static void main(String[] args) { ClassLoader c1 = ClassloaderStudy.class.getClassLoader(); ClassLoader c1Parent = ClassloaderStudy.class.getClassLoader().getParent(); ClassLoader c1ParentParent = ClassloaderStudy.class.getClassLoad

JVM类加载器ClassLoader解读

ClassLoader类加载器负责将类加载进入JVM中. ClassLoader的作用 (1)加载class文件进入JVM (2)审查每个类应该由谁加载,采用双亲委托机制 (3)将class字节码重新解析成JVM要求的对象格式 ClassLoader结构分析 protected final Class<?> defineClass(byte[] b, int off, int len)throws ClassFormatError{ return defineClass(null, b, of

JVM 类加载器的工作原理

Java类加载器的作用就是在运行时加载类.Java类加载器基于三个机制:委托.可见性和单一性.委托机制是指将加载一个类的请求交给父类加载器,如果这个父类加载器不能够找到或者加载这个类,那么再加载它.可见性的原理是子类的加载器可以看见所有的父类加载器加载的类,而父类加载器看不到子类加载器加载的类.单一性原理是指仅加载一个类一次,这是由委托机制确保子类加载器不会再次加载父类加载器加载过的类.正确理解类加载器能够帮你解决NoClassDefFoundError和java.lang.ClassNotFo

JVM类加载器

在写这篇文章之前特意读了下十多年前的一本书的某些章节 <深入java虚拟机>,收获还是挺大,至少知道了类加载器在安全方面起到了至关重要的作用,废话不多说,来看看类加载器是什么. 我们知道我们写的java程序最终都要编译成class文件,这是一种二进制的文件,被设计的非常紧凑,因为这有利于class文件在网络中的传输,奠定java语言在分布式领域的优势,另一个优势是跨平台,也就是所谓的一次编译到处运行.当jvm执行class文件的时候,首先要做的肯定是去加载它,类加载器主要做的事情就是去加载cl

JVM类加载器原理与自定义类加载器

类加载器原理 JVM将class文件字节码文件加载到内存中, 并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类的java.lang.Class 对象,作为方法区类数据的访问入口. 类缓存 标准的Java SE类加载器可以按要求查找类,但一旦某个类被加载到类加载器中,它将维持加载(缓存)一段时间.不过,JVM垃圾收集器可以回收这些Class过象. 类加载器数状结构 引导类加载器(bootstrap class loader) 它用来加载Java的核心库(JAVA_HOME/

十四.jvm类加载器

什么是类的加载? 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口. 1.加载.class文件的方式 从本地系统中直接加载 通过网络下载.class文件 从zip,jar等归档文件中加载.class文件 从专有数据库中提

JVM类加载器及Java类的生命周期

预定义类加载器(三种): 启动(Bootstrap)类加载器: 是用本地代码实现的类装入器,它负责将<Java_Runtime_Home>/lib下面的类库加载到内存中(比如rt.jar).由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作.扩展扩展(Extension)类加载器: 是由 Sun 的 ExtClassLoader(sun.misc.Launcher$ExtClassLoader)实现的.它负责将< Java_R

(二十七)JVM类加载器机制与类加载过程

一.Java虚拟机启动.加载类过程分析 下面我将定义一个非常简单的java程序并运行它,来逐步分析java虚拟机启动的过程. package org.luanlouis.jvm.load; import sun.security.pkcs11.P11Util; /** * Created by louis on 2016/1/16. */ public class Main{ public static void main(String[] args) { System.out.println(

JVM 类加载器命名空间深度解析与实例分析

一.创建Sample 1.创建实例 public class MyPerson { private MyPerson myPerson; public void setMyPerson(Object obj){ this.myPerson = (MyPerson)obj; } } 2.创建测试类 public class MyTest20 { public static void main(String[] args) throws Exception { MyTest16 loader1 =