当前位置:首页 > Java >
《揭秘Java虚拟机:JVM设计原理与实现》电子书封面

揭秘Java虚拟机:JVM设计原理与实现

  • 发布时间:2019年04月12日 11:57:53
  • 作者:封亚飞
  • 大小:186.2 MB
  • 类别:Java虚拟机电子书
  • 格式:PDF
  • 版本:影印版
  • 评分:8.7

    揭秘Java虚拟机:JVM设计原理与实现 PDF 影印版

      给大家带来的一篇关于Java虚拟机相关的电子书资源,介绍了关于Java虚拟机、JVM、设计原理方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小186.2 MB,封亚飞编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:8.9分

      Tags:java JVM Java虚拟机 设计原理 

      内容介绍

      期盼了很久的一本书,也是毫不犹豫下了单。强烈建议Java程序员用心读一读,深刻理解JVM的工作机制才能对Java有更为深刻的理解,技术才能走的更远。

      我一直研究虚拟机方面的,这书还是值得大家看看,针对初学者来说就茫然,这书主要针对工作五年以上的高工,才能理解明白

      最近研究虚拟机相关的技术,看了深入理解java虚拟机后还不过瘾,就又买了一本,希望有所收获。

      很牛的书,应该是国内写虚拟机实现最详细的了。我大概翻了3天,感觉自己真的too young了。

      非常棒的一本书。作者从最底层的汇编开始到用C语言一步步用简单的代码示例解释了JVM的执行原理和过程,清晰明了,通俗易懂,对于程序员来说,这是最好的学习模式。后面针对JVM的内部实现和设计思路也图文并貌,达到了作者希望读者知其然也知其所以然的目的。个人认为周志明的深入理解JAVA虚拟机讲解的太过宏观和宽泛,封亚飞的这本对程序员的技术水平提高具有立干见影的效果,把这本书读懂读透,一定能成为一名优秀的JAVA程序员。

      精彩书评

      Java从1995年发布以后,已经发展成为一门流行的编程语言。业界也有无数的书介绍Java语言的方方面面。但是,这本书不仅讲解了Java虚拟机的内部实现机制,还深入分析了为什么要这么实现。每一种技术设计的背后,都有其必然性。能够知其然、并知其所以然,才能透过现象看本质,举一反三,实现技术升华。亚飞有多年的Java实践,尤其是在菜鸟网络,需要具备处理很多高并发、大型工程的架构经验,相信他在书中会有更多的视角分享给读者。——王文彬(菲青),菜鸟CTO

      作者凭借资深的C与Java技术功底以及多年对于JVM的深入研究编写的这边书,真正从虚拟机指令执行处理层面,结合JVM规范的设计原理,完整和详尽地阐述了Java虚拟机在处理类、方法和代码时的设计和实现细节。同时书中大量的代码和指令细节能够让程序员更加直接地理解相关原理。
      这是一本优秀的技术工具书,可以让阅读者更加深刻地理解虚拟机的原理和细节,值得每一位具有极客精神、追求细节的优秀程序员反复阅读和收藏。——陌铭,菜鸟平台技术部架构师

      本书是一本通过深入结合HotSpot源代码来解释Java虚拟机工作机理的书籍。概念是一切知识结构的基石。通过阅读本书,Java工程师可以了解和掌握Java虚拟机的核心概念,可以领会在工作中如何开发合理的、高效的Java应用,如何有效地解决、排查Java问题。——李三红,阿里巴巴/蚂蚁金服JVM架构师

      作为一名Java程序员,我们写过很多Java程序。但是,Java程序到底是如何运行的?如何写出更高效的Java代码……?这些问题不仅是初学者的困惑,也是很多老司机的短板。这些问题归根结底都要从JVM中去寻找答案,而国内能深入分析JVM的书并不多。亚飞撰写的本书不仅深入分析了Java虚拟机的运行机制与原理,而且在表达上非常通俗易懂,可以帮助读者深入理解并掌握Java语言的核心细节,在开发工作中以不变应万变,写出优秀高效的代码,值得细读。——许令波(君山),《深入分析JavaWeb技术内幕(修订版)》作者

      编辑推荐

      Java工程师高质量成长的必读本,谷歌官方认可的android开发语言Kotlin的基石。看透JVM设计思想与原理,彻底领悟JAVA编程精髓,以不变应万变!

      Java是一门非常流行的程序语言,但是,Java程序到底是如何运行的?如何写出更高效的Java代码……?这些令人困扰的问题,都可以从《揭秘Java虚拟机:JVM设计原理与实现》中找到答案。

      随着互联网的极速发展,现在的Java服务端应用需要应对极高的并发访问和大量的数据交互,如果能深入地理解Java虚拟机的核心原理和实现细节,不仅可以帮助程序员自如地应对变化莫测的各类状况,也可以帮助程序员写出优秀高效的代码。

      《揭秘Java虚拟机:JVM设计原理与实现》正是这样一部修炼Java内功的武学秘笈。它不仅详细阐述了JVM的设计思路与原理,让读者能够深刻理解JVM的运行机制,而且更进一步地分析了JVM在发展过程中每一次技术选择的必然性——这样的分析让读者得以跨越时空,在思想上与前辈大师们产生共鸣,实现精神上的交流,真正领悟JVM的精髓。

      更为难得的是,看似艰深莫测的“大道理”,却被作者用晓畅明白、幽默有趣的文字层层化解了:《揭秘Java虚拟机:JVM设计原理与实现》在阅读体验上毫无枯燥之感,相反,却能让你在“顿悟”的当下,会心而笑,不忍释卷!

      不必犹豫,无须比较,就是它——《揭秘Java虚拟机:JVM设计原理与实现》!

      内容简介

      《揭秘Java虚拟机:JVM设计原理与实现》从源码角度解读HotSpot的内部实现机制,本版本主要包含三大部分——JVM数据结构设计与实现、执行引擎机制及内存分配模型。

      数据结构部分包括Java字节码文件格式、常量池解析、字段解析、方法解析。每一部分都给出详细的源码实现分析,例如字段解析一章,从源码层面详细分析了Java字段重排、字段继承等关键机制。再如方法解析一章,给出了Java多态特性在源码层面的实现方式。《揭秘Java虚拟机:JVM设计原理与实现》通过直接对源代码的分析,从根本上梳理和澄清Java领域中的关键概念和机制。

      执行引擎部分包括Java方法调用机制、栈帧创建机制、指令集架构与解释器实现机制。这一话题是《揭秘Java虚拟机:JVM设计原理与实现》技术含量高的部分,需要读者具备一定的汇编基础。不过千万不要被“汇编”这个词给吓着,其实在作者看来,汇编相比于高级语言而言,语法非常简单,语义也十分清晰。执行引擎部分重点描述Java源代码如何转换为字节码,又如何从字节码转换为机器指令从而能够被物理CPU所执行的技术实现。同时详细分析了Java函数堆栈的创建全过程,在源码分析的过程中,带领读者从本质上理解到底什么是Java函数堆栈和栈帧,以及栈帧内部的详细结构。

      内存分配部分主要包括类型创建与加载、对象实例创建与内存分配,例如new关键字的工作机制,import关键字的作用,再如java.lang.ClassLoader.loadClass()接口的本地实现机制。

      《揭秘Java虚拟机:JVM设计原理与实现》并不是简单地分析源码实现,而是在描述HotSpot内部实现机制的同时,分析了HotSpot如此这般实现的技术必然性。读者在阅读《揭秘Java虚拟机:JVM设计原理与实现》的过程中,将会在很多地方看到作者本人的这种思考。

      目录

      • 第1 章 Java 虚拟机概述 1
      • 1.1 从机器语言到Java——詹爷,你好 1
      • 1.2 兼容的选择:一场生产力的革命 6
      • 1.3 中间语言翻译 10
      • 1.3.1 从中间语言翻译到机器码 11
      • 1.3.2 通过C 程序翻译 11
      • 1.3.3 直接翻译为机器码 13
      • 1.3.4 本地编译 16
      • 1.4 神奇的指令 18
      • 1.4.1 常见汇编指令 20
      • 1.4.2 JVM 指令 21
      • 1.5 本章总结 24
      • 第2 章 Java 执行引擎工作原理:方法调用 25
      • 2.1 方法调用 26
      • 2.1.1 真实的机器调用 26
      • 2.1.2 C 语言函数调用 41
      • 2.2 JVM 的函数调用机制 47
      • 2.3 函数指针 53
      • 2.4 CallStub 函数指针定义 60
      • 2.5 _call_stub_entry 例程 72
      • 2.6 本章总结 114
      • 第3 章 Java 数据结构与面向对象 115
      • 3.1 从Java 算法到数据结构 116
      • 3.2 数据类型简史 120
      • 3.3 Java 数据结构之偶然性 127
      • 3.4 Java 类型识别 130
      • 3.4.1 class 字节码概述 131
      • 3.4.2 魔数与JVM 内部的int 类型 134
      • 3.4.3 常量池与JVM 内部对象模型 135
      • 3.5 大端与小端 141
      • 3.5.1 大端和小端的概念 144
      • 3.5.2 大小端产生的本质原因 146
      • 3.5.3 大小端验证 147
      • 3.5.4 大端和小端产生的场景 149
      • 3.5.5 如何解决字节序反转 152
      • 3.5.6 大小端问题的避免 154
      • 3.5.7 JVM 对字节码文件的大小端处理 154
      • 3.6 本章总结 157
      • 第4 章 Java 字节码实战 158
      • 4.1 字节码格式初探 158
      • 4.1.1 准备测试用例 159
      • 4.1.2 使用javap 命令分析字节码文件 159
      • 4.1.3 查看字节码二进制 162
      • 4.2 魔数与版本 163
      • 4.2.1 魔数 165
      • 4.2.2 版本号 165
      • 4.3 常量池 166
      • 4.3.1 常量池的基本结构 166
      • 4.3.2 JVM 所定义的11 种常量 167
      • 4.3.3 常量池元素的复合结构 167
      • 4.3.4 常量池的结束位置 169
      • 4.3.5 常量池元素总数量 169
      • 4.3.6 第一个常量池元素 170
      • 4.3.7 第二个常量池元素 171
      • 4.3.8 父类常量 171
      • 4.3.9 变量型常量池元素 172
      • 4.4 访问标识与继承信息 174
      • 4.4.1 access_flags 174
      • 4.4.2 this_class 175
      • 4.4.3 super_class 176
      • 4.4.4 interface 177
      • 4.5 字段信息 177
      • 4.5.1 fields_count 177
      • 4.5.2 field_info fields[fields_count] 178
      • 4.6 方法信息 182
      • 4.6.1 methods_count 182
      • 4.6.2 method_info methods[methods_count] 183
      • 4.7 本章回顾 203
      • 第5 章 常量池解析 204
      • 5.1 常量池内存分配 206
      • 5.1.1 常量池内存分配总体链路 207
      • 5.1.2 内存分配 212
      • 5.1.3 初始化内存 221
      • 5.2 oop-klass 模型 222
      • 5.2.1 两模型三维度 223
      • 5.2.2 体系总览 224
      • 5.2.3 oop 体系 226
      • 5.2.4 klass 体系 229
      • 5.2.5 handle 体系 232
      • 5.2.6 oop、klass、handle 的相互转换 237
      • 5.3 常量池klass 模型(1) 242
      • 5.3.1 klassKlass 实例构建总链路 244
      • 5.3.2 为klassOop 申请内存 248
      • 5.3.3 klassOop 内存清零 251
      • 5.3.4 初始化mark 251
      • 5.3.5 初始化klassOop._metadata 256
      • 5.3.6 初始化klass 257
      • 5.3.7 自指 258
      • 5.4 常量池klass 模型(2) 258
      • 5.4.1 constantPoolKlass 模型构建 258
      • 5.4.2 constantPoolOop 与klass 261
      • 5.4.3 klassKlass 终结符 264
      • 5.5 常量池解析 264
      • 5.5.1 constantPoolOop 域初始化 264
      • 5.5.2 初始化tag 266
      • 5.5.3 解析常量池元素 267
      • 5.6 本章总结 276
      • 第6 章 类变量解析 277
      • 6.1 类变量解析 278
      • 6.2 偏移量 282
      • 6.2.1 静态变量偏移量 282
      • 6.2.2 非静态变量偏移量 284
      • 6.2.3 Java 字段内存分配总结 309
      • 6.3 从源码看字段继承 315
      • 6.3.1 字段重排与补白 316
      • 6.3.2 private 字段可被继承吗 322
      • 6.3.3 使用HSDB 验证字段分配与继承 325
      • 6.3.4 引用类型变量内存分配 333
      • 6.4 本章总结 338
      • 第7 章 Java 栈帧 340
      • 7.1 entry_point 例程生成 341
      • 7.2 局部变量表创建 349
      • 7.2.1 constMethod 的内存布局 349
      • 7.2.2 局部变量表空间计算 352
      • 7.2.3 初始化局部变量区 355
      • 7.3 堆栈与栈帧 364
      • 7.3.1 栈帧是什么 364
      • 7.3.2 硬件对堆栈的支持 383
      • 7.3.3 栈帧开辟与回收 386
      • 7.3.4 堆栈大小与多线程 388
      • 7.4 JVM 的栈帧 392
      • 7.4.1 JVM 栈帧与大小确定 392
      • 7.4.2 栈帧创建 396
      • 7.4.3 局部变量表 418
      • 7.5 栈帧深度与slot 复用 430
      • 7.6 最大操作数栈与操作栈复用 433
      • 7.7 本章总结 436
      • 第8 章 类方法解析 437
      • 8.1 方法签名解析与校验 442
      • 8.2 方法属性解析 444
      • 8.2.1 code 属性解析 444
      • 8.2.2 LVT&LVTT 446
      • 8.3 创建methodOop 452
      • 8.4 Java 方法属性复制 456
      • 8.5 与 458
      • 8.6 查看运行时字节码指令 479
      • 8.7 vtable 486
      • 8.7.1 多态 486
      • 8.7.2 C++中的多态与vtable 488
      • 8.7.3 Java 中的多态实现机制 490
      • 8.7.4 vtable 与invokevirtual 指令 497
      • 8.7.5 HSDB 查看运行时vtable 499
      • 8.7.6 miranda 方法 502
      • 8.7.7 vtable 特点总结 505
      • 8.7.8 vtable 机制逻辑验证 506
      • 8.8 本章总结 508
      • 第9 章 执行引擎 510
      • 9.1 执行引擎概述 511
      • 9.2 取指 513
      • 9.2.1 指令长度 516
      • 9.2.2 JVM 的两级取指机制 524
      • 9.2.3 取指指令放在哪 529
      • 9.2.4 程序计数器在哪里 531
      • 9.3 译码 532
      • 9.3.1 模板表 532
      • 9.3.2 汇编器 538
      • 9.3.3 汇编 546
      • 9.4 栈顶缓存 555
      • 9.5 栈式指令集 563
      • 9.6 操作数栈在哪里 574
      • 9.7 栈帧重叠 578
      • 9.8 entry_point 例程机器指令 583
      • 9.9 执行引擎实战 585
      • 9.9.1 一个简单的例子 585
      • 9.9.2 字节码运行过程分析 587
      • 9.10 字节码指令实现 594
      • 9.10.1 iconst_3 594
      • 9.10.2 istore_0 596
      • 9.10.3 iadd 597
      • 9.11 本章总结 598
      • 第10 章 类的生命周期 599
      • 10.1 类的生命周期概述 599
      • 10.2 类加载 602
      • 10.2.1 类加载——镜像类与静态字段 609
      • 10.2.2 Java 主类加载机制 614
      • 10.2.3 类加载器的加载机制 620
      • 10.2.4 反射加载机制 621
      • 10.2.5 import 与new 指令 622
      • 10.3 类的初始化 623
      • 10.4 类加载器 626
      • 10.4.1 类加载器的定义. 626
      • 10.4.2 系统类加载器与扩展类加载器创建 632
      • 10.4.3 双亲委派机制与破坏 634
      • 10.4.4 预加载 636
      • 10.4.5 引导类加载 638
      • 10.4.6 加载、链接与延迟加载 639
      • 10.4.7 父加载器 643
      • 10.4.8 加载器与类型转换 646
      • 10.5 类实例分配 647
      • 10.5.1 栈上分配与逃逸分析 650
      • 10.5.2 TLAB 654
      • 10.5.3 指针碰撞与eden 区分配 655
      • 10.5.4 清零 656
      • 10.5.5 偏向锁 657
      • 10.5.6 压栈与取指 658
      • 10.6 本章总结 660

       

      以上就是本次介绍的Java虚拟机电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

      上一篇:PHP和MySQL Web开发(第5版)

      下一篇:数据结构与抽象:Java语言描述(第4版)

      展开 +

      收起 -

      下载地址:百度网盘下载
      读者心得
      60小时31分钟前回答

      java虚拟机多线程进阶篇总结

      1.线程池基本参数 以Executors.newFixedThreadPool()这种创建方式为例: 大家想象,假如你创建一个线程池,你想这个池子有些什么参数呢?首先这个池子必须要有一个最大值;然后还希望这个池子的线程数量有一个警戒线,到了这个警戒线的位置说明线程池暂时已经满了,如果这个时候还有人过来拿线程,我们就要把这些人抓起来扔到一个地方去让他们排队,告诉他们:请稍等,等我们的线程有空闲的时候再来处理你的事;再然后假如人排队的地方都满了,玛德,好多人,于是线程池就想办法东拼西凑又多搞出来了几个线程去处理了;最后,假如那搞出来的这几个线程还是不够用,并且排队的地方总是满的……

      113小时13分钟前回答

      作为程序员必须掌握的Java虚拟机中的22个重难点(推荐0

      Java虚拟机一直是比较重要的知识点,是Java高级开发必会的。本文为你总结了关于JVM的22个重点、难点,图文并茂的向你展示和JVM有关的重点知识。全文共7000字左右。 概念 虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Java虚拟机,简称JVM)。 Java虚拟机阵营:Sun HotSpot VM、BEA JRockit VM、IBM J9 VM、Azul VM、Apache Harmony、Google Dalvik VM、Microsoft JVM… 启动流程 基本架构 Java运行时编译源码(.java)成字节码,由jre运行。jre由java虚拟机(jvm)实现。Jvm分析字节码,后解释并执行。 JVM由三个主……

      码农之家

      盖惠美 提供上传

      资源
      18
      粉丝
      46
      喜欢
      853
      评论
      10

      Copyright 2018-2021 www.xz577.com 码农之家

      版权投诉 / 书籍推广:520161757@qq.com