• 全新正版 深入剖析Java虚拟机 源码剖析与实例详解(基础卷) 9787111689898
  • 全新正版 深入剖析Java虚拟机 源码剖析与实例详解(基础卷) 9787111689898
  • 全新正版 深入剖析Java虚拟机 源码剖析与实例详解(基础卷) 9787111689898
  • 全新正版 深入剖析Java虚拟机 源码剖析与实例详解(基础卷) 9787111689898
  • 全新正版 深入剖析Java虚拟机 源码剖析与实例详解(基础卷) 9787111689898
  • 全新正版 深入剖析Java虚拟机 源码剖析与实例详解(基础卷) 9787111689898
21年品牌 40万+商家 超1.5亿件商品

全新正版 深入剖析Java虚拟机 源码剖析与实例详解(基础卷) 9787111689898

正版图书,可开发票,请放心购买。

111.75 7.5折 149 全新

库存5件

广东广州
认证卖家担保交易快速发货售后保障

作者马智

出版社机械工业出版社

ISBN9787111689898

出版时间2021-08

装帧平装

开本16开

定价149元

货号29291057

上书时间2024-10-26

哲仁书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
前言

为什么要写这本书

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。

读者反馈

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

致谢

《深入剖析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&

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP