Java高级之虚拟机加载机制[转]
Jvm要加载的是二进制流,可以是.class文件形式,也可以是其他形式,按照它加载的标准来设计就不会有太大问题。 以下主要就机制和标准两个问题分析一番: 首先来Java类文件的加载机制 ,跟变量的加载机制类似,它先把Class文件加载入内存,再对数据进行验证、解析和初始化,最终形成虚拟机可以直接使用的Java类型。由于Java是采用JIT机制,所以加载时会比较慢,但优点也明显,具有高度灵活性,支持动态加载和动态连接。 接下来就讲讲类的加载过程: 一个类加载的基本过程是按照下面的顺序 来,但也有不严格按照这个顺序来的,也有打乱顺序来的,如动态加载就得先初始化再解析。 1、加载 由虚拟机自行决定,但也有由于下面的阶段要执行而执行上面阶段的情况。 这时虚拟机会做三件事: 第一、通过全限定名读取文件的二进制流; 第二、把文件里的静态方法和变量放到方法区中; 第三、生成一个对象放入堆中,作为访问入口。 注意第一条,仅是读取二进制流,没说具体从什么文件中读,也没说从哪里读,所以造就Java很强的扩展性,可以从Jar、Zip中,也可以从网络层、数据库层等 。 主要是对象和方法区的声明。 2、验证 确...