Java类加载的时机】的更多相关文章

转载自:http://chenzhou123520.iteye.com/blog/1597597 Java虚拟机规范没有强制性约束在什么时候开始类加载过程,但是对于初始化阶段,虚拟机规范则严格规定了有且只有四种情况必需立即对类进行“初始化”(而加载.验证.准备阶段则必需在此之前开始),这四种情况归类如下: 1.遇到new.getstatic.putstatic或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化.生成这4条指令最常见的Java代码场景是:使用…
类是什么时候初始化的?类初始化的时候会执行static块,这个是我们知道的.那么我们可以用static块来做个实验. 上面代码输出是: hello worldinitthis is a test这说明了什么?在调用TR.hello_world的时候,类并没有初始化!而是在调用其方法test的时候才初始化的. 这是因为在编译的时候,常量(static final 修饰的)会存入调用类的常量池[这里说的是main函数所在的类的常量池],调用的时候本质上没有引用到定义常量的类,而是直接访问了自己的常量…
Class 文件中描述的各种信息都必须加载到虚拟机中才能运行和使用.而虚拟机怎么加载这些Class 文件呢?Class 文件进入到虚拟机中会发生什么变化呢? 虚拟机类加载机制是指 虚拟机把描述类的数据从 Class 文件加载到内存中,并对数据进行校验.转换解析.初始化,最终形成可以被虚拟机直接使用的Java 类型. 与那些在编译器进行连接工作的语言不同,Java 中,类的加载一直到初始化过程都是在运行期间完成的,虽然会损失一点性能,但是却使Java 应用程序具有高度灵活的特性.Java 可以动态…
1.前言 java是跨平台语言,主要是因为它的java虚拟机的存在,java有事编译语言,所以需要将编写的java文件编译成jvm可运用的class字节码文件.在java中一切皆对象.对于Java虚拟机而言,一个Java类也是一个对象.一个类在JVM中被实例化成一个对象,需要经历三个过程:加载.链接和初始化. 2.加载 通过读取字节码二进制.class文件将类加载到内存,从而达到类的从硬盘上到内存上的一个迁移,所有的class必须加载到内存才能工作.一个Java类在被加载到内存后会在Java堆中…
(1)阿里的面试官问我,可以不可以自己写个String类 答案:不可以,因为 根据类加载的双亲委派机制,会去加载父类,父类发现冲突了String就不再加载了; (2)能否在加载类的时候,对类的字节码进行修改 答案:可以,使用Java探针技术,可以参考:Java探针-Java Agent技术-阿里面试题 阅读目录 什么是类加载器   类加载器与类的”相同“判断   类加载器种类  双亲委派模型  类加载过程  自定义类加载器  JAVA热部署实现 什么是类加载器 负责读取 Java 字节代码,并转…
一.类的生命周期 一个类从加载进内存到卸载出内存一共要经历7个阶段:加载—>验证—>准备-->解析—>初始化—>使用—>卸载. 类加载包括五部分:加载—>验证—>准备-->解析—>初始化 在类加载的过程中,以下三个过程成为连接:验证—>准备-->解析 因此,JVM的类加载过程可以分为三个部分:加载—>连接—>初始化 c/c++语言在程序运行之前需要完成预处理.编译.汇编.连接,但是在Java语言中类加载(加载.连接.初始化…
本文目的: 深入理解Java类加载机制; 理解各个类加载器特别是线程上下文加载器; Java虚拟机类加载机制 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制. 在Java语言里面,类型的加载.连接和初始化过程都是在程序运行期间完成的 类加载的过程 类的个生命周期如下图: 为支持运行时绑定,解析过程在某些情况下可在初始化之后再开始,除解析过程外的其他加载过程必须按照如图顺序开始. 加载…
Java 类加载机制 Java 类加载机制详解. @pdai Java 类加载机制 类的生命周期 类的加载:查找并加载类的二进制数据 连接 验证:确保被加载的类的正确性 准备:为类的静态变量分配内存,并将其初始化为默认值 解析:把类中的符号引用转换为直接引用 初始化 使用 卸载 类加载器, JVM类加载机制 类加载器的层次 寻找类加载器 类的加载 JVM类加载机制 自定义类加载器 参考文章 类的生命周期 其中类加载的过程包括了加载.验证.准备.解析.初始化五个阶段.在这五个阶段中,加载.验证.准…
(1)阿里的面试官问了两个问题,可以不可以自己写个String类 答案:不可以,因为 根据类加载的双亲委派机制,会去加载父类,父类发现冲突了String就不再加载了; (2)能否在加载类的时候,对类的字节码进行修改 答案:可以,使用Java探针技术,可以参考:Java探针-Java Agent技术-阿里面试题 阅读目录 什么是类加载器   类加载器与类的”相同“判断   类加载器种类  双亲委派模型  类加载过程  自定义类加载器  JAVA热部署实现 什么是类加载器 负责读取 Java 字节代…
Java类加载机制(转载) 概述 在开始正文之前,我们先看两张图 .Java平台的理解?Java最显著的特性?Java是解释执行? 先看一下java程序的执行流程图 再看一下jvm的大致物理结构图 本文是我在学习jvm类加载机制的时候对网上的一些资料的整理和总结.本文将研究一下问题: 什么是类加载?类的加载过程(生命周期)?类什么时候初始化?类初始化顺序?类加载器.反射.字节码等一系列问题. 一.类加载机制概念 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和…