jvm
chenge_j
这个作者很懒,什么都没留下…
展开
-
JAVA虚拟机(JVM)——类加载的过程(加载、验证、准备、解析、初始化)
加载“加载”是”类加载”过程的一个阶段。在加载阶段,虚拟机需要完成以下3件事情:1.通过一个类的全限定名来获取定义此类的二进制字节流。 2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。 验证验证是连接阶段的第一步,这一阶段的目的是为了确保Class文件的字节流中包含的信息符合原创 2017-05-24 16:39:40 · 11602 阅读 · 1 评论 -
JAVA虚拟机(JVM)——虚拟机字节码执行引擎(一)
概述 执行引擎是JVM最核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,二虚拟机的执行引擎是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。 在不同的虚拟机实现里面,执行引擎在执行Java代码的时候可能会有解释执行和原创 2017-06-16 14:10:59 · 834 阅读 · 1 评论 -
JAVA虚拟机(JVM)——虚拟机字节码执行引擎(二)
方法调用 方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定调用哪一个方法,暂时还不涉及方法内部的具体运行过程。Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(相当于之前说的直接引用)。虽然这个特性给Java带来了更强大的动态扩展能力,但也使Java方法调用过程,需要在类加载期间,甚原创 2017-06-16 17:26:49 · 570 阅读 · 0 评论 -
JAVA虚拟机(JVM)——类加载的时机之类的初始化
类的生命周期 从类被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括如上的7个阶段。其中,验证、准备、解析这三个部分又被统称为“连接(Linking)。类的加载过程必须按照这种顺序按部就班的开始,而解析阶段则不一定,它在某些情况下是可以在初始化阶段之后再开始的,这是为了支持Java语言的运行时绑定(也称为动态绑定或晚期绑定)。 对类进行初始化的条件 什么情况下需要开始类加载原创 2017-05-24 15:00:30 · 2375 阅读 · 1 评论