jvm载入过程】的更多相关文章

类载入过程 类从被载入到虚拟机内存中開始,到卸载出内存为止,它的整个生命周期包含:载入.验证.准备.解析.初始化.使用和卸载七个阶段.它们開始的顺序例如以下图所看到的: 当中类载入的过程包含了载入.验证.准备.解析.初始化五个阶段.在这五个阶段中,载入.验证.准备和初始化这四个阶段发生的顺序是确定的.而解析阶段则不一定,它在某些情况下能够在初始化阶段之后開始,这是为了支持 Java 语言的执行时绑定(也成为动态绑定或晚期绑定). 另外注意这里的几个阶段是按顺序開始,而不是按顺序进行或完毕,由于这…
了解类载入全过程,有助于了解JVM执行过程,以及更深入了解java动态性(解热部署,动态载入),提高程序灵活性. 类载入全过程: JVM将class文件字节码文件载入到内存中.并对数据进行校验解析和初始化,终于形成能够直接使用的java类型的过程. 载入 将class文件字节码内容载入到内存中,并将这些静态数据转换成方法区中的执行时数据结构,在堆中生成一个代表这个类的java.lang.Class对象,作为方法区类数据的訪问入口. 链接 将Java类的二进制代码合并到JVM的执行状态之中的过程.…
上接博文<u-boot之u-boot-2009.11启动过程分析> Linux内核启动及文件系统载入过程 当u-boot開始运行bootcmd命令,就进入Linux内核启动阶段.与u-boot类似,普通Linux内核的启动过程也能够分为两个阶段,但针对压缩了的内核如uImage就要包含内核自解压过程了.本文以linux-2.6.37版源代码为例分三个阶段来描写叙述内核启动全过程.第一阶段为内核自解压过程,第二阶段主要工作是设置ARM处理器工作模式.使能MMU.设置一级页表等,而第三阶段则主要为…
JVM类加载过程学习总结 先不说JVM类加载的原理,先看实例: NormalTest类,包含了一个静态代码块,执行的任务就是打印一句话. /** * 在正常类加载条件下,看静态代码块是否会执行 * @author jianying.wcj * @date 2013-6-21 */ public class NormalTest { static { System.out.println("hello world!"); } } TestStatic类, 有三行代码,其中两行被注释,测试…
首先Throws(抛出)几个自己学习过程中一直疑惑的问题: 1.什么是类加载?什么时候进行类加载? 2.什么是类初始化?什么时候进行类初始化? 3.什么时候会为变量分配内存? 4.什么时候会为变量赋默认初值?什么时候会为变量赋程序设定的初值? 5.类加载器是什么? 6.如何编写一个自定义的类加载器? 首先,在代码编译后,就会生成JVM(Java虚拟机)能够识别的二进制字节流文件(*.class).而JVM把Class文件中的类描述数据从文件加载到内存,并对数据进行校验.转换解析.初始化,使这些数…
JVM启动过程包括:加载.连接.初始化 1.加载:就是将class文件加载到内存.详细的说是,将class文件加载到运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区类的数据结构 有两种类型的类加载器:  1.1JVM自带提供的三类加载器:根类加载器Bootstrap Classloader(C++写的, 程序员无法在JAVA代码中获得该类)   扩展加载器Extension Classloader,使用Java代码实现   系统加载器System…
一. 类的生命周期 类从被载入到虚拟机内存中開始,到卸载出内存为止,有下面(如图)的生命周期: 以上"载入->验证->准备->解析->初始化"称为类的载入过程. Java虚拟机规范中没有对什么时候须要開始类载入的第一阶段进行强制约束,而是交给了虚拟机依据详细实现来自由把握. 可是对于初始化阶段,虚拟机有下面5种必须对类立即进行"初始化"的情况: (1)遇到new.getstatic.putstatic或invokestatic这4条字节码指令…
双亲委派加载模型 为什么需要双亲委派加载模型 主要是为了安全,避免用户恶意加载破坏JVM正常运行的字节码文件,比如说加载一个自己写的java.util.HashMap.class.这样就有可能造成包冲突问题. 类加载器种类 启动类加载器:用于加载jdk中rt.jar的字节码文件 扩展类加载器:用于加载jdk中/jre/lib/ext文件夹下的字节码文件 应用程序类加载器:加载classPath下的字节码文件 自定义类加载器:用户在程序中自己定义的加载器 源码分析 1.ClassLoader.lo…
上两篇中梳理了整个java启动过程中,jvm大致是如何运行的.即厘清了我们认为的jvm的启动过程.但那里面仅为一些大致的东西,比如参数解析,验证,dll加载等等.把最核心的loadJavaVM()交给了一个dll或者so库.也就是真正的jvm我们并没有接触到,我们仅看了一个包装者或者是上层应用的实现.即我们仅是在jdk的角度看了下虚拟机,这需要更深入一点. 1. 回顾jvm加载框架 虽然jvm的加载核心并不在jdk中,但它确实没有自己的简易入口.也就是说jvm想要启动,还得依靠jdk. 所以,让…
一个对象变量可以指示多种实际类型的现象称为多态 允许不同类的对象对同一消息做出响应.方法的重载.类的覆盖正体现了多态. 1.多态的机制 1.1 本质上多态分两种 1.编译时多态(又称静态多态) 2.运行时多态(又称动态多态) 重载(overload 发生在一个类中,方法名必须相同,不同参数)就是编译时多态的一个例子,编译时多态在编译时就已经确定,运行时运行的时候调用的是确定的方法. 我们通常所说的多态指的都是运行时多态,也就是编译时不确定究竟调用哪个具体方法,一直延迟到运行时才能确定.这也是为什…