zoukankan      html  css  js  c++  java
  • HotSpot设计原理与实现:一、初识HotSpot

    一、HotSpot内核模块组成和功能框架

    1、HotSpot内核模块图

    (1)Prims模块:

    (2)Service模块:

    (3)Runtime模块:

    二、虚拟机生命周期(JVM初始化过程)

    1、虚拟机生命周期时序图

     

    虚拟机生命周期

    1:Lancher JVM启动器

      Lancher是用于启动JVM和应用程序的工具,HotSpot中提供两种Lancher类型:通用启动器(即JDK命令程序:java,为产品级启动器)、调试版启动器gamma

       通用启动器:入口在hotspot/../jdk/src/share/bin/main.c

       调试版启动器:入口在/hotspot/src/share/tools/lancher/java.c

       Lancher入口main函数:不同操作系统中main函数的原型存在差异

             Linux或Unix系统中:在/hotspot/src/share/tools/lancher/java.c

             Windows系统中:../jdk/src/share/bin/main.c

       main工作重点:创建一个运行环境,启动一个新的线程创建JVM,并调用Java程序的main方法

    新线程(主线程)执行入口:JavaMain方法  ,伴随应用程序的整个生命周期

    2:主线程(JavaMain线程)

    JavaMain方法在:/hotspot/src/share/tools/lancher/java.c

        JavaMain的主要流程:

    JavaMain主程序流程3:InitializeJVM()方法:

                    初始化JVM,完成对vm和env指派接口函数的重任

     

    4:JNI_CreateJavaVM函数:

         主要任务是调用Threads模块的create_vm()函数,以完成最终的虚拟机的创建和初始化工作。

         在Threads模块中,实现对虚拟机各个模块的初始化,以及创建虚拟机线程.

     

    5:create_vm()初始化JVM系统相关模块

    6:add()函数,将线程加入线程队列

     

    7:create()函数,创建虚拟机线程”VMThread”

         VMThread是在JVM内部执行VMOperation的线程,实现JVM内部的核心操作,为其他运行时模块以及外部程序接口服务。VMThread线程创建成功后,在整个运行期间不断等待/接受并执行制定的VMOperation

        创建守护线程,包括:Signal Dispatcher,Attach Listener,Watcher  Thread等

     

    8:vm_init_globals():

          实现对全局性数据结构的初始化,比如初始化Java基本类型系统、分配全局事件缓存区、初始化事件队列、初始化全局锁、初始化内存池、初始化JVM性能统计数据区(Perf Data)

    9:init_globals()函数初始化全局模块 

          全局模块有:JMX(Manage模块),Code Cache(代码高速缓存),StubRountines,Universe,解释器,模板表,stubs

    10:LoadClass()函数加载应用程序主类    

    11:jni_CallStaticVoidMethod()函数实现对Java应用程序的主方法的调用。

    12:jni_DetachCurrentThread()函数

    13:jni_DestroyJavaVM()函数,销毁JVM后退出

  • 相关阅读:
    Gvim快捷键学习
    一步一步学习Vim 全图解释
    经典vim插件功能说明、安装方法和使用方法介绍
    中国数学数字图书馆
    RQNOJ第一题---PID1 / 明明的随机数
    gdb常用命令
    linux c下mysql编程样例
    linux c编程 -- 线程互斥
    linux c多线程编程范例
    数据结构 -- 可重用模块的接口设计模板
  • 原文地址:https://www.cnblogs.com/wshcn/p/10303187.html
Copyright © 2011-2022 走看看