剖析HotSpot的初始化过程
1.HotSpot的构成模块
HotSpot的顶层模块包含在/openjdk/hospot/src/share/vm中,分别为adlc、asm、cl、ci、classfile、code、compiler、gc、interpreter、libadt、memory、oops、opto、Prims、runtime、services、shark和utilities
2.跟踪HotSpot的初始化过程
1) 首先执行版本检查;
2) 检查并确认是否支持当前的JNI版本,并调用ostram_init()函数初始化输出流模块;
3) 调用Arguments模块的process_sun_java_launcher_propertites()函数配置Launcher的一些相关参数;
4) 调用init()函数初始化os模块,包括:随机数生成器(Random Number Generator)、当前进程id(CurrentProcess id)、高精度计时器(High-Resolution Timer)、内存页尺(Memory Page Size),以及保护页(Guard Pages)等;
5) 初始化一些系统属性,比如:java.version、java.vendor 和 os.name等;
6) 参数解析和记录系统虚拟机的创建时间等;
7) 在解析args参数后调用os模块的init_2()函数对内存、栈、线程等与os模块密切相关的部分进行初始化;
8) 配置垃圾收集器的输出流模块;
9) 如果用到agent库(hprof、 jdi)的话,则初始化并启动;
10) 初始化全局线程队列;
11) 初始化TLS模块;
12) 调用vm_init_globals()函数初始化全局数据结构,包括:事件日志(Event Log)、os同步原语、性能统计数据内存(perfMemory),以及内存分配器(chunkPool)等;
13) 创建Java主线程;
14) 初始化启动类加载器(Bootstrap ClassLoader)、CodeCache、解释器、JIT编译器、JNI、系统词典(System Dictionadry)等;
15) 将之前创建的java主线程合并到线程队列中;
16) 创建VM Thread;
17) 初始化java API中的一些基础类
18) 启动Signal Dispatcher线程
19) 初始化JIT编译器,并启动HotSpot编译代理线程
20) 启动HotSpot中的一些辅助线程。
剖析HotSpot的初始化过程相关推荐
- 操作系统学习:进程、线程与Linux0.12初始化过程概述
本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 ps:基于x86硬件的pc系统 进程 进程是一种控制流集合,集合中至少包含一条 ...
- [Spring 深度解析]第7章 IoC容器的初始化过程
7. IoC容器的初始化过程 简单来说,IoC容器的初始化是由前面介绍的refresh()方法来启动的,这个方法标志着IoC容器的正式启动.具体来说,这个启动包括BeanDefinition的Re ...
- idea中生成spring的 xml配置文件_【132期】面试再被问到Spring容器IOC初始化过程,就拿这篇文章砸他~...
点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...
- java的连接 初始化_java类从加载、连接到初始化过程详解
Java代码在编译后会转化成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化成汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令. 类加载 ...
- 【132期】面试再被问到Spring容器IOC初始化过程,就拿这篇文章砸他~
程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 14 分钟. 作者:拥抱心中的梦想 juejin.im/post/5ab30714f265da237b21fbcc 一.老规矩 ...
- MFC六大关键技术之初始化过程
MFC六大关键技术之初始化过程 我并不认为MFC减轻了程序员们的负担,MFC出现的目的虽然似乎是为了让程序员不用懂得太多就可以进行视窗编程,但本人在MFC里徘徊了很久很久(因为那时没有书本详细介绍MF ...
- Spring容器IOC初始化过程—今天终于进行总结了
https://www.colabug.com/2539499.html 作为一个经常使用Spring的后端程序员,小编很早就想彻底弄懂整个Spring框架了!但它整体是非常大的,所有继承图非常复杂, ...
- hadoop作业初始化过程详解(源码分析第三篇)
(一)概述 我们在上一篇blog已经详细的分析了一个作业从用户输入提交命令到到达JobTracker之前的各个过程.在作业到达JobTracker之后初始化之前,JobTracker会通过submit ...
- 超详细解读ORB-SLAM3 单目初始化过程(上篇)
学习ORB-SLAM3单目视觉SLAM中,发现有很多知识点需要展开和深入,同时又需要对系统有整体的认知,为了强化记忆,记录该系列笔记,为自己图方便,也希望对大家有所启发. 因为知识有限,因此先记录初始 ...
- nginx的启动初始化过程(一)
nginx的启动初始化在src/core/nginx.c的main函数中完成,也是整个nginx的入口.nginx的初始化主要围绕一个类型为ngx_cycle_t的全局变量ngx_cycle展开. m ...
最新文章
- JAVA笔记13__创建线程/线程休眠/等待线程终止/线程中断/守护线程
- Netty 系列一(核心组件和实例).
- springboot 获取application参数_LOOK ! SpringBoot的外部化配置最全解析
- 最美四门轿跑车斯柯达Coupe面世,CC也害怕。
- 股市红涨绿跌色系定义真的是中国特色吗?
- 一群阿里人如何用 10 年自研洛神云网络平台?技术架构演进全揭秘!
- 怎么样递增的注册成对的点云
- jquery如何获取第一个或最后一个子元素?
- 二、MyBatis系列:全局配置文件
- RabbitMQ基本管理(下)
- linux 用户管理 指令,Linux 用户管理常用命令
- poj 2828 线段树
- cdr转换成html格式,如何将CDR高版本转换成低版本?CDRX7文件转换成X4教程
- word背景图片设置a4纸大小教程
- 29HTML5期末大作业:在线电影网站设计——电影从你的全世界路过(4页) HTML+CSS+JavaScript 大学生电影网页制作教程 学生HTML电影网页设计作业成品网页制作代码 学生影视
- 使用vue-cli脚手架初始化Vue项目下的项目结构
- js的event loop/js内存泄漏
- Vue3.x 深度选择器(样式穿刺)>>> 和 /deep/ 和 ::v-deep 被弃用desprecated
- 函数对象,嵌套,空间与作用域
- 【Python】实现图片切成patch,以及有间隙的拼接代码
热门文章
- IE浏览器提示对象不支持“append”属性或方法
- 编程之美——题目2 : 回文字符序列
- CSS 块状元素和内联元素
- C++RAII惯用法:C++资源管理的利器
- C# 替换string字符串指定位置的字符
- 首字母变大写 --输入一个英文句子,将每个单词的第一个字母改成大写字母。
- 配置IP、网络问题排查
- 【C#小知识】C#中一些易混淆概念总结(八)---------解析接口
- 关于Sliverlight的一些问题
- java单核多线程与多核多线程_多线程的程序在多核CPU与单核CPU运行效率有何不同 | 学步园...