`
yangzhiyong77
  • 浏览: 1005821 次
文章分类
社区版块
存档分类
最新评论

深入理解Java虚拟机:JVM高级特性与最佳实践(围绕内存管理和高并发等问题对JVM深入分析)

 
阅读更多

深入理解Java虚拟机:JVM高级特性与最佳实践(围绕内存管理和高并发等问题对JVM深入分析)

围绕内存管理、执行子系统、编程编译与优化、高效并发等核心内容对JVM进行全面而深入的分析,深刻揭示JVM的工作原理

注重实现,以解决实践中的疑难问题为首要目的,包含大量经典案例和最佳实践

基本信息

作者:周志明[作译者介绍]

丛书名:华章原创精品

出版社:机械工业出版社

ISBN:9787111349662

上架时间:2011-6-30

出版日期:2011 年6月

http://product.china-pub.com/194035


内容简介

  作为一位java程序员,你是否也曾经想深入理解java虚拟机,但是却被它的复杂和深奥拒之门外?没关系,《深入理解java虚拟机:jvm高级特性与最佳实践》极尽化繁为简之妙,能带领你在轻松中领略java虚拟机的奥秘。《深入理解java虚拟机:jvm高级特性与最佳实践》是近年来国内出版的唯一一本与java虚拟机相关的专著,也是唯一一本同时从核心理论和实际运用这两个角度去探讨java虚拟机的著作,不仅理论分析得透彻,而且书中包含的典型案例和最佳实践也极具现实指导意义。
  全书共分为五大部分。第一部分从宏观的角度介绍了整个java技术体系的过去、现在和未来,以及如何独立地编译一个openjdk7,这对理解后面的内容很有帮助。第二部分讲解了jvm的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出异常产生的原因;常见的垃圾收集算法以及垃圾收集器的特点和工作原理;常见的虚拟机的监控与调试工具的原理和使用方法。第三部分分析了虚拟机的执行子系统,包括class的文件结构以及如何存储和访问class中的数据;虚拟机的类创建机制以及类加载器的工作原理和它对虚拟机的意义;虚拟机字节码的执行引擎以及它在实行代码时涉及的内存结构。第四部分讲解了程序的编译与代码的优化,阐述了泛型、自动装箱拆箱、条件编译等语法糖的原理;讲解了虚拟机的热点探测方法、hotspot的即时编译器、编译触发条件,以及如何从虚拟机外部观察和分析jit编译的数据和结果。第五部分探讨了java实现高效并发的原理,包括jvm内存模型的结构和操作;原子性、可见性和有序性在java内存模型中的体现;先行发生原则的规则和使用;线程在java语言中的实现原理;虚拟机实现高效并发所做的一系列锁优化措施。
  《深入理解java虚拟机:jvm高级特性与最佳实践》适合所有java程序员、系统调优师和系统架构师阅读。

目录

《深入理解java虚拟机:jvm高级特性与最佳实践》
前言
致谢
第一部分 走近java
第1章 走近java / 2
1.1 概述 / 2
1.2 java技术体系 / 3
1.3 java发展史 / 5
1.4 展望java技术的未来 / 9
1.4.1 模块化 / 9
1.4.2 混合语言 / 9
1.4.3 多核并行 / 11
1.4.4 进一步丰富语法 / 12
1.4.5 64位虚拟机 / 13
1.5 实战:自己编译jdk / 13
1.5.1 获取jdk源码 / 13
1.5.2 系统需求 / 14
1.5.3 构建编译环境 / 15
1.5.4 准备依赖项 / 17
1.5.5 进行编译 / 18
.1.6 本章小结 / 21
第二部分 自动内存管理机制
第2章 java内存区域与内存溢出异常 / 24
2.1 概述 / 24
2.2 运行时数据区域 / 25
2.2.1 程序计数器 / 25
2.2.2 java虚拟机栈 / 26
2.2.3 本地方法栈 / 27
2.2.4 java堆 / 27
2.2.5 方法区 / 28
2.2.6 运行时常量池 / 29
2.2.7 直接内存 / 29
2.3 对象访问 / 30
2.4 实战:outofmemoryerror异常 / 32
2.4.1 java堆溢出 / 32
2.4.2 虚拟机栈和本地方法栈溢出 / 35
2.4.3 运行时常量池溢出 / 38
2.4.4 方法区溢出 / 39
2.4.5 本机直接内存溢出 / 41
2.5 本章小结 / 42
第3章 垃圾收集器与内存分配策略 / 43
3.1 概述 / 43
3.2 对象已死? / 44
3.2.1 引用计数算法 / 44
3.2.2 根搜索算法 / 46
3.2.3 再谈引用 / 47
3.2.4 生存还是死亡? / 48
3.2.5 回收方法区 / 50
3.3 垃圾收集算法 / 51
3.3.1 标记 -清除算法 / 51
3.3.2 复制算法 / 52
3.3.3 标记-整理算法 / 54
3.3.4 分代收集算法 / 54
3.4 垃圾收集器 / 55
3.4.1 serial收集器 / 56
3.4.2 parnew收集器 / 57
3.4.3 parallel scavenge收集器 / 59
3.4.4 serial old收集器 / 60
3.4.5 parallel old收集器 / 61
3.4.6 cms收集器 / 61
3.4.7 g1收集器 / 64
3.4.8 垃圾收集器参数总结 / 64
3.5 内存分配与回收策略 / 65
3.5.1 对象优先在eden分配 / 66
3.5.2 大对象直接进入老年代 / 68
3.5.3 长期存活的对象将进入老年代 / 69
3.5.4 动态对象年龄判定 / 71
3.5.5 空间分配担保 / 73
3.6 本章小结 / 75
第4章 虚拟机性能监控与故障处理工具 / 76
4.1 概述 / 76
4.2 jdk的命令行工具 / 76
4.2.1 jps:虚拟机进程状况工具 / 79
4.2.2 jstat:虚拟机统计信息监视工具 / 80
4.2.3 jinfo:java配置信息工具 / 82
4.2.4 jmap:java内存映像工具 / 82
4.2.5 jhat:虚拟机堆转储快照分析工具 / 84
4.2.6 jstack:java堆栈跟踪工具 / 85
4.3 jdk的可视化工具 / 87
4.3.1 jconsole:java监视与管理控制台 / 88
4.3.2 visualvm:多合一故障处理工具 / 96
4.4 本章小结 / 105
第5章 调优案例分析与实战 / 106
5.1 概述 / 106
5.2 案例分析 / 106
5.2.1 高性能硬件上的程序部署策略 / 106
5.2.2 集群间同步导致的内存溢出 / 109
5.2.3 堆外内存导致的溢出错误 / 110
5.2.4 外部命令导致系统缓慢 / 112
5.2.5 服务器jvm进程崩溃 / 113
5.3 实战:eclipse运行速度调优 / 114
5.3.1 调优前的程序运行状态 / 114
5.3.2 升级jdk 1.6的性能变化及兼容问题 / 117
5.3.3 编译时间和类加载时间的优化 / 122
5.3.4 调整内存设置控制垃圾收集频率 / 126
5.3.5 选择收集器降低延迟 / 130
5.4 本章小结 / 133
第三部分 虚拟机执行子系统
第6章 类文件结构 / 136
6.1 概述 / 136
6.2 无关性的基石 / 136
6.3 class类文件的结构 / 138
6.3.1 魔数与class文件的版本 / 139
6.3.2 常量池 / 141
6.3.3 访问标志 / 147
6.3.4 类索引、父类索引与接口索引集合 / 148
6.3.5 字段表集合 / 149
6.3.6 方法表集合 / 153
6.3.7 属性表集合 / 155
6.4 class文件结构的发展 / 168
6.5 本章小结 / 170
第7章 虚拟机类加载机制 / 171
7.1 概述 / 171
7.2 类加载的时机 / 172
7.3 类加载的过程 / 176
7.3.1 加载 / 176
7.3.2 验证 / 178
7.3.3 准备 / 181
7.3.4 解析 / 182
7.3.5 初始化 / 186
7.4 类加载器 / 189
7.4.1 类与类加载器 / 189
7.4.2 双亲委派模型 / 191
7.4.3 破坏双亲委派模型 / 194
7.5 本章小结 / 197
第8章 虚拟机字节码执行引擎 / 198
8.1 概述 / 198
8.2 运行时栈帧结构 / 199
8.2.1 局部变量表 / 199
8.2.2 操作数栈 / 204
8.2.3 动态连接 / 206
8.2.4 方法返回地址 / 206
8.2.5 附加信息 / 207
8.3 方法调用 / 207
8.3.1 解析 / 207
8.3.2 分派 / 209
8.4 基于栈的字节码解释执行引擎 / 221
8.4.1 解释执行 / 221
8.4.2 基于栈的指令集与基于寄存器的指令集 / 223
8.4.3 基于栈的解释器执行过程 / 224
8.5 本章小结 / 230
第9章 类加载及执行子系统的案例与实战 / 231
9.1 概述 / 231
9.2 案例分析 / 231
9.2.1 tomcat:正统的类加载器架构 / 232
9.2.2 osgi:灵活的类加载器架构 / 235
9.2.3 字节码生成技术与动态代理的实现 / 238
9.2.4 retrotranslator:跨越jdk版本 / 242
9.3 实战:自己动手实现远程执行功能 / 246
9.3.1 目标 / 246
9.3.2 思路 / 247
9.3.3 实现 / 248
9.3.4 验证 / 255
9.4 本章小结 / 256
第四部分 程序编译与代码优化
第10章 早期(编译期)优化 / 258
10.1 概述 / 258
10.2 javac编译器 / 259
10.2.1 javac的源码与调试 / 259
10.2.2 解析与填充符号表 / 262
10.2.3 注解处理器 / 264
10.2.4 语义分析与字节码生成 / 264
10.3 java语法糖的味道 / 268
10.3.1 泛型与类型擦除 / 268
10.3.2 自动装箱、拆箱与遍历循环 / 273
10.3.3 条件编译 / 275
10.4 实战:插入式注解处理器 / 276
10.4.1 实战目标 / 276
10.4.2 代码实现 / 277
10.4.3 运行与测试 / 284
10.4.4 其他应用案例 / 286
10.5 本章小结 / 286
第11章 晚期(运行期)优化 / 287
11.1 概述 / 287
11.2 hotspot虚拟机内的即时编译器 / 288
11.2.1 解释器与编译器 / 288
11.2.2 编译对象与触发条件 / 291
11.2.3 编译过程 / 294
11.2.4 查看与分析即时编译结果 / 297
11.3 编译优化技术 / 301
11.3.1 优化技术概览 / 301
11.3.2 公共子表达式消除 / 305
11.3.3 数组边界检查消除 / 307
11.3.4 方法内联 / 307
11.3.5 逃逸分析 / 309
11.4 java与c/c++的编译器对比 / 311
11.5 本章小结 / 313
第五部分 高效并发
第12章 java内存模型与线程 / 316
12.1 概述 / 316
12.2 硬件的效率与一致性 / 317
12.3 java内存模型 / 318
12.3.1 主内存与工作内存 / 319
12.3.2 内存间交互操作 / 320
12.3.3 对于volatile型变量的特殊规则 / 322
12.3.4 对于long和double型变量的特殊规则 / 327
12.3.5 原子性、可见性与有序性 / 328
12.3.6 先行发生原则 / 330
12.4 java与线程 / 333
12.4.1 线程的实现 / 333
12.4.2 java线程调度 / 337
12.4.3 状态转换 / 339
12.5 本章小结 / 341
第13章 线程安全与锁优化 / 342
13.1 概述 / 342
13.2 线程安全 / 343
13.2.1 java语言中的线程安全 / 343
13.2.2 线程安全的实现方法 / 348
13.3 锁优化 / 356
13.3.1 自旋锁与自适应自旋 / 356
13.3.2 锁消除 / 357
13.3.3 锁粗化 / 358
13.3.4 轻量级锁 / 358
13.3.5 偏向锁 / 361
13.4 本章小结 / 362
附录a java虚拟机家族 / 363
附录b 虚拟机字节码指令表 / 366
附录c hotspot虚拟机主要参数表 / 372
附录d 对象查询语言(oql)简介 / 376
附录e jdk历史版本轨迹 / 383


分享到:
评论

相关推荐

    JVM高级特性与最佳实践

    根据提供的文件信息,本文将重点围绕“JVM高级特性与最佳实践”这一主题展开,深入探讨Java虚拟机的重要概念、高级特性和实际应用中的最佳实践。 ### 一、Java虚拟机简介 Java虚拟机(Java Virtual Machine,简称...

    实战JAVA虚拟机 JVM故障诊断与性能优化

    《实战JAVA虚拟机 JVM故障诊断与性能优化》这本书深入探讨了Java开发中不可或缺的Java虚拟机(JVM)技术,对于Java开发者来说,理解JVM的工作原理、故障诊断以及性能调优是至关重要的。以下将围绕这些主题展开详细的...

    本方法学python

    由于提供的文件信息中,标题为“本方法学python”,但描述却是关于《深入理解Java虚拟机:JVM高级特性与最佳实践》一书的内容,这似乎存在矛盾,因此,将分开对标题和描述提供的信息进行知识点的阐述。 首先,“本...

    java深度历险,深入jvm

    《Java深度历险》这本书是Java开发者深入了解JVM(Java虚拟机)的重要参考资料,它以繁体中文的形式呈现,旨在帮助读者深入理解Java程序在运行时的内部机制。JVM作为Java平台的核心部分,负责执行字节码并提供运行...

    jvm高级特性

    以上介绍了JVM的一些高级特性及其应用场景,包括内存管理、性能优化、线程管理、类加载机制以及诊断与监控工具等方面的内容。掌握这些特性不仅有助于提高Java应用程序的性能和稳定性,还能帮助开发者更好地理解Java...

    Java核心技术 卷II 高级特性(原书第9版)

    在《Java核心技术 卷II 高级特性(原书第9版)》的学习中,读者能够全面而深入地理解Java编程的高级特性,对Java的集合、并发、I/O、网络编程以及设计模式等领域有更深刻的认识,为成为高级Java开发者打下坚实的基础。...

    Java虚拟机

    全书共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。第一部分从宏观的角度介绍了整个Java技术体系、Java和JVM的发展历程、...

    JVM演讲PPT分享

    本次分享的核心内容围绕Java虚拟机(JVM)及其在运行Java程序时的内部工作机制。JVM是Java平台的核心组件,负责在不同的操作系统和硬件平台中提供统一的运行环境。本次演讲PPT将深入探讨JVM的演进、其体系结构以及...

    Java编程那些事儿_java_

    在Java编程领域,深入理解JVM(Java Virtual Machine)是每个高级Java程序员的必备技能。JVM不仅是Java程序运行的基础,也是性能优化的关键所在。本文将围绕“Java编程那些事儿”,探讨JVM的工作原理,诊断工具的...

    The-Java-Garbage-Collection-Mini-book.zip

    《Java垃圾回收迷你书》是InfoQ发布的一份专门探讨JVM垃圾收集机制的资源,对深入了解Java虚拟机(JVM)的工作原理及其内存管理机制非常有帮助。垃圾回收(Garbage Collection,简称GC)是Java语言的一个重要特性,它...

    疯狂java深度java

    10. **Java虚拟机(JVM)**:理解JVM的工作原理,包括类加载机制、内存模型、字节码执行,以及如何通过JDK工具分析和优化性能,是提升Java开发者技能的重要一环。 11. **模块系统**:Java 9引入了模块系统,增强了...

    [网盘]大型网站系统与java中间件实践 pdf下载 高清完整版

    根据提供的文件信息,本文将围绕“大型网站系统与Java中间件实践”这一主题进行深入探讨。主要内容包括:大型网站系统的架构特点、Java中间件的概念及其在大型网站中的应用实践。 ### 一、大型网站系统概述 #### ...

    java新手必备-java核心技术卷电子版

    9. **JVM与内存管理**:理解Java虚拟机(JVM)的工作原理以及垃圾收集对于优化程序性能至关重要。书中会介绍JVM的内存模型、类加载机制以及如何进行性能分析。 10. **Java SE与Java EE**:虽然《Java核心技术卷》...

    java面试,Java基础知识

    这是通过Java虚拟机(JVM)实现的。开发者只需编写一次Java代码,然后编译成字节码(.class文件),该字节码可以在任何支持JVM的操作系统上运行。 #### 2. Java集合框架 - **List**:一种有序集合,元素可重复,...

    java面试笔试集锦

    5. **JVM原理**: 对Java虚拟机的理解和优化技巧是高级Java开发者必备的知识,包括内存模型(堆、栈、方法区、本地方法栈)、垃圾收集机制、内存溢出分析、类加载机制等。 6. **数据库操作**: SQL查询语言的熟练运用...

    JVM参数-Xms-Xmx-Xmn-Xss-调优总结.docx

    Java虚拟机(JVM)参数调优是提升Java应用程序性能的关键环节。本文主要围绕四个核心JVM参数:-Xms、-Xmx、-Xmn和-Xss进行深入讲解,并结合实际配置示例来阐述其作用和调优策略。 1. `-Xms` 和 `-Xmx`: 这两个...

    java资料收集

    这本书以深入浅出的方式介绍了Java的基础知识和高级特性,包括面向对象编程的概念、类与对象、封装、继承、多态、异常处理、集合框架、网络编程、I/O流、并发编程等。对于初学者,它提供了一个全面的学习路径,逐步...

    Java高手真经 系统架构卷 刘中兵 真实光盘

    2. **JVM深入理解**:了解Java虚拟机的工作原理,包括内存模型、类加载机制、垃圾回收、性能优化等方面,对于提升系统性能和解决运行时问题至关重要。 3. **并发与多线程**:在Java系统架构中,高并发处理能力是...

    2019互联网面试题第2季,互联网面试题及答案,Java源码.zip

    【标题】: 2019互联网面试题第2季,互联网面试题及答案,Java源码 在互联网行业中,面试是检验候选人技术实力的重要环节。2019年第二季度的互联网面试题集中...通过深入学习和实践,可以更好地应对互联网行业的挑战。

    Java语言程序设计-进阶篇(原书第8版)

    根据提供的标题“Java语言程序设计-进阶篇(原书第8版)”和描述“Java语言程序设计-进阶篇(原书第8版)”,我们可以推断这本书主要聚焦于Java编程语言的高级主题和实践应用。由于提供的部分内文中没有具体的信息,我们...

Global site tag (gtag.js) - Google Analytics