Bootstrap

JVM初探2——JVM启动及基本机构

一、JVM启动流程

下面是我们最熟悉的HelloWorld 代码:

public class HelloWorld {

    public static void main (String [] args)

    {

        System.out.println("HelloWorld!");

    }

}


其在运行过程如下

通过javac编译HelloWorld.java生成HelloWorld.class,然后运行java Helloworld

执行程序。


                                      图一 JVM运行程序启动过程

 

二、JVM基本机构

JVM的主要结构如下所示:

     

                                     图二 JVM基本结构

 

1PC寄存器

每个线程拥有一个PC寄存器

在线程创建时 创建

指向下一条指令的地址

执行本地方法时,PC的值为undefined

2、方法区

保存装载的类信息

类型的常量池

字段,方法信息

方法字节码

通常和永久区(Perm)关联在一起

注:JDK6时,String等常量信息置于方法,JDK7时,已经移动到了堆

3Java

和程序开发密切相关

应用系统对象都保存在Java堆中

所有线程共享Java

对分代GC来说,堆也是分代的

GC的主要工作区间

 

4Java

线程私有

栈由一系列帧组成(因此Java栈也叫做帧栈)

帧保存一个方法的局部变量、操作数栈、常量池指针

每一次方法调用创建一个帧,并压栈

 

三、总结

掌握程序在JVM中启动流程及jVM基本机构是学习JVM的基础。

 

 

 

 

;