Java虚拟机通过装载,连接和初始化一个Java类型,来创建一个新的类型对象,使此类型可以被正在运行中的Java程序所使用。装载就是把二进制形式的Java类型读入Java虚拟机中;而连接就是把这种已经读入虚拟机的二进制形式的类型数据合并到虚拟机的运行时状态中去;初始化则是给类对象成员变量赋予正确的初始值,通过调用构造函数,静态初始块或者构造块实现。
装载
装载阶段由三个基本动作组成,要装载一个类型,Java虚拟机必须:
(1).通过此类型的完全限定名,产生一个代表此类型的二进制数据流。
class文件可以从多个源进行加载:
本地文件系统上装载一个java class文件
从一个ZIP, JAR, CAB或者其他某种归档文件中提取Java class文件
从一个专有数据库中提取Java class文件
把一个Java源文件动态编译为class文件格式
通过网络下载 一个Java class文件
(2).解析这个二进制数据流为方法区内的内部数据结构。(也就是此类型的,成员方法,成员属性,实现或者继承的接口,父类等等)
(3).创建一个表示此类型的java.lang.Class类的实例。装载步骤的最终产品就是这个Class为的实例对象,它成为Java程序与内部数据结构之间的接口。要访问关于此类型的信息(它们存储在内部数据结构中,具体是方法区中),程序可以调用此类型对应的Class实例对象的方法。(通过Class对象的接口可以用来实现反射机制,在Java程序运行时,动态获取类的成员信息)
这样一个过程,就是把一个类型的二进制数据解析并存储为方法区中的内部数据结构,并在堆上建立一个Class对象,被外部Java程序用来访问此类型的所有信息。通过类装载器来实现将Class文件装载进入Java虚拟机。
连接
连接分为三个子步骤:
(1).验证 确保了Java类型数据格式正确并且适合java虚拟机使用。
(2).准备 负责为此类型分配它所需的内存,比如为它的类变量分配内存,并设置默认的初始值,并不会执行任何代码。
(3).解析 负责把常量池中的符号引用转换为直接引用,在一个Java类中会包含对其它类或接口的形式引用,包括它的父类,所实现的接口,方法形参,返回值的Java类。解析的过程就是确保这些引用的类能够被正确的找到,解析的过程可能会导致其它的Java类被加载。
虚拟机的实现可以推迟解析这一步,它可在当运行中的程序真正使用某个符号引用时再去解析.解析过程就是在类型的常量池中查找类,接口,字段和方法的符号引用,把这些符号引用替换成直接引用的过程,在符号引用被程序首次使用之前,连接的这个步骤都是可选的。
初始化
为了准备让一个类或者接口被首次主动使用,最后一个步骤就是初始化,也就是为类变量赋予正确的初始值。正确的初始值是和在准备阶段赋予的默认初始值对比而言的。通过初始化块,static块,构造函数来实现的.
- 大小: 25.1 KB
分享到:
相关推荐
long果 深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理)。讲解相当详细,值得一看。下载仅供参考学习,侵权联删。
30+个视频+深入理解Java虚拟机(jvm优化+内存模型+虚拟机原理)
jvm性能调优+内存模型+虚拟机 jvm性能调优+内存模型+虚拟机 jvm性能调优+内存模型+虚拟机
java之jvm学习笔记五(实践写自己的类装载器)
深入浅出jvm虚拟机视频大全(jvm性能调优+内存模型+虚拟机原理)
深入理解Java虚拟机详细视频教程,包括jvm性能调优、Java内存模型及虚拟机原理。有详细的文档资料,配合深入理解Java虚拟机书籍学习效果更佳
深入JVM截取的一些自己认为需要了解,外加一些博客链接,还有转载的一些。不是本人所写,因为是自己看的,想着方便下大家,有些忘记转载的那篇啦,没有写转载作者,先抱歉下,不行我删除
一.java内存结构 2 二 垃圾收集算法: 3 三 JVM参数 4 四 JVM的垃圾回收集器 7 五 常用参数设置 7
包含了jvm的视频,jvm的笔记
2008Amazon四星半新书_The+Definitive+Guide+to+Terracotta_+Cluster+the+JVM+for+Spring,+Hibernate+and+P.rar
jvm中篇笔记.md
JVM结构+垃圾回收器+锁总结
深入JVM内核—原理、诊断与优化视频教程-6. 类装载器 深入JVM内核—原理、诊断与优化视频教程-6. 类装载器
一份JVM学习的笔记,含查看JVM运行时信息\JVM垃圾收集信息\JVM锁信息等
java jvm类装载器原理 介绍较为详细 大家可以参考
第92节类加载的过程-初始化00:19:41分钟 | 第93节类加载器00:22:41分钟 | 第94节双亲委派模型00:17:03分钟 | 第95节运行时栈帧结构00:08:46分钟 | 第96节局部变量表00:20:48分钟 | 第97节操作数栈00:08:36分钟 ...
深入JVM内核—原理、诊断与优化视频教程 深入JVM内核—原理、诊断与优化视频教程
JVM学习笔记.docx