标签:
HotSpot VM运行时系统为HotSpot JIT编译器和垃圾收集器提供服务和通用API,同时还为VM提供启动、线程管理、JNI(Java本地接口)等基本功能。HotSpot VM运行时环境担当许多职责,具体如下:
1、命令行选项
通过命令行选项来配置HotSpot VM,相当于HotSpot VM的配置文件,主要包括选择哪个JIT编译器、何种垃圾收集器、Java Heap的大小等。命令行选项主要有3类:
1.1、标准选项(Standard Option)
标准选项是Java Virtual machine Specification要求所有Java虚拟机都实现的选项,它们在发行版之间保持稳定,但也可能在后续的发行版中被废除。
1.2、非标准选项(Nonstandard Option)
非标准选项(以-X为前缀)不保证、也不强制所有JVM实现都必须支持,它可能未经通知就在Java SDK发行版之间发生更改。
1.3、非稳定选项(Developer Option)
非稳定选项通常是为了特定需要而对JVM的运行进行校正,并且可能需要有系统配置参数的访问权限。与非标准选项一样,非稳定选项也可能不经通知就在发行版之间发生变动。
2、VM生命周期
HotSpot VM运行时系统负责启动和停止HotSpot VM。启动HotSpot VM的组件式启动器。HotSpot VM有若干个启动器。Unix/Linux上最常用的是java,Windows上是java和javaw。也可以通过JNT接口(JNI_CreateJavaVM)启动内嵌的JVM,另外还有一个网络启动器Javaws(Java Web Start)。
启动器启动HotSpot VM时会执行一系列操作。步骤概述如下:
(1)解析命令行选项
(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 VM
(6)一旦创建并初始化号HotSpot VM,就会加载Java Main-Class,启动器也会从Java Main-Class中取得Java main方法的参数
(7)HotSpot VM通过JNI方法CallStartVoidMethod调用Java main方法,并将命令行选项传给它
标签:
原文地址:http://www.cnblogs.com/pinxiong/p/4925612.html