黑马程序员技术交流社区

标题: java jvm启动顺序和原理是怎样的? [打印本页]

作者: 724681149    时间: 2011-10-16 14:11
标题: java jvm启动顺序和原理是怎样的?
java jvm启动顺序和原理是怎样的?
作者: 余志强    时间: 2011-10-16 17:09
本帖最后由 余志强 于 2011-10-16 17:10 编辑

当我们调用一个javase命令 运行某个程序,该命令将启动一条java虚拟机进程,
1当程序主动使用某个类时,如果该类没有加载到内存中来,系统会通过加载,连接,初始化3隔步骤来对该类进行初始化,如果没有以外,JVM将会连接完成这三个步骤,所有有时也把这三个步骤统称为类的加载或者初始化;
2 当类被加载之后,系统为止生成一个对应的Class对象,接着会进入连接阶段,连接阶段会负责把类的二进制数据合并到JRE中;
3,类的初始化,在类的初始化阶段,虚拟机负责对类进行初始化,主要对静态属性进行初始化,在Java中对静态属性指定初始值有2种方式,①声明静态属性时指定初始值②使用静态代码块为静态属性指定初始值.如:
static int a;
static{
a=6;
}

4类的初始化时机:
当Java程序首次通过一下6中方式来使用某个接口或类时,系统就会初始化该类或者接口
①初创建类的实例,通过new 操作符
②调用某个类的静态方法
③访问某个类或者接口的静态属性,或者为该属性赋值
④通过反射方式来强制创建某个类或者接口对用的Class对象,
⑤初始化某个类的子类,当初始化某个类的子类时,程序会先初始化父类
⑥直接使用java.exe命令来运行某个主类时,程序会先初始化该主类;
疯狂java讲义说的很清楚,希望对你有帮助!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2