Hotspot VM运行时
系统负责启动和停止Hotspot VM。启动Hotspot VM组件的是启动器。Hotspot有若干启动器。Unix/Linux上最常用的是java,Windows上最常用的是java和javaw。也可以通过JNI_CreateJavaVM启动内嵌的JVM。还有一个网路启动器javaws,web浏览器用它来启动applet。
启动器启动Hotspot VM时会执行一系列操作。步骤如下:
1.解析命令行选项。启动器会直接处理一些命令行选项,例如-client或-server,他们决定加载那个
JIT编译器,其他参数则传给Hotspot VM。
2.设置堆的大小和JIT编译器。如果命令行没有明确设置堆的大小和JIT编译器,启动器则会通过自动优
化进行设置。自动优化的默认设定因底层系统配置和操作系统而有所不同。
3.设定环境变量如LD_LIBRARY_PATH和CLASSPATH。
4.如果命令行有-jar选项,启动器则从指定jar的manifest中查找Main-class,否则会从命令行中
读取Main-class。
5.使用标准Java本地接口(Java Native Interface, JNI)方法JNI_CreateJavaVM在新创建的
线程中创建Hotspot JVM。
6.一旦创建并初始化好Hotspot VM,就会加载Java Main-class,启动器也会从Main-class中得
到Java main方法的参数。
7.Hotspot VM通过JNI方法CallStaticVoidMethod调用Java main方法,并将命令行选项传给它。
至此,Hotspot VM开始正式执行命令行指定的java程序了。