background image

JAVA 虚拟机的生命周期

  一个运行时的 Java 虚拟机实例的天职是:负责运行一个 java 程序。当启动一个

Java 程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随

之消亡。如果同一台计算机上同时运行三个 Java 程序,将得到三个 Java 虚拟机实例。

每个 Java 程序都运行于它自己的 Java 虚拟机实例中。

  Java 虚拟机实例通过调用某个初始类的 main()方法来运行一个 Java 程序。而这个

main()方法必须是共有的(public)、静态的(static)、返回值为 void,并且接受一个字符

串数组作为参数。任何拥有这样一个 main()方法的类都可以作为 Java 程序运行的起点。

public

 

class

 Test {

    

public

 

static

 

void

 main(String[] args) {

        

// TODO Auto-generated method stub

        System.out.println("Hello World");
    }

}

  在上面的例子中,Java 程序初始类中的 main()方法,将作为该程序初始线程的起

点,任何其他的线程都是由这个初始线程启动的。

  在 Java 虚拟机内部有两种线程:守护线程和非守护线程。守护线程通常是由虚拟机

自己使用的,比如执行垃圾收集任务的线程。但是,Java 程序也可以把它创建的任何线

程标记为守护线程。而 Java

——

程序中的初始线程

就是开始于 main()的那个,是非守

护线程。

  只要还有任何非守护线程在运行,那么这个 Java 程序也在继续运行。当该程序中所

有的非守护线程都终止时,虚拟机实例将自动退出。假若安全管理器允许,程序本身也

能够通过调用 Runtime 类或者 System 类的 exit()方法来退出。

JAVA 虚拟机的体系结构