jni_CreateJavaVm详解

jni_CreateJavaVm详解
   1.确保只有一个线程调用这个方法并且确保只创建一个hotspot vm 实例。因为hotspot vm
   创建的静态数据结构无法再次初始化,所以一旦初始化到某个确定点后,进程空里只能有一
   个hotspot vm。
   2.检查并确保支持当前的jni版本,初始化垃圾收集日志的输出流。
   3.初始化os模块,如当前进程id、内存页尺寸,
   4.解析传入jni——createJavavm的命令选项,保存以备将来使用
   5.初始化标准的java系统属性。
   6.支持同步栈、内存和安全点页的模块
   7.加载libzip、libhpi、及libthread等库
   8.初始化并设置信号管理器
   9.初始化线程库
   10.初始化输出流日志记录器
   11.如果使用agent库,则初始化并启动
   12初始化线程状态和线程本地存储,他们储存线程私有数据
   13初始化部分hotspot全局数据,如事件日志,os同步语言
   14至此,vm可以创建线程可。创建出来的java版main线程被关联到当前操作系统的线程,只不
   过还没添加到已有的线程列表上
   15初始化并激活java级别的同步
   16初始化启动类加载器、代码缓存、解释器、jit编译器、系统字典、
   17.现在添加java主线程到以知线程列表中。检查universe(一种必备的全局数据结构)是否正
   常。创建vmthread,执行vm所有关键的功能。同时发出jvmti事件,报告Hotspotvm的当前
   状态。
   18.加载和初始化以下java类:java.lang.String等系统类。
   19.启动hotspotvm的信号处理器线程,初始化jit编译器并启动编译代理线程。启动vm辅助线程

猜你喜欢

转载自blog.csdn.net/yl_hahha/article/details/80330930
JNI