随笔分类 -  jvm学习

摘要:准备阶段是给变量赋系统的初始值。而初始化阶段就是给变量赋程序员自己设的值 初始化阶段是<clinit>()方法的执行过程。过程如下 1.编辑器收集所有的赋值动作和静态块合并形成<clinit>方法。收集是按照代码出现的顺序决定的。并且静态初始化块只能访问定义在之前的变量,对于在之后的变量可以赋值,但 阅读全文
posted @ 2017-08-08 21:06 戴林甫 阅读(172) 评论(0) 推荐(0)
摘要:连接阶段包含验证,准备,解析三个阶段 第一个阶段--验证:主要目的是为了载入有害的字节流导致系统崩溃。因为java的.class文件是可以通过任何途径产生的。不检查的话会出很大的问题。 由于此阶段非常重要。所以检查也是非常严谨的。主要包含以下几个方面 1.文件格式验证:是否Class文件格式的规范 阅读全文
posted @ 2017-08-07 22:37 戴林甫 阅读(466) 评论(0) 推荐(0)
摘要:加载是类加载的一个阶段。不要弄混淆了 这一阶段主要做了下面三件事。1.通过一个类的全限定名获取此类的二进制流 2.将这个二进制流代表的静态存储结构转化为方法区的运行时数据结构 3.在内存中生成java.lang.Class对象,作为访问入口 .通过一个类的全限定名获取此类的二进制流:这一步说的不明确 阅读全文
posted @ 2017-08-06 21:49 戴林甫 阅读(172) 评论(0) 推荐(0)
摘要:当类被编译为.class文件后,如何在jvm中被加载的呢 总共七个步骤:加载,验证,准备,解析,初始化,使用,卸载。其中加载,验证,准备,初始化,卸载都必须按照顺序来。解析可以在初始化后再开始。使用就可有可无了 先看初始化阶段。有且只有5种情况必须对类进行初始化 (1) 遇到new、getstati 阅读全文
posted @ 2017-08-05 22:39 戴林甫 阅读(817) 评论(0) 推荐(0)