java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。本站提供基于Java框架struts,spring,hibernate等的桌面应用、web交互及移动终端的开发技巧与资料

保持永久学习的心态,将成就一个优秀的你,来 继续搞起java知识。

1. 加载:通过类加载器把 .class 文件读入到一个字节数组,然后产生Class对象。

    a ) Bootstrap ClassLoader:负责加载存放在jre\lib下,或被-Xbootclasspath参数指定的路径中的,并且能被虚拟机识别的类库(如rt.jar,所有的java.*开头的类)。启动类加载器是无法被Java程序直接引用的。    b )Extension ClassLoader:负责加载jre\lib\ext目录中,或者由java.ext.dirs系统变量指定的路径中的所有类库(如javax.*开头的类),开发者可以直接使用扩展类加载器。它的父加载器是 Bootstrap ClassLoader。

    c ) Application ClassLoader:负责加载用户类路径(环境变量classpath)所指定的类或者系统属性 java.class.path 所指定的目录中的类,开发者可以直接使用该类加载器,如果应用程序中没有自定义过自己的类加载器,一般情况下这个就是程序中默认的类加载器。它的父加载器是Extension ClassLoader。

    d ) User-defined ClassLoader:负责用户指定类的加载,继承在Application ClassLoader。

 

2. 验证一共有四个步骤:

    a)文件格式的验证:验证文件格式符合Java类的文件格式规范,确保进入内存方法区的字节流符合规范。    b)元数据的验证:语法分析确保符合Java语法规范。

    c)字节码验证:对类的方法进行验证,确保不会对JVM产生安全危害。

    d)符号引用验证:为解析阶段符号引用转变为直接引用做准备。对常量池中的各种符号引用做匹配性校验。

 

3. 准备:

    为静态变量分配内存并设置默认的初始值。 

4. 解析:

    将符号引用替换为直接引用。 

5. 类初始化:

    a)如果类存在直接的父类并且这个类还没有被初始化,那么就先初始化父类。    b)如果类中存在初始化语句,就依次执行这些初始化语句。

javaclass机制classloader

因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。

后续会有更多的精彩的内容分享给大家。