Hotspot实战
正版保障 假一赔十 可开发票
¥
42.89
6.2折
¥
69
全新
库存8件
作者陈涛
出版社人民邮电出版社
ISBN9787115343635
出版时间2013-09
装帧平装
开本其他
定价69元
货号8182859
上书时间2024-12-18
商品详情
- 品相描述:全新
- 商品描述
-
导语摘要
陈涛著的《HotSpot实战》深入浅出地讲解了HotSpot虚拟机的工作原理,包括OpenJDK与HotSpot项目、编译和调试HotSpot的方法、HotSpot内核结构、Launcher、运行时数据区等内容。除了HotSpot技术,本书强调了对方法论的探讨。各个章节都有一些与系统运行机制相关的实战或练习。这些不仅有助于读者加深对知识或原理的理解,还可以培养读者掌握独立探索的思维方式和运用方法。
作者简介
陈涛,硕士,毕业于中国科技大学。现就职于网易公司旗下的网易宝,从事在线支付系统的设计与开发工作。在从事Java工作之前 ,曾有过Linux内核及驱动开发工作经验。热衷于专研技术,对编程语言和JVM比较感兴趣。工作之余 ,喜欢足球和武侠带来的乐趣。目前正在“专研”的课题是如何做一名称职的奶爸。
目录
第1章 初识HotSpot 11.1 JDK概述 21.1.1 JCP与JSR 31.1.2 JDK的发展历程 41.1.3 Java 7的语法变化 71.2 动手编译虚拟机 131.2.1 源代码下载 131.2.2 HotSpot源代码结构 131.2.3 搭建编译环境 151.2.4 编译目标 161.2.5 编译过程 171.2.6 编译常见问题 191.3 实战:在HotSpot内调试HelloWorld 201.3.1 认识GDB 211.3.2 准备调试脚本 221.4 小结 26第2章 启动 282.1 HotSpot内核 282.1.1 如何阅读源代码 282.1.2 HotSpot内核框架 362.1.3 Prims 372.1.4 Services 392.1.5 Runtime 432.2 启动 462.2.1 Launcher 462.2.2 虚拟机生命周期 482.2.3 入口:main函数 502.2.4 主线程 512.2.5 InitializeJVM函数 532.2.6 JNI_CreateJavaVM函数 552.2.7 调用Java主方法 562.2.8 JVM退出路径 562.3 系统初始化 572.3.1 配置OS模块 582.3.2 配置系统属性 602.3.3 加载系统库 612.3.4 启动线程 622.3.5 vm_init_globals函数:初始化全局数据结构 652.3.6 init_globals函数:初始化全局模块 652.4 小结 69第3章 类与对象 703.1 对象表示机制 713.1.1 OOP-Klass二分模型 713.1.2 Oops模块 713.1.3 OOP框架与对象访问机制 733.1.4 Klass与instanceKlass 793.1.5 实战:用HSDB调试HotSpot 823.2 类的状态转换 873.2.1 入口:Class文件 873.2.2 类的状态 923.2.3 加载 963.2.4 链接 1013.2.5 初始化 1043.2.6 实战:类的“族谱” 1073.2.7 实战:系统字典 1113.3 创建对象 1133.3.1 实例对象的创建流程 1143.3.2 实战:探测JVM内部对象 1163.4 小结 119第4章 运行时数据区 1204.1 堆 1214.1.1 Java的自动内存管理 1214.1.2 堆的管理 1224.2 线程私有区域 1254.2.1 PC 1254.2.2 JVM栈 1264.3 方法区 1264.3.1 纽带作用 1274.3.2 常量池 1304.3.3 常量池缓存:ConstantPoolCache 1334.3.4 方法的表示:methodOop 1344.3.5 方法的解析:将符号引用转换成直接引用 1384.3.6 代码放在哪里:ConstMethodOop 1414.3.7 实战:探测运行时常量池 1424.4 性能监控数据区:Perf Data 1474.4.1 描述这段空间:PerfMemory 1474.4.2 查看 1484.4.3 生产 1504.5 转储 1514.5.1 用VisualVM进行转储分析 1514.5.2 JVM Crash 1534.6 小结 158第5章 垃圾收集 1595.1 堆与GC 1605.1.1 垃圾收集 1605.1.2 分代收集 1625.1.3 快速分配 1655.1.4 栈上分配和逸出分析 1675.1.5 GC公共模块 1675.2 垃圾收集器 1705.2.1 设计演进 1705.2.2 CMS收集器 1755.2.3 G1收集器 1805.3 实战:性能分析方法 1845.3.1 获取GC日志 1845.3.2 GC监控信息 1875.3.3 内存分析工具 1895.3.4 选择合适的收集器与GC性能评估 1905.3.5 不要忽略JVM Crash日志 1955.4 小结 196第6章 栈 1976.1 硬件背景:了解真实机器 1986.1.1 程序是如何运行的 1986.1.2 x86与栈帧 1996.1.3 ARM对Java硬件级加速:Jazelle技术 2026.2 Java栈 2036.2.1 寄存器式指令集与栈式指令集 2036.2.2 HotSpot中的栈 2046.2.3 栈帧 2076.2.4 充分利用寄存器资源 2106.2.5 虚拟机如何调用Java函数 2126.2.6 优化:栈顶缓存 2216.2.7 实战:操作数栈 2236.3 小结 228第7章 解释器和即时编译器 2297.1 概述 2307.2 解释器如何工作 2317.2.1 Interpreter模块 2327.2.2 Code模块 2347.2.3 字节码表 2357.2.4 Code Cache 2367.2.5 InterpreterCodelet与Stub队列 2397.2.6 Code生成器 2417.2.7 模板表与转发表 2447.2.8 实战:InterpreterCodelet 2477.3 即时编译器 2507.3.1 概述 2507.3.2 编译器模块 2517.3.3 编译器的基本结构 2527.3.4 实战:编译原理实践,了解编译中间环节 2557.4 小结 267第8章 指令集 2688.1 再说栈式指令集 2688.2 数据传送 2708.2.1 局部变量、常量池和操作数栈之间的数据传送 2708.2.2 数据传送指令 2728.2.3 实战:数组的越界检查 2778.3 类型转换 2798.4 对象的创建和操作 2818.5 程序流程控制 2828.5.1 控制转移指令 2828.5.2 条件转移 2838.5.3 无条件转移 2848.5.4 复合条件转移 2858.5.5 实战:switch语句如何使用String 2878.6 运算 2908.6.1 加法:iadd 2908.6.2 取负:ineg 2918.7 函数的调用和返回 2928.7.1 Java函数分发机制:VTABLE与ITABLE 2938.7.2 invoke系列指令 2978.7.3 动态分发:覆盖 2998.7.4 静态分发:重载 3028.8 异常 3058.8.1 异常表 3058.8.2 创建异常 3068.8.3 try-catch 3098.8.4 finally 3118.9 小结 312第9章 虚拟机监控工具 3139.1 Attach机制 3149.1.1 AttachProvider与VirtualMachine 3149.1.2 命令的下发:execute() 3179.1.3 命令的执行:Attach Listener守护线程 3199.2 查看JVM进程 3209.2.1 用jps查看Java进程 3209.2.2 实战:定制jps,允许查看库路径 3239.3 查看和配置JVM 3269.3.1 用jinfo查看JVM参数配置 3269.3.2 实战:扩展flags选项,允许查看命令行参数 3309.4 堆内存转储工具 3329.4.1 Heap Dump 3329.4.2 原理 3339.5 堆转储分析 3379.5.1 Heap Dump分析工具:jhat 3379.5.2 实战:MAT分析过程 3409.6 线程转储分析 3439.6.1 jstack 3439.6.2 实战:如何分析资源等待 3449.7 小结 347
内容摘要
陈涛著的《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实战》也具有一定的学习参考价值。
主编推荐
“蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇蟮之穴无可寄托者,用心躁也”。对于技术人员来说,如果长期忽略自身技术的根基而去一昧地追求高层框架技术,这无疑是舍本求末的做法。
相较于C或C++程序员,我发现Java程序员更容易忽视基础技术。JVM的出现,为程序员屏蔽了操作系统与硬件的细节,使得程序员从诸如内存管理这样的繁琐任务中解放出来。但这不并等同于允许Java程序员放弃对基础的重视。我们是否有过这样的经历,在遇到内存故障、丢包、网络协议设计、资源瓶颈、证书、二进制等问题时,往往会觉得比较棘手,在寻求解决思路时更是显得力不从心。这实质上是自身技术遇到了瓶颈难以突破所致。可怕的是,想去深究的时候却无从下手。
我写这本书的初衷是为了唤起Java程序员对于基础技术的重视。事实上,任何平台的程序员都应当了解平台的基本特性、实现机制以及接口,这是提高自身修养的必经之路。对于Java程序员来说,我们需要了解的平台就是JVM。了解JVM的基本实现机制,不仅对于解决实际应用中诸如GC等虚拟机问题时有直接帮助,还有利于我们更好地理解语言本身。
所幸的是,Oracle官方已经将虚拟机项目的源码开放出来,这对于我们来说简直就是福音。本书将以OpenJDK和HotSpot为素材,深入浅出地讲解我们*为熟悉的一款虚拟机产品的实现。除了Java程序员,从事与Java或JVM相关的开发、测试、运维等技术人员也将在本书中获益。
精彩内容
《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实战》也具有一定的学习参考价值。
媒体评论
“蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇蟮之穴无可寄托者,用心躁也”。对于技术人员来说,如果长期忽略自身技术的根基而去一昧地追求高层框架技术,这无疑是舍本求末的做法。
相较于C或C++程序员,我发现Java程序员更容易忽视基础技术。JVM的出现,为程序员屏蔽了操作系统与硬件的细节,使得程序员从诸如内存管理这样的繁琐任务中解放出来。但这不并等同于允许Java程序员放弃对基础的重视。我们是否有过这样的经历,在遇到内存故障、丢包、网络协议设计、资源瓶颈、证书、二进制等问题时,往往会觉得比较棘手,在寻求解决思路时更是显得力不从心。这实质上是自身技术遇到了瓶颈难以突破所致。可怕的是,想去深究的时候却无从下手。
我写这本书的初衷是为了唤起Java程序员对于基础技术的重视。事实上,任何平台的程序员都应当了解平台的基本特性、实现机制以及接口,这是提高自身修养的必经之路。对于Java程序员来说,我们需要了解的平台就是JVM。了解JVM的基本实现机制,不仅对于解决实际应用中诸如GC等虚拟机问题时有直接帮助,还有利于我们更好地理解语言本身。
所幸的是,Oracle官方已经将虚拟机项目的源码开放出来,这对于我们来说简直就是福音。本书将以OpenJDK和HotSpot为素材,深入浅出地讲解我们熟悉的一款虚拟机产品的实现。除了Java程序员,从事与Java或JVM相关的开发、测试、运维等技术人员也将在《HotSpot实战》中获益。
陈涛是网易宝的核心开发人员之一,同时维护了网易宝的多个系统。网易宝是网易官方的在线支付系统,对开发工程师的技术要求极高。他喜欢专研技术,知识面宽,不仅对Java、C、C++熟悉,对操作系统底层也很熟悉,能够将理论很好地应用于实践中。本书便是他潜心研究和实践的成果。
——赵刚,网易宝系统负责人,资深技术专家
陈涛在Java开发领域知识的深度和广度给我留下了深刻的印象。本书深入浅出地介绍了JVM技术,强调实践应用。对于想深入研究JVM并希望快速取得进展的开发人员来说,本书非常具有实用价值,是Java开发水平更上一层楼的阶石。
——陈双辉,现任通策集团信息事业部CTO,曾在摩托罗拉移动担任Senior PM。
— 没有更多了 —
以下为对购买帮助不大的评价