fbpx

[email protected]

购物车

 查看订单

  • 我的帐户
东东购 | EasternEast
  • 中文书店
    • 畅销排行榜
      • 小说 畅销榜
      • 童书 畅销榜
      • 外语畅销榜
      • 管理畅销榜
      • 法律畅销榜
      • 青春文学畅销榜
    • 热门分类
      • 社会小说
      • 成功/励志 畅销榜
      • 人物传记
      • 大陆原创
      • 绘本童书
      • 影视小说
    • 文学推荐
      • 文集
      • 戏剧
      • 纪实文学
      • 名家作品
      • 民间文学
      • 中国现当代随笔
    • 新书热卖榜
      • 小说 新书热卖榜
      • 青春文学 新书热卖榜
      • 童书 新书热卖榜
      • 管理 新书热卖榜
      • 成功/励志 新书热卖榜
      • 艺术 新书热卖榜
  • 精选分类
    • 小说
    • 保健养生
    • 烹饪/美食
    • 风水/占卜
    • 青春文学
    • 童书
    • 管理
    • 成功/励志
    • 文学
    • 哲学/宗教
    • 传记
    • 投资理财
    • 亲子家教
    • 动漫/幽默
    • 法律 Legal
    • 经济 Economics
    • 所有分类
  • 关于东东
  • 帮我找书
搜索
首页计算机/网络程序设计深入剖析Java虚拟机:源码剖析与实例详解(基础卷)

深入剖析Java虚拟机:源码剖析与实例详解(基础卷)

【Java大神级程序员修炼之道!PerfMa CEO寒泉子、华为JDK负责人海纳、阿里云JVM工程师杨易力荐!资深程序员全面、深入剖析Java虚拟机HotSpot源码实现,详解类的生命周期和垃圾收集器

作者:马智 出版社:机械工业出版社 出版时间:2021年08月 

ISBN: 9787111689898
年中特卖用“SALE15”折扣卷全场书籍85折!可与三本88折,六本78折的优惠叠加计算!全球包邮!
trust badge

EUR €63.99

类别: 计算机/网络 新书热卖榜, 程序设计 SKU:6174947df0f22475083a7502 库存: 有现货
  • 描述
  • 评论( 0 )

描述

开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111689898

产品特色

编辑推荐

详解Java虚拟机的类的生命周期和垃圾收集器等模块的工作原理;

结合大量实例,全面、细致、深入地介绍HotSpot VM的运行原理;

详细介绍如何将HotSpot VM的相关理论知识应用到开发和调优实践中;

帮助读者深入理解HotSpot VM如何支持Java语言的诸多特性;

帮助读者应对大型互联网公司招聘时对虚拟机相关知识的深度考查。

相比已经出版的Java虚拟机类图书,本书有如下几点不同:

(1)本书专注于工业级虚拟机HotSpot的具体源码实现,而非详细解释Java虚拟机的规范。

(2)本书对HotSpot VM的重点实现代码做了深度剖析,通过理论与代码剖析相结合的方式进行讲解,而非通篇解释理论。

(3)本书通过HotSpot VM的源码实现展现虚拟机的底层理论,内容比较复杂,需要读者考虑的问题较多,阅读难度也较高,而非简单介绍。

(4)本书只专注于HotSpot VM的源码实现,知识点精而深,而非大而全。

即便您已经阅读过其他Java虚拟机类图书,通过阅读本书,可以更加全面、深入地理解Java虚拟机底层运行原理,从而更加游刃有余地应对求职和实际开发。

 

内容简介

《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》以流行的工业级Java虚拟机HotSpot为基础,详细剖析其基础功能模块的源码,力求讲清楚每个重要技术的原理和实现细节,同时结合大量实例和图示帮助读者更好地理解所讲内容。本书没有介绍Java运行时的栈结构,以及解释执行与编译执行等知识点,这些内容在本书的姊妹篇《深入剖析Java虚拟机:源码剖析与实例详解(运行时卷)》一书中进行详细的介绍。

《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》共13章,章节顺序基本上是按照类的生命周期进行编排的。本书涵盖的主要内容有HotSpot VM简介、对象的二分模型、类的加载机制、类与常量池的解析、字段的解析、方法的解析、类的连接与初始化、运行时数据区、类对象的创建和初始化、Serial垃圾收集器、Serial Old垃圾收集器以及Java引用类型的实现原理等。

《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》主要面向想要深入学习和研究Java语言运行原理的人,尤其是正在从事或将来想要从事虚拟机开发的编程人员。另外,本书还非常适合Java求职人员阅读,可以帮助他们系统掌握虚拟机的相关知识,从而游刃有余地应对相关公司招聘时的考查。

作者简介

马智  有多年的Java开发经验,先后在掌游天下和集团任软件研发工程师。对编程语言的底层实现有浓厚的兴趣,深入研究过OpenJDK的源码实现。著有《深入解析Java编译器:源码剖析与实例详解》一书,颇受读者好评。

目  录

前言

第1章  认识HotSpot VM  1

1.1  初识JVM     1

1.2  编译OpenJDK 8   3

1.2.1  准备编译环境   3

1.2.2  下载源代码       3

1.2.3  编译源代码       4

1.2.4  通过GDB调试源代码     6

1.2.5  通过Eclipse调试源代码  7

1.3  HotSpot VM源代码结构     9

1.4  启动HotSpot VM 11

第2章  二分模型       17

2.1  Java类的表示——Klass      17

2.1.1  Klass类      18

2.1.2  InstanceKlass类 26

2.1.3  InstanceKlass类的子类     29

2.1.4  ArrayKlass类    34

2.1.5  TypeArrayKlass类     35

2.1.6  ObjArrayKlass类      40

2.2  Java对象的表示——oop    46

2.2.1  oopDesc类 46

2.2.2  markOopDesc类       48

2.2.3  instanceOopDesc类   49

2.2.4  arrayOopDesc类       51

2.2.5  arrayOopDesc类的子类    51

2.3  操作句柄——Handle   54

2.3.1  句柄Handle的定义与创建      55

2.3.2  句柄Handle的释放  57

第3章  类的加载       62

3.1  类加载器      62

3.1.1  引导类加载器/启动类加载器  62

3.1.2  扩展类加载器   64

3.1.3  应用类加载器/系统类加载器  65

3.1.4  构造类加载器实例   65

3.1.5  类的双亲委派机制   68

3.2  预加载类      83

3.2.1  核心类的预加载       83

3.2.2  数组的预加载   87

3.3  Java主类的装载   88

3.4  触发类的装载      94

第4章  类与常量池的解析       97

4.1  类的解析      97

4.1.1  Class文件格式  97

4.1.2  ClassFileParser类简介      98

4.1.3  ClassFileStream类简介    99

4.1.4  解析类文件       102

4.1.5  保存解析结果   109

4.2  常量池的解析      116

4.2.1  ConstantPool类 117

4.2.2  创建ConstantPool实例    117

4.2.3  解析常量池项   122

第5章  字段的解析    136

5.1  字段的解析基础   136

5.1.1  FieldAllocationCount与FieldAllocationType类     136

5.1.2  为字段分配内存空间       139

5.1.3  获取字段信息   141

5.2  伪共享   145

5.3  字段的内存布局   148

5.3.1  静态字段内存块的偏移量       148

5.3.2  非静态字段内存块的偏移量   149

5.3.3  计算每个字段的偏移量   154

5.3.4  @Contended字段的偏移量     156

5.4  字段的注入   158

5.5  对象类型字段的遍历   165

第6章  方法的解析    174

6.1  Method与ConstMethod类  174

6.1.1  Method类  174

6.1.2  ConstMethod类 177

6.2  调用parse_methods()函数解析方法   178

6.2.1  创建Method与ConstMethod实例  182

6.2.2  保存方法解析信息   187

6.3  klassVtable虚函数表   187

6.3.1  klassVtable类    188

6.3.2  计算vtable的大小    189

6.3.3  vtable的初始化 200

6.4  klassItable虚函数表     209

6.4.1  klassItable类     209

6.4.2  计算itable的大小     211

6.4.3  itable的初始化  213

第7章  类的连接与初始化       220

7.1  类的连接      220

7.2  类的验证      224

7.3  类的重写      227

7.3.1  生成常量池缓存项索引   228

7.3.2  重写字节码指令       234

7.3.3  创建常量池缓存       238

7.4  方法的连接   244

7.5  类的初始化   246

第8章  运行时数据区       250

8.1  HotSpot VM的内存划分     250

8.2  元空间   252

8.2.1  元空间的数据结构   253

8.2.2  内存块的管理   256

8.2.3  内存分配   258

8.2.4  内存回收   262

8.3  堆空间   267

8.3.1  CollectedHeap、Generation与Space类  268

8.3.2  Java堆的回收策略   277

8.3.3  Java堆的初始化       288

第9章  类对象的创建       299

9.1  对象的创建   299

9.2  对象的内存分配   311

9.2.1  在TLAB中分配内存       311

9.2.2  在堆中分配内存       322

9.2.3  添加对象偏移表记录       335

第10章  垃圾回收      344

10.1  分代垃圾回收    344

10.1.1  Serial和Serial Old垃圾收集器     344

10.1.2  复制算法和“标记-整理”算法    346

10.1.3  卡表  352

10.2  垃圾回收线程    358

10.3  安全点 370

10.3.1  关于安全点     370

10.3.2  阻塞线程和状态切换线程进入安全点  376

10.3.3  解释线程进入安全点     379

10.3.4  编译线程进入安全点     383

10.3.5  执行本地代码线程进入安全点     385

第11章  Serial垃圾收集器       388

11.1  触发YGC    388

11.2  年轻代的垃圾回收     389

11.3  标记普通的根对象     403

11.4  标记老年代引用的对象     415

11.5  递归标记活跃对象并复制 422

第12章  Serial Old垃圾收集器 428

12.1  触发FGC    428

12.2  标记活跃对象    431

12.3  计算活跃对象的地址 440

12.4  更新对象的引用地址 451

12.5  移动所有活跃对象    457

12.6  更新偏移表与卡表    460

第13章  Java引用类型      463

13.1  Java引用类型简介    463

13.2  查找引用类型    469

13.3  软引用 481

13.4  弱引用 490

13.5  虚引用 492

13.6  终引用    495

……

前  言

为什么要写这本书

Java是一门流行多年的高级编程语言,与其相关的就业岗位很多,但是近几年却出现了用人单位招不到合适的人,而大量Java程序员找不到工作的尴尬局面。究其根本原因是岗位对Java开发技术的要求高,不但要会应用,而且更要懂其内部的运行原理。对于想要深入研究Java技术的从业人员来说,虚拟机是绕不开的话题。目前国内市场上还鲜见一本全面、细致、深入剖析Java虚拟机源码的书籍,这正是《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》要填补的市场空白。

《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》围绕Java流行的HotSpot VM进行源码的深度剖析,主要面向那些想要深入学习和研究Java语言运行原理的人。《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》对那些正在从事或将来想要从事虚拟机开发的编程人员也有极大的帮助。另外,对于Java求职人员来说,在参加大型互联网公司的面试时,应对招聘企业对虚拟机相关知识的深度考查已成为不可回避的问题,《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》正好能提高他们对虚拟机理解的广度和深度,可谓雪中送炭。

需要说明的是,HotSpot VM有上百万行的代码,这些代码逻辑严密,细节众多,要想讲解清楚,需要较多的篇幅。为了让读者能够更好地理解其中的要点,笔者决定用两《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》的篇幅来介绍HotSpot VM的相关知识。《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》为《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》,后续还会推出《深入剖析Java虚拟机:源码剖析与实例详解(运行时卷)》,敬请各位读者关注。笔者会在这两《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》中对HoSpot VM的重点源代码展开细致的讲解,同时还会结合大量实例和图示,帮助读者更好地理解所学知识。

本书特色

1.内容丰富,讲解详细

《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》对对象的二分模型、类的加载机制、类与常量池、方法与变量、对象的创建和初始化、Serial和Serial Old垃圾收集器、Java引用类型等内容进行详细解读,帮读者真正掌握HotSpot VM运行的每个细节。

2.原理分析与实例并重

《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》对HotSpot VM的各个基础功能模块的重点源代码进行了详细分析,并结合大量实例和图示帮助读者更好地理解所学内容。

3.分析工业级虚拟机的源码实现

《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》分析的是一个工业级的Java虚拟机HotSpot,它是大部分Java开发人员运行Java项目时使用的虚拟机。对于Java从业人员来说,深入理解HotSpot VM的运行原理,可以帮助他们写出更加高效的Java代码,同时也能更好地排查Java性能瓶颈等一系列问题。

本书内容

《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》深入剖析HotSpot VM的源代码实现,每一章都会对重点源代码的实现进行解读。下面简单介绍一下《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》中各章的内容。

第1章主要介绍本地编译HotSpot VM的具体过程,以及如何使用图形化工具对HotSpot VM的源代码进行调试。

第2章介绍类的二分模型,其中表示Java类的Klass模型与表示Java对象的oop模型是HotSpot VM的基础部分。

第3章介绍类的加载,重点介绍核心类和数组类的加载过程,以及类加载的双亲委派机制。

第4章对类及常量池进行解析,按照Class文件的格式从Class文件中解析出存储的类及常量池信息,然后映射成HotSpot VM内部的表示形式。

第5章对字段进行解析,解析出Class文件中保存的字段信息后映射为HotSpot VM内部的表示形式,同时还要对实例字段进行布局。

第6章对方法进行解析,解析出Class文件中保存的方法信息后映射为HotSpot VM内部的表示形式,并初始化klassVtable与klassItable以更好地支持方法的运行。

第7章介绍类的连接和初始化过程。

第8章介绍HotSpot VM的内存划分,重点介绍元空间和堆空间,如元空间的数据结构及其内存分配和释放,以及堆的初始化和回收策略等。

第9章介绍Java对象的创建过程,重点介绍对象内存分配的具体过程。

第10章介绍垃圾回收的基础知识,包括垃圾回收算法、支持分代垃圾回收的卡表和偏移表、支持垃圾回收的安全点。

第11章介绍用于回收年轻代的Serial垃圾收集器。

第12章介绍用于回收老年代的Serial Old垃圾收集器。

第13章介绍Java引用类型,包括引用类型的查找及不同类型引用对象的回收处理逻辑。

本书读者对象

阅读《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》需要读者有一定的编程经验,尤其要对Java语言有一定的了解。具体而言,《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》主要适合以下读者阅读:

  • 想深入学习Java语言特性的Java从业人员;
  • 想全面、深入理解HotSpot VM原理的人员;
  • 从事虚拟机开发的人员;
  • 对大型工程的源代码感兴趣的人员,尤其是对C 语言工程实践感兴趣的人员。

本书阅读建议

《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》的内容循序渐进,建议读者按照章节的排列顺序进行阅读,同时在阅读每一章的过程中对书中给出的实例进行实践,以便更好地理解所讲的内容。

HotSpot VM有上百万行的源代码,并且代码的逻辑密度非常大。读者阅读相关的源代码时,不要过分纠结于每个实现细节,否则会陷入细节的“汪洋大海”中。《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》对HotSpot VM的重点源代码进行了解读,读者可以参考书中对这些重点源代码的讲解进行学习和调试。

另外,要深入理解Java的运行原理,需要读者对Java编译器有所了解。想要全面、深入地学习Java编译器的相关知识,推荐读者阅读笔者的拙作《深入解析Java编译器:源码剖析与实例详解》一书。该书出版后得到了广大Java技术爱好者的好评,是深入学习Java主流编译器Javac运行原理的理想选择。

本书配套资源

《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》涉及的HotSpot VM源代码已经开源,读者可以通过多种途径获取。笔者推荐的下载网址为https://download.java.net/openjdk/jdk8。

读者反馈

由于笔者水平所限,书中可能还存在一些疏漏,敬请读者指正,笔者会及时进行调整和修改。联系邮箱[email protected]。

致谢

《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》的写作得到很多朋友和同事的帮助与支持,笔者在此表示由衷的感谢!

感谢欧振旭编辑在《深入剖析Java虚拟机:源码剖析与实例详解(基础卷)》出版过程中给予笔者的大力支持与帮助!

后感谢家人对我的理解与支持,在我遇到挫折和问题时,家人坚定地支持着我。爱你们!

……

媒体评论

本书对Java虚拟机HotSpot的源码做了全面、细致的剖析,强烈推荐Java虚拟机知识薄弱的开发者仔细研读。这将是一个好的开端,因为它能带领你快速进入虚拟机的世界,让你系统了解虚拟机复杂的工作原理及其相关技术细节。

——PerfMa CEO  寒泉子

 

本书以通俗易懂的语言详细介绍Java虚拟机HotSpot的源码实现,可以帮助读者系统掌握类的生命周期和垃圾回收等基本组件的相关知识。对于想全面了解HotSpot虚拟机工作原理和源码实现的广大Java程序员来说,本书可谓雪中送炭,值得细读。

——Huawei JDK负责人/华为编译器高级技术专家  海纳

 

本书着重于Java虚拟机HotSpot的源码分析。开篇先从源码的构建开始讲解,然后逐步深入介绍HotSpot的类的加载机制、对象的二分模型和Serial垃圾收集器等相关知识。本书内容丰富,讲解循序渐进,除了翔实的源码剖析外,还结合大量图示和实例帮助读者深入理解相关知识,对于那些对Java虚拟机底层技术感兴趣的开发人员有较高的参考价值。

——阿里云JVM研发工程师/OpenJDK Committer  杨易

抢先评论了 “深入剖析Java虚拟机:源码剖析与实例详解(基础卷)” 取消回复

评论

还没有评论。

相关产品

阅读更多
缺货

C程序设计语言 第2版·

EUR €24.99
阅读更多
缺货

C Primer Plus 第6版 中文版 C语言入门经典教程

EUR €53.99
评分 5.00 / 5
加入购物车

Python核心编程 第3版

EUR €48.99
评分 5.00 / 5
加入购物车

21世纪C语言(影印版)

EUR €37.99

东东购的宗旨是服务喜爱阅读中文书籍的海外人民,提供一个完善的购书平台,让国人不论何时何地都能沉浸在书香之中,读着熟悉的中文字,回忆着家乡的味道。


安全加密结账 安心网络购物 支持Paypal付款

常见问题

  • 货物配送
  • 退换货政策
  • 隐私政策
  • 联盟营销

客户服务

  • 联系东东
  • 关于东东
  • 帮我找书
  • 货物追踪
  • 会员登入

订阅最新的优惠讯息和书籍资讯

选择币别

EUR
USD
CAD
AUD
NZD
NOK
GBP
CHF
SEK
CNY
UAH
ILS
SAR
MXN
KRW
MYR
SGD
HUF
TRY
JPY
HKD
TWD
facebookinstagram
©2020 东东购 EasternEast.com

限时特卖:用“SALE15”优惠券全场书籍85折!可与三本88折,六本78折的优惠叠加计算。 忽略