《HotSpot实战》—— 第 2 章 启动

第 2 章 启动

“物有本末,事有终始。知其先后,则近道矣。”

—《大学》

本章内容

  • HotSpot内核模块
  • 启动器Launcher和启动过程
  • JVM初始化过程
  • 全局模块初始化

本章是HotSpot内核的入门导读。首先介绍阅读源代码的方式,接下来讲解了HotSpot内核模块组成和功能框架,最后重点讲解了JVM的启动和初始化过程。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-08-03 13:35:18

《HotSpot实战》—— 第 2 章 启动的相关文章

《HotSpot实战》—— 2.2 启动

2.2 启动 Launcher(启动器),是用来启动JVM和应用程序的工具.在这一节中,我们将看到HotSpot中提供了两种Launcher类型,分别是通用启动器和调试版启动器. 2.2.1 Launcher 通用启动器(Generic Launcher)是指我们比较熟悉的JDK命令程序:java(含javaw).java是由JDK自带的启动Java应用程序的工具.为启动一个Java应用程序,java将准备一个Java运行时环境(即JRE).加载指定的类并调用它的main方法.类加载的前提条件是

《HotSpot实战》—— 第 1 章 初识HotSpo

第 1 章 初识HotSpo "知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得." -<大学> 本章内容 VM与HotSpot VM 开源项目OpenJDK与HotSpot项目 Java语言特性的发展,以及JCP和JSR的推动作用 Coin项目为Java 7贡献的新特性 GDB调试工具的基本使用方式 HotSpot工程的编译与调试方法 对于Java程序员来说,启动一个应用服务器是再平常不过的工作了.不知读者是否留意过,在启动应用服务器时,控制台可能会有关于Ho

《HotSpot实战》—— 1.3 实战:在HotSpot内调试HelloWorld

1.3 实战:在HotSpot内调试HelloWorld 本节讲解的是Java入门程序HelloWorld在HotSpot上的执行过程.我们通过一个普通Java程序的运行过程,能够以点带面地讲解到涉及HotSpot内部实现的基础概念. 虽然是调试简单的HelloWorld程序,但在这个过程中会涉及HotSpot的基本数据结构以及环境准备等内容.理解这些,一方面使读者对HotSpot项目有个感性认识,其实调试HotSpot没有想象的那么困难,这利于我们增强驾驭HotSpot的自信心:另一方面,让我

《HotSpot实战》—— 2.1 HotSpot内核

2.1 HotSpot内核 在引入HotSpot内核模块之前,我们有必要掌握一些阅读源代码的技巧. 2.1.1 如何阅读源代码 我们知道,HotSpot项目主要是由C++语言开发的,对于Java程序员来说,直接阅读这部分源代码可能会有些吃力.因此,我们有必要先阐释一些语言上的差异,扫清这些学习障碍. 1.宏 实际上,Java语言在语法上与C和C++是颇为相似的.除了一些在Java中没有提供的语法和特性,大多数C/C++代码还是很容易被Java程序员理解的.在这里,我们首先对在C和C++中大量使用

《HotSpot实战》—— 1.2 动手编译虚拟机

1.2 动手编译虚拟机 源码面前,了无秘密.对于OpenJDK和HotSpot项目来说也是如此.因此,研究虚拟机实现机制的最佳途径就是阅读和调试源代码.我们希望能够动手编译一个完整的OpenJDK(含HotSpot)项目,或者仅编译HotSpot,这样就可以对虚拟机展开调试了. 虽然官方也支持在Windows操作系统下构建编译环境.但是经验表明,选择在Linux环境下搭建编译环境,可以避免不少弯路.理由有以下两点: Windows上为了得到完整的编译环境,需要借助Cygwin等虚拟环境,而在Li

《HotSpot实战》—— 2.4 小结

2.4 小结 本章首先介绍了HotSpot内核的结构,并引导读者掌握一些阅读源代码的技巧.在内核模块中,介绍了Prims.Service和Runtime模块,它们为HotSpot提供外部接口,并为内核其他模块提供部分公共功能. 启动过程是了解HoSpot内部实现的入口.HotSpot提供了两种启动器,一个是产品级的,另一个则是调试级的.后者对于我们调试和学习HotSpot起到重要的作用.在整个启动过程中,create_vm()函数是其精华部分,它完成了JVM系统绝大多数模块的初始化工作. 为了帮

《HotSpot实战》—— 1.1 JDK概述

1.1 JDK概述 Java是一门不断发展和壮大的语言,随着理论和应用的飞速发展,它不断地吸收有益营养,许多优良特性也在JDK的各个版本中逐渐添加进来. JDK在一开始并不是开源的.随着开源运动的蓬勃发展,Sun公司在2006年的JavaOne大会上声称将对Java开放源代码,开源的Java平台开发主要集中在OpenJDK项目上.Sun公司于2009年4月15日正式发布OpenJDK.Java 7则是Java开源后发布的第一个正式版本. 任何组织和个人都可以为Java的发展做出贡献,如果你愿意为

腾讯Android自动化测试实战第2章

第2章 自动化测试框架及应用领域综述 近几年,随着移动互联网的快速发展,智能终端的App应用越来越广,Android测试技术也备受重视,新的终端自动化测试框架层出不穷,本章笔者就自动化测试的入门知识及其应用做一个浅显的梳理与总结,与读者一同探讨移动终端自动化测试思路和方案.同时,本书主要也是围绕本章节提到的基础框架及其应用场景进行实战分析与演练,以亲身体验总结出实际项目经验,给准备实施或正在实施自动化测试的读者提供一些帮助和建议. 自动化测试在软件测试的各大沙龙.行业峰会以及培训课程中都是一个热

《微软System Center 2012 R2私有云部署实战》——第二章 微软私有云选型2.1 服务器选型

第二章 微软私有云选型 私有云和虚拟化是相辅相成的,拥有虚拟化的私有云才能做到更加灵活.在部署微软私有云之前,我们要做的第一件事情是对运行这套私有云的底层硬件和软件设备进行选型.面对市面上如此众多的硬件设备,我们应该遵循何种标准来选择,也是有多重考量的.4核.8核,还是16核?2颗.4颗又有什么门道?存储是用iSCSI还是光纤或者直连,网卡用吉比特(千兆)还是10吉比特(万兆)?操作系统是Windows Server 2008 R2 SP1还是Windows Server 2012 R2?选择理