JAVA-类加载机制(4)-其他

1.JVM初始化步骤

  ①,如果类还没有加载连接,则虚拟机先加载并连接

  ②,父类还没有被初始化,则先初始化父类

  ③,如果类包含初始化语句,则系统依次执行这些初始化语句

2.类初始化时机

  ①,使用new创建类的实例

  ②,访问类或接口的静态变量,或者对静态变量进行赋值

  ③,调用类的静态方法

  ④,反射

  ⑤,初始化子类

  ⑥,虚拟机启动时的启动类

3.JVM结束生命周期的方式

  ①,System.exit()

  ②,程序正常执行结束

  ③,程序发生异常或者错误

  ④,操作系统异常导致的虚拟机终止运行

4.类加载的三种方式

  ①,虚拟机初始化加载

  ②,使用Class.forName()方法动态加载

  ③,使用ClassLoader.loadClass()方法动态加载

5.Class.forName和ClassLoader.loadClass区别

  ①,Class.forName在将类加载到虚拟机后,会执行static代码块

  ②,ClassLoader.loadClass在将类加载到虚拟机后,不是执行static代码块;  只要newInstance后才会执行static代码块

6.获取类加载器的方式

  ①,通过线程获取

    如:ClassLoader loader = Thread.currentThread().getContextClassLoader();

  ②,通过某个类获取

    如:ClassLoader loader = HelloWorld.class.getClassLoader();

7.自定义类加载器

  ①,继承ClassLoader

  ②,重写findClass方法

实例参考: http://www.importnew.com/23792.html

时间: 2024-12-25 13:58:17

JAVA-类加载机制(4)-其他的相关文章

Java类加载机制的深入研究

类加载机制 类加载是Java程序运行的首要步骤,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行,同时让程序能动态的控制类加载,比如热部署等,提高程序的灵活性和适应性. 类加载过程 Java程序运行的场所是内存. 当在命令行执行java HelloWorld的时候,JVM会将HelloWorld.class加载到内存中,形成一个class对象:HelloWorld.class,具体过程如下: 1.找到jre目录,找到jvm.dll文件,并且初始化JVM 2.产生一个

深入理解和探究Java类加载机制-

深入理解和探究Java类加载机制---- 1.java.lang.ClassLoader类介绍 java.lang.ClassLoader类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个Java 类,即 java.lang.Class类的一个实例. ClassLoader提供了一系列的方法,比较重要的方法如: 2.JVM中类加载器的树状层次结构 Java 中的类加载器大致可以分成两类,一类是系统提供的,另外一类则是由 Java 应用开发人员编写

两道面试题,带你透彻解析Java类加载机制

在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: class Grandpa { static { System.out.println("爷爷在静态代码块"); } } class Father extends Grandpa { static { System.out.println("爸爸在静态代码块"); } public static int factor = 25; public Father() { System.ou

用两道面试题带你详细了解 Java 类加载机制

在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: class Grandpa{static{System.out.println("爷爷在静态代码块");}} class Father extends Grandpa{static{System.out.println("爸爸在静态代码块");}public static int factor = 25;public Father(){System.out.println("

一文读懂Java类加载机制

Java 类加载机制 Java 类加载机制详解. @pdai Java 类加载机制 类的生命周期 类的加载:查找并加载类的二进制数据 连接 验证:确保被加载的类的正确性 准备:为类的静态变量分配内存,并将其初始化为默认值 解析:把类中的符号引用转换为直接引用 初始化 使用 卸载 类加载器, JVM类加载机制 类加载器的层次 寻找类加载器 类的加载 JVM类加载机制 自定义类加载器 参考文章 类的生命周期 其中类加载的过程包括了加载.验证.准备.解析.初始化五个阶段.在这五个阶段中,加载.验证.准

透彻解析Java类加载机制

目录 Java类加载机制的七个阶段 加载.验证.准备(重要).解析.初始化(重要).使用.卸载 在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: class Grandpa { static { System.out.println("爷爷在静态代码块"); } } class Father extends Grandpa { static { System.out.println("爸爸在静态代码块"); } public sta

Java类加载机制与反射 jvm学习

同一个JVM的有线程.所有变量都处于同一个进程里,他们都使用JVM进程的内存区.当系统出现以下几种情况时JVM进程将被终止: 1.程序运行到最后正常结束 2.程序运行到使用System.exit()或Runtime.getRuntime().exit)代码处结束程序. 3.程序执行过程中遇到未捕获的异常或错误而结束. 4.程序所在平台强制结束了JVM进程 注意两次运行java程序,处于两个不同的JVM他们不共享内存. 类的加载 1.当程序主动使用某个类时,如果该类还未加载到内存中,则系统会通过加

深入研究Java类加载机制

类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行. 研究类加载机制的第二个目的是让程序能动态的控制类加载,比如热部署等,提高程序的灵活性和适应性. 一.简单过程 Java程序运行的场所是内存,当在命令行下执行: java HelloWorld 命令的时候,JVM会将HelloWorld.class加载到内存中,并形成一个Class的对象HelloWorld.class. 其中的过程就是类加载过程: 1.寻找jre目录,寻找jvm.d

java类加载机制及方法调用

类加载机制 概述 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading).验证(Verification).准备(Preparation).解析(Resolution).初始化(Initialization).使用(Using)和卸载(Unloading)7个阶段.其中验证.准备.解析3个部分统称为连接(Linking) 于初始化阶段,虚拟机规范则是严格规定了有且只有5种情况必须立即对类进行"初始化"(而加载.验证.准备自然需要在此之前开始): 1

谈谈 Java 类加载机制

概述 类加载器主要分为两类,一类是 JDK 默认提供的,一类是用户自定义的. JDK 默认提供三种类加载器: Bootstrap ClassLoader 启动类加载器:每次执行 java 命令时都会使用该加载器为虚拟机加载核心类.该加载器是由 native code 实现,而不是 Java 代码,加载类的路径为 <JAVA_HOME>/jre/lib.特别的 <JAVA_HOME>/jre/lib/rt.jar 中包含了 sun.misc.Launcher 类, 而 sun.mis