《HotSpot实战》深入浅出地讲解了HotSpot虚拟机的工作原理,将隐藏在它内部的本质内容逐一呈现在读者面前,包括OpenJDK与HotSpot项目、编译和调试HotSpot的方法、HotSpot内核结构、Launcher、OOP-Klass对象表示系统、链接、运行时数据区、方法区、常量池和常量池Cache、Perf Data、Crash分析方法、转储分析方法、垃圾收集器的设计演进、CMS和G1收集器、栈、JVM对硬件寄存器的利用、栈顶缓存技术、解释器、字节码表、转发表、Stubs、Code Cache、Code生成器、JIT编译器、C1编译器、编译原理、JVM指令集实现、函数的分发机制、VTABLE和ITABLE、异常表、虚拟机监控工具(如jinfo、jstack、jhat、jmap等)的实现原理和开发方法、Attach机制、基于GUI的JVM分析工具(如MAT、VisualVM)等内容。
除了HotSpot技术,《HotSpot实战》还对方法论进行了探讨。在各个章节的讲解中,都会有一些与系统运行机制相关的实战或练习,供读者练手。通过这些实战练习,不仅有助于读者加深对知识或原理的理解,更为重要的是,它还可以培养读者独立探索的思维方式,这有助于读者把知识融会贯通并灵活应用到实际项目中。
《HotSpot实战》适合于已具有一定Java编程基础的读者,以及在Java或基于JVM的编程语言平台下进行各类软件开发的开发人员、测试人员和运维人员。对于JVM和编程语言爱好者来说,《HotSpot实战》也具有一定的学习参考价值。
第1章 初识HotSpot 1
1.1 JDK概述 2
1.1.1 JCP与JSR 3
1.1.2 JDK的发展历程 4
1.1.3 Java 7的语法变化 7
1.2 动手编译虚拟机 13
1.2.1 源代码下载 13
1.2.2 HotSpot源代码结构 13
1.2.3 搭建编译环境 15
1.2.4 编译目标 16
1.2.5 编译过程 17
1.2.6 编译常见问题 19
1.3 实战:在HotSpot内调试HelloWorld 20
1.3.1 认识GDB 21
1.3.2 准备调试脚本 22
1.4 小结 26
第2章 启动 28
2.1 HotSpot内核 28
2.1.1 如何阅读源代码 28
2.1.2 HotSpot内核框架 36
2.1.3 Prims 37
2.1.4 Services 39
2.1.5 Runtime 43
2.2 启动 46
2.2.1 Launcher 46
2.2.2 虚拟机生命周期 48
2.2.3 入口:main函数 50
2.2.4 主线程 51
2.2.5 InitializeJVM函数 53
2.2.6 JNI_CreateJavaVM函数 55
2.2.7 调用Java主方法 56
2.2.8 JVM退出路径 56
2.3 系统初始化 57
2.3.1 配置OS模块 58
2.3.2 配置系统属性 60
2.3.3 加载系统库 61
2.3.4 启动线程 62
2.3.5 vm_init_globals函数:初始化全局数据结构 65
2.3.6 init_globals函数:初始化全局模块 65
2.4 小结 69
第3章 类与对象 70
3.1 对象表示机制 71
3.1.1 OOP-Klass二分模型 71
3.1.2 Oops模块 71
3.1.3 OOP框架与对象访问机制 73
3.1.4 Klass与instanceKlass 79
3.1.5 实战:用HSDB调试HotSpot 82
3.2 类的状态转换 87
3.2.1 入口:Class文件 87
3.2.2 类的状态 92
3.2.3 加载 96
3.2.4 链接 101
3.2.5 初始化 104
3.2.6 实战:类的“族谱” 107
3.2.7 实战:系统字典 111
3.3 创建对象 113
3.3.1 实例对象的创建流程 114
3.3.2 实战:探测JVM内部对象 116
3.4 小结 119
第4章 运行时数据区 120
4.1 堆 121
4.1.1 Java的自动内存管理 121
4.1.2 堆的管理 122
4.2 线程私有区域 125
4.2.1 PC 125
4.2.2 JVM栈 126
4.3 方法区 126
4.3.1 纽带作用 127
4.3.2 常量池 130
4.3.3 常量池缓存:ConstantPoolCache 133
4.3.4 方法的表示:methodOop 134
4.3.5 方法的解析:将符号引用转换成直接引用 138
4.3.6 代码放在哪里:ConstMethodOop 141
4.3.7 实战:探测运行时常量池 142
4.4 性能监控数据区:Perf Data 147
4.4.1 描述这段空间:PerfMemory 147
4.4.2 查看 148
4.4.3 生产 150
4.5 转储 151
4.5.1 用VisualVM进行转储分析 151
4.5.2 JVM Crash 153
4.6 小结 158
第5章 垃圾收集 159
5.1 堆与GC 160
5.1.1 垃圾收集 160
5.1.2 分代收集 162
5.1.3 快速分配 165
5.1.4 栈上分配和逸出分析 167
5.1.5 GC公共模块 167
5.2 垃圾收集器 170
5.2.1 设计演进 170
5.2.2 CMS收集器 175
5.2.3 G1收集器 180
5.3 实战:性能分析方法 184
5.3.1 获取GC日志 184
5.3.2 GC监控信息 187
5.3.3 内存分析工具 189
5.3.4 选择合适的收集器与GC性能评估 190
5.3.5 不要忽略JVM Crash日志 195
5.4 小结 196
第6章 栈 197
6.1 硬件背景:了解真实机器 198
6.1.1 程序是如何运行的 198
6.1.2 x86与栈帧 199
6.1.3 ARM对Java硬件级加速:Jazelle技术 202
6.2 Java栈 203
6.2.1 寄存器式指令集与栈式指令集 203
6.2.2 HotSpot中的栈 204
6.2.3 栈帧 207
6.2.4 充分利用寄存器资源 210
6.2.5 虚拟机如何调用Java函数 212
6.2.6 优化:栈顶缓存 221
6.2.7 实战:操作数栈 223
6.3 小结 228
第7章 解释器和即时编译器 229
7.1 概述 230
7.2 解释器如何工作 231
7.2.1 Interpreter模块 232
7.2.2 Code模块 234
7.2.3 字节码表 235
7.2.4 Code Cache 236
7.2.5 InterpreterCodelet与Stub队列 239
7.2.6 Code生成器 241
7.2.7 模板表与转发表 244
7.2.8 实战:InterpreterCodelet 247
7.3 即时编译器 250
7.3.1 概述 250
7.3.2 编译器模块 251
7.3.3 编译器的基本结构 252
7.3.4 实战:编译原理实践,了解编译中间环节 255
7.4 小结 267
第8章 指令集 268
8.1 再说栈式指令集 268
8.2 数据传送 270
8.2.1 局部变量、常量池和操作数栈之间的数据传送 270
8.2.2 数据传送指令 272
8.2.3 实战:数组的越界检查 277
8.3 类型转换 279
8.4 对象的创建和操作 281
8.5 程序流程控制 282
8.5.1 控制转移指令 282
8.5.2 条件转移 283
8.5.3 无条件转移 284
8.5.4 复合条件转移 285
8.5.5 实战:switch语句如何使用String 287
8.6 运算 290
8.6.1 加法:iadd 290
8.6.2 取负:ineg 291
8.7 函数的调用和返回 292
8.7.1 Java函数分发机制:VTABLE与ITABLE 293
8.7.2 invoke系列指令 297
8.7.3 动态分发:覆盖 299
8.7.4 静态分发:重载 302
8.8 异常 305
8.8.1 异常表 305
8.8.2 创建异常 306
8.8.3 try-catch 309
8.8.4 finally 311
8.9 小结 312
第9章 虚拟机监控工具 313
9.1 Attach机制 314
9.1.1 AttachProvider与VirtualMachine 314
9.1.2 命令的下发:execute() 317
9.1.3 命令的执行:Attach Listener守护线程 319
9.2 查看JVM进程 320
9.2.1 用jps查看Java进程 320
9.2.2 实战:定制jps,允许查看库路径 323
9.3 查看和配置JVM 326
9.3.1 用jinfo查看JVM参数配置 326
9.3.2 实战:扩展flags选项,允许查看命令行参数 330
9.4 堆内存转储工具 332
9.4.1 Heap Dump 332
9.4.2 原理 333
9.5 堆转储分析 337
9.5.1 Heap Dump分析工具:jhat 337
9.5.2 实战:MAT分析过程 340
9.6 线程转储分析 343
9.6.1 jstack 343
9.6.2 实战:如何分析资源等待 344
9.7 小结 347
3ds MAX三维效果图制作案例教程 内容简介 本书是一本面向3DS MAX效果图制作初学者的书,本书根据3ds Max 9软件和效果图制作的特点,,由优秀效果...
《自己动手制作软体机器人》内容简介:软体机器人技术是一个新兴的领域,它以新的方式接近机器人,使机器人能够在非结构化或不稳定
《从感觉开始》内容简介:陈嘉映经典学术随笔。世界在感觉里,感觉又在哪里? 真正的理解里也总有不曾完全明了的东西,清明的理解连
《MFCWindows程序设计》是对其极为经典的第1版的全面更新,书中不仅扩展了已被认为是权威的Microsoft用于WindowsAPI的功能强大的
本书是一本经典著作,由众多卓越的软件和设计专业人员的论文及访谈录组成。本书的作者从不同角度,通过大量生动的实例,说明了什
《钢琴套曲民谣四首》内容简介:本作品是作曲家刘敦南新近创作的钢琴作品,作品运用有调性的十二音创作技法,将中国民歌与当代技术
空间信息系统的集成与实现 本书特色 李德仁院士为课题主持人,由数十名教授、副教授、博士生和硕士生组成课题组,对空间信息系统的集成与实现进行了深入的理论探讨和一系...
《少年读聊斋志异·笔墨里的精灵》内容简介:《聊斋志异》是我国古典文学名著,多篇文章入选中小学语文读本或教材。本书由知名《聊
《我是90后,我是创业家》内容简介:第1本揭秘17个90后精彩创业故事。他们是:脸萌创始人郭列、北大硕士卖米粉的张天一、微博《我只
摘要/内容:随着信息技术的快速发展,信息系统也逐渐由低级到高级、由简单到复杂、由封闭孤立到开放协同地发展;具体表现为系统组
《道德经与领导力》内容简介:本书将《道德经》与实际案例相结合,通过详细阐述《道德经》的真髓来告诉高级领导者如何处世,其中包
《复杂信息系统网络安全体系建设指南》内容简介:本书介绍复杂信息系统的网络安全体系建设,共分为7章,第一章为概述;第二章为安全
《传统道德与中华人文精神》内容简介:人性、处世、处己、处人的人生观,义利、公私、理欲、德才的价值观,孝、忠、仁、义、礼、智
本书对Photoshop中最重要的通道、混合模式、图层、蒙版做了深入剖析,并列举了大量相关实例,有助于读者更深入理解和把握Photosh
《黑客攻防与网络安全从新手到高手(实战篇)》内容简介:本书在剖析用户进行黑客防御中迫切需要或想要用到的技术时,力求对其进行
《给设计师看的交互程序设计书:FlashActionScript3.0溢彩编程》内容简介:ActionScript是针对FlashPlayer运行环境的编程语言...
《国家的歧路:日本帝国毁灭之谜》内容简介:1912年,随着明治天皇去世、大正天皇登基,日本开始出现宽松的社会环境,民主主义运动
《正则表达式经典实例》讲解了基于8种常用的编程语言使用正则表达式的经典实例。书中提供了上百种可以在实战中使用的实例,以帮助
《Word/Excel/PPT 2013办公应用从入门到精通》内容简介:本书是指导初学者学习 Word/Excel/PPT 2013 的入门书籍。书中详细地介绍...
《大话存储2:存储系统架构与底层原理极限剖析》内容简介:网络存储是一个涉及计算机硬件以及网络协议/技术、操作系统以及专业软件