学习JVM原理-11.类加载过程概述

摘自《深入理解Java虚拟机》周志明著

所谓
类加载,就是把字节码二进制文件(或流)弄到虚拟机内存里变成"类",并在其中进行验证和初始化的过程. 这个过程是在运行时完成的

具体有五个可能交叉进行的步骤:

   1.Loading: 把ByteCode变成Runtime数据结构并将存储到Method Area(Heap里也会有个Class对象)

   2.Verification: 你拿到的ByteCode可能不是java编译来的,因此可能包含不安全的指令或数据结构,这需要验证; 另外还要看看有没有java.lang.NoSuchFieldError之类的符号连接问题

   3.Preparation: 为静态变量分配内存并设置初始值(0, null等)

   4.Resolution: 把符号引用替换成与内存有关的直接引用,Verification中就会执行这一步以验证有没有符号连接问题

   5.Initialization: 给静态变量赋值,并执行static块里的语句

这些步骤中有很多非显而易见,让你吃惊的东西.后文详述.

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.