类型的生命周期
类型装载连接初始化
所有的java虚拟机实现必须在每个类或者接口首次主动使用时进行初始化。
符合主动使用的六种情形,主动使用和被动使用的区别
接口初始化与类初始化,它们的祖先初始化有何不一样。
装载
步骤如下
通过该类型的完全限定名,产生一个代表该类型的二进制数据流
解析这个二进制数据流为方法区内的内部数据结构
创建一个表示该类型的java.lang.Class类的实例
验证
在装载完成后就要进行连接,连接前要进行验证,出要是确认类型符合java语言的语议,不会危及虚拟机的完整性。具体验证过程参看资料。
准备
验证结束后,虚拟机会为类变量分配内存,设置默认初始值。
解析
类型常量池中寻找类,接口,字段和方法的符号引用,把这些符号引用替换成直接引用的过程。
初始化
为了准备让一个类或者接口被首次主动使用,类变量赋予正确的初始值。 所有的类变量初始化语句和类型的静态化器都被java编译器收集在一起,放到一个特殊的<clinit>
方法中。初始化接口不需要初始化它的父接口。
对于常量不生成<clinit>方法,会被java编译器特殊处理。
对象生命周期
类实例化 java编译器为它编译的每一个类都至少生成一个实例初始化方法。javaclass文件中,这个方法称为”init”
垃圾收集以及终结
垃圾回收时调用一次finalize()方法
卸载类型
当某个类型不能被触及时,这个类型可以被虚拟机卸载。
动态连接,解析及扩展
Class.forName
ClassLoader.loadClass
双亲委派
初始类装载器和定义类装载器,委派过程。
CONSTANT_CLASS_INFO的解析以及其它项的解析
入口类型用来表示类和接口的符号引用。根据类型是否是数组,或者引用的类型是启动类装载器还是用户自定义的类装载器装载的,解析的细节有所不同,内容参看文档。
装载约束
为了保证类型在不同命名空间保持一致性,java虚拟机定义了几种装载约束,它们分别是类型的全限定名,类型的定义类装载器和初始类装载器。
编译时常量解析
被初始化为编译时常量的静态final变量的引用,在编译时被解析为常量值的一个本地拷贝。
直接引用
类型的直接引用指向保存类型数据的方法区中的实现相关的数据结构。
类变量的直接引用指向方法区中保存的类变量的值。
类方法的直接引用指向方法区中的一段数据结构方法区中包含调用方法的必要数据。
指向实例变量和实例方法的直接引用都是偏移量,比较接口引用的方法和实例方法偏移量的不同点。
自定义装载器的使用以及类型卸载请参看文档。
垃圾收集
用于回收内存且整理堆碎片,保证程序完整性,避免虚拟机崩溃,减少程序员的负担。
常用的垃圾收集算法
引用计数,跟踪收集,压缩收集,拷贝收集,按代收集,自适应收集,火车算法。
终结
终结方法finalize()调用时机问题。
对象可触及性的生命周期
对象三种状态:可触及,可复活,以及不可触及。
引用对象:java.lang.ref.Reference SofeReference WeakReference PhantomReference
强引用与几种弱引用的区别,详见文档。
分享到:
相关推荐
1、java虚拟机的基本介绍。 2、字节码的执行 3、常用的jvm参数配置 4、算法和种类 5、gc参数配置 6、类加载器 7、性能监控工具 8、jvm堆栈分析
深入jvm 内核-原理,诊断于优化视频教程.算是比较基础的
NULL 博文链接:https://wensiqun.iteye.com/blog/1125503
深入JVM系列-JIT编译详解1
JVM图解-JVM指令-JVM原型图.rar
深入JVM系列-逃逸分析、同步省略、栈上分配、标量替换深入JVM系列-逃逸分析、同步省略、栈上分配、标量替换逃逸分析方法逃逸线程逃逸优化同步省略同步省略对性能影
JVM规范--高手总结 Java相关 1 1.1Java定义 1 ...3.3 JVM的垃圾收集策略 27 3.3.1 Serial Collector 28 3.3.2 Parallel Collector 29 3.3.3 Concurrent Collector 30 Java虚拟机(JVM)参数配置说明 30
jvm 调优笔记-jvm
nginx-upstream-jvm-route 支持nginx版本1.15 解决nginx: [emerg] invalid parameter "srun_id=tomcat1" 问题
bcprov-ext-jdk15on-1.54.jar、bcprov-jdk15on-1.54.jar和ssl-provider-jvm16-0.2.jar附件下载
关于JVM中对象的生命周期的讲解,不错!!
目前,Java是最为流行的编程语言之一,它的基础平台就是JVM。除了Java,如JRuby、Scala、Clojure等语言也运行在JVM平台。熟悉和掌握JVM平台有着重要的实用价值和意义。 在本课程中个,将详细介绍JVM的基本原理、...
JVM初探- 内存分配、GC原理与垃圾收集器,从从提上讲解了jvm中GC的原理、基本的算法和针对不同内存区使用的算法,同时,详细的讲解了当前主要使用的垃圾收集器
Moonbox(月光宝盒)是JVM-Sandbox生态下的,基于jvm-sandbox-repeater重新开发的一款流量回放平台产品。在jvm-sandbox-repeater基础上提供了更加丰富功能,同时便于线上部署和使用,更多对比参考。 使用场景 你...
java jvm 参数 -Xms -Xmx -Xmn -Xss -
深入JVM截取的一些自己认为需要了解,外加一些博客链接,还有转载的一些。不是本人所写,因为是自己看的,想着方便下大家,有些忘记转载的那篇啦,没有写转载作者,先抱歉下,不行我删除
赠送jar包:metrics-jvm-3.1.5.jar; 赠送原API文档:metrics-jvm-3.1.5-javadoc.jar; 赠送源代码:metrics-jvm-3.1.5-sources.jar; 赠送Maven依赖信息文件:metrics-jvm-3.1.5.pom; 包含翻译后的API文档:...
深入理解JVM垃圾收集算法与垃圾收集器
JVM基础-超清文字版.pdf 这个是带完整目录书签的文字版本,文本内容可以复制的哦