欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

JVM类加载的过程细节,jvm加载细节

来源: javaer 分享于  点击 27426 次 点评:50

JVM类加载的过程细节,jvm加载细节


类加载的过程:加载、验证、准备、解析、初始化、使用、卸载
1、加载类加载器根据类全限定名获取二进制字节流,把二进制字节流加载到内存中,然后将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构,在堆中生成相应的java.lang.Class的实例,作为对方法区中这些数据的访问入口。加载阶段完成后,虚拟机外部的二进制字节流就按照虚拟机所需的格式存储在方法区之中。
2、连接2.1验证:确保被加载的类的正确性,包括文件格式验证,字节码验证,元数据验证,符号引用验证验证阶段是非常重要的,但不是必须的,它对程序运行期没有影响,如果所引用的类经过反复验证,那么可以考虑采用 -Xverifynone 参数来关闭大部分的类验证措施,以缩短虚拟机类加载的时间。
2.2准备:为类的静态变量分配内存,并将其初始化为默认值
2.3解析:把类中的符号引用转化为直接引用
3、初始化为类的静态变量赋予正确的初始值,JVM负责对类进行初始化,主要对类变量进行初始化。初始化的时机:只有当对类的主动使用的时候才会导致类的初始化,类的主动使用包括以下六种:1)创建类的实例,也就是new的方式2)访问某个类或接口的静态变量,或者对该静态变量赋值3)调用类的静态方法4)反射(如 Class.forName(“com.shengsiyuan.Test”))5)初始化某个类的子类,则其父类也会被初始化6)Java虚拟机启动时被标明为启动类的类( JavaTest),直接使用 java.exe命令来运行某个主类。

相关文章

    暂无相关文章
相关栏目:

用户点评