![]()
内容推荐 内容介绍 这是一部从工作原理和工程实践两个维度深入剖析JVM的著作,是计算机领域公认的经典,繁体版在台湾也颇受欢迎。 自2011年上市以来,前两个版本累计印刷36次,销量超过30万册,两家主要网络书店的评论近90000条,内容上近乎零差评,是原创计算机图书领域不可逾越的丰碑。
第3版在第2版的基础上做了重大修订,内容更丰富、实战性更强:根据新版JDK对内容进行了全方位的修订和升级,围绕新技术和生产实践新增逾10万字,包含近50%的全新内容,并对第2版中含糊、瑕疵和错误内容进行了修正。
全书一共13章,分为五大部分: 第一部分(第1章)走近Java 系统介绍了Java的技术体系、发展历程、虚拟机家族,以及动手编译JDK,了解这部分内容能对学习JVM提供良好的指引。 第二部分(第2~5章)自动内存管理 详细讲解了Java的内存区域与内存溢出、垃圾收集器与内存分配策略、虚拟机性能监控与故障排除等与自动内存管理相关的内容,以及10余个经典的性能优化案例和优化方法; 第三部分(第6~9章)虚拟机执行子系统 深入分析了虚拟机执行子系统,包括类文件结构、虚拟机类加载机制、虚拟机字节码执行引擎,以及多个类加载及其执行子系统的实战案例; 第四部分(第10~11章)程序编译与代码优化 详细讲解了程序的前、后端编译与优化,包括前端的易用性优化措施,如泛型、主动装箱拆箱、条件编译等的内容的深入分析;以及后端的性能优化措施,如虚拟机的热点探测方法、HotSpo 目录 《深入理解Java虚拟机:Java高级特性与很好实践》 前言 为何写作本书(即本书能为Java开发者解决哪些问题) 本书针对的读者 如何阅读本书 联系作者 致谢 第一部分:理解JVM前的准备 第1章 认识Java虚拟机 1.1 Java和JVM虚拟机 1.2 Java体系结构 1.2.1 Java技术体系 1.2.2 “一次编译,随处运行”的理解 1.2.3 JVM虚拟机 1.3 理解JVM的意义 1.4 小结 第二部分 内存与垃圾收集 第2章 Java内存区域与OOM异常实战 2.1 虚拟机内存概述 2.2运行时数据区域 2.2.1 程序计数器区(Program Counter Register) 2.2.2 Java虚拟机栈(Java Virtual Machine Stacks) 2.2.3 本地方法栈(Native Method Stacks) 2.2.4 Java堆(Java Heap) 2.2.5 方法区(Method Area) 2.2.6 运行时常量池(Runtime Constant Pool) 2.2.7 直接内存(Direct Memory) 2.3 实战:OutOfMemoryError异常’ 2.3.1 Java堆异常 2.3.2虚拟机栈和本地方法栈异常 2.3.3运行时常量池异常 2.3.4方法区异常 2.3.5本机直接内存异常 2.4 小结 第3章 垃圾收集器与内存分配策略 3.1 垃圾收集概述 3.2 对象已死? 3.2.1 引用计数判定(Reference Counting) 3.2.2 根搜索判定(GC Roots Tracing) 3.3 垃圾收集算法 3.3.1 标记-清除算法(Mark-Sweep) 3.3.2 复制算法(Copying) 3.3.3 标记-整理算法(Mark-Compact) 3.3.4 分代收集算法(Generational Collecting) 3.4 垃圾收集器 3.4.1 Serial收集器 3.4.2 ParNew收集器 3.4.3 Parallel Scavenge收集器 3.4.4 Serial Old收集器 3.4.5 Parallel Old收集器 3.4.6 CMS(Concurrent Mark Sweep)收集器 3.5 小结 第4章 虚拟机监控、调试工具 4.1 虚拟机工具概述 4.2 Hotspot虚拟机的命令行工具 4.2.1 jps 4.2.2 jstack 4.2.3 jmap 4.2.4 jstat 4.2.5 jhat 4.3 Hotspot虚拟机的可视化工具 4.3.1 jconsole 4.3.2 VisualVM 4.4 内存映像分析工具 4.4.1 Java中的对象引用 4.4.2 对象大小定 4.4.1 主流的内存映像分析工具 4.4.2 Eclipse Memory Analyzer 第5章 异常案例分析与调优实战 5.1 虚拟机调优概述 5.2 调优案例: 5.2.1 案例1:垃圾收集导致应用频繁停顿 5.2.2 案例2:优选限度使用高端服务器的硬件性能 5.2.3 案例3:较为代溢出的案例 5.3实战:优化JVM参数提升Eclipse性能 5.3.1 通过GC日志定位性能瓶颈 5.3.2 Java堆调优 5.3.3 较为代调优 5.3.4 选择恰当的垃圾收集器 5.4 小结 第三部分 高效并发 第6章 同步与锁 6.1 并发概述 6.2 内存模型与原子性 6.2.1 JMM模型 6.2.2 标量类型的原子性 6.2.3 DCL双锁检测 6.3 同步与锁 6.3.1 同步的本质 6.3.1 synchronized关键字 6.3.3 volatile关键字 6.3.4 比较并设置操作(CAS) 6.4 虚拟机的锁优化 6.4.1 轻量级锁(Lightweight Locking) 6.4.2 偏向锁(Biased Locking) 6.4.3 锁粗化(Lock Coarsening) 6.4.4 锁削除(Lock Elision) 6.4.5 自适应自旋(Adaptive Spinning) 7.5 小结 第8章 Java并发包实战 8.1 概述 8.2 Concurrent并发包 8.2.1 实战:Atomic类 8.2.2 实战:ReentrantLock类 8.2.3 实战:ReentrantReadWriteLock类 8.2.4 实战:ConcurrentLinkedQueue类 8.2.5 实战:LinkedBlockingQueue类 8.3 小结 第四部分 类与类运作过程 第9章 类文件结构 9.1 概述 9.2类文件结构 9.2.1 Magic 9.2.2 Version 9.2.3 Constant Pool 9.2.4 Access Flag 9.2.5 This Class / Super Class 9.2.6 Interfaces 9.2.7 Fields 9.2.8 Methods 9.2.9 Class attributes 9.3 小结 第10章 Bytecode运行过程本质 10.1 概述 10.2 帧结构 10.2.1 局部变量表(Local Variables) 10.2.2 操作栈(Operand Stacks) 10.2.3 动态链接(Dynamic Linking) 10.2.4 方法出口(Method Invocation Completion) 10.2.5 附加信息(Additional Information) 10.3 实战:虚拟机Bytecode执行过程 10.3.1 JVM原语 10.3.2 构建语法树 10.3.3 解析执行语法树 10.3.4 小结 第11章 类加载器 11.1 类加载器概述 11.2 虚拟机类加载器机制 11.2.1 Bootstrap加载器 11.2.2 Extension 加载器 11.2.3 Application加载器 11.2.4 线程上下文加载器 11.3 类加载器双亲委派规则 |