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

/ 书籍 / 0 条评论 / 1000浏览 / 我要评论

下载

电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍

封页

封页

编辑推荐

  本书的主要特点有: 1. 结构清晰。步步为营,每一章节对应一个单独的知识点,力求展示虚拟机的全貌。   2. 理论结合实战。在每一个理论背后,都给出了演示示例供读者参考。   3. 专注专业。包括但不限于体系结构、虚拟机的调试方式、常用参数、垃圾回收系统、Class文件结构、执行系统等,力求从多角度更专业地对Java虚拟机进行探讨。   4. 通俗易懂。简单的白话文风格贯穿全书,尽量做到读者在阅读过程中少盲点、无盲点。   5. 技术全面。纵横Windows和Linux双系统下的性能诊断、涉及32位系统和64位系统的优化比较、贯穿从JDK 1.5到JDK 1.8的优化演进。   推荐购买:   《云计算网络珠玑》   《大型分布式网站架构设计与实践》   《深度解析SDN——利益、战略、技术、实践》   《网站运维技术与实践》  

内容简介

随着越来越多的第三方语言(Groovy、Scala、JRuby等)在Java虚拟机上运行,Java也俨然成为一个充满活力的生态圈。本书将通过200余示例详细介绍Java虚拟机中的各种参数配置、故障排查、性能监控以及性能优化。   本书共11章。第1~3章介绍了Java虚拟机的定义、总体架构、常用配置参数。第4~5章介绍了垃圾回收的算法和各种垃圾回收器。第6章介绍了虚拟机的性能监控和故障诊断工具。第7章详细介绍了对Java堆的分析方法和案例。第8章介绍了Java虚拟机对多线程,尤其是锁的支持。第9~10章介绍了虚拟机的核心——Class文件结构,以及虚拟机中类的装载系统。第11章介绍了虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码注入的案例。

作者简介

葛一鸣,51CTO特约讲师,国家认证系统分析师,获得Oracle OCP认证。长期从事Java软件开发工作,对Java程序设计、JVM有深入的研究,对设计模式、人工智能、神经网络、数据挖掘等技术有浓厚兴趣,著有《自己动手写神经网路》电子书,也开设了在线的《深入浅出Java虚拟机——入门篇》培训课程。

目 录

第1章 初探Java虚拟机
1.1 知根知底:追溯Java的发展历程
1.1.1 那些依托Java虚拟机的语言大咖们
1.1.2 Java发展史上的里程碑
1.2 跨平台的真相:Java虚拟机来做中介
1.2.1 理解Java虚拟机的原理
1.2.2 看清Java虚拟机的种类
1.3 一切看我的:Java语言规范
1.3.1 词法的定义
1.3.2 语法的定义
1.3.3 数据类型的定义
1.3.4 Java语言规范总结
1.4 一切听我的:Java虚拟机规范
1.5 数字编码就是计算机世界的水和电
1.5.1 整数在Java虚拟机中的表示
1.5.2 浮点数在Java虚拟机中的表示
1.6 抛砖引玉:编译和调试虚拟机
1.7 小结
第2章 认识Java虚拟机的基本结构
2.1 谋全局者才能成大器:看穿Java虚拟机的架构
2.2 小参数能解决大问题:学会设置Java虚拟机的参数
2.3 对象去哪儿:辨清Java堆
2.4 函数如何调用:出入Java栈
2.4.1 局部变量表
2.4.2 操作数栈
2.4.3 帧数据区
2.4.4 栈上分配
2.5 类去哪儿了:识别方法区
2.6 小结
第3章 常用Java虚拟机参数
3.1 一切运行都有迹可循:掌握跟踪调试参数
3.1.1 跟踪垃圾回收——读懂虚拟机日志
3.1.2 类加载/卸载的跟踪
3.1.3 系统参数查看
3.2 让性能飞起来:学习堆的配置参数
3.2.1 最大堆和初始堆的设置
3.2.2 新生代的配置
3.2.3 堆溢出处理
3.3 别让性能有缺口:了解非堆内存的参数配置
3.3.1 方法区配置
3.3.2 栈配置
3.3.3 直接内存配置
3.4 Client和Server二选一:虚拟机的工作模式
3.5 小结
第4章 垃圾回收概念与算法
4.1 内存管理清洁工:认识垃圾回收
4.2 清洁工具大PK:讨论常用的垃圾回收算法
4.2.1 引用计数法(ReferenceCounting)
4.2.2 标记清除法(Mark-Sweep)
4.2.3 复制算法(Copying)
……
第5章 垃圾收集器和内存分配
第6章 性能监控工具
第7章 分析Java堆
第8章 锁与并发
第9章 Class文件结构
第10章 Class装载系统
第11章 字节码执行

前 言

关于Java生态圈
  Java是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大,Java也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。
  作为一个平台,Java虚拟机扮演着举足轻重的作用。除了Java语言,任何一种能够被编译成字节码的计算机语言都属于Java这个平台。Groovy、Scala、JRuby等都是Java平台的一个部分,它们依赖于Java虚拟机,同时,Java平台也因为它们变得更加丰富多彩。
  作为一种文化,Java几乎成为了“开源”的代名词。在Java程序中,有着数不清的开源软件和框架,如Tomcat、Struts、Hibernate、Spring等。就连JDK和JVM自身也有不少开源的实现,如OpenJDK、Harmony。可以说,“共享”的精神在Java世界里体现得淋漓尽致。
  作为一个社区,Java拥有无数的开发人员,有数不清的论坛和资料。从桌面应用软件、嵌入式开发到企业级应用、后台服务器、中间件,都可以看到Java的身影。其应用形式之复杂、参与人数之庞大也令人咋舌。可以说,Java社区已经俨然成为了一个良好而庞大的生态系统。
  而本书,也将主要介绍这个生态系统的核心——Java虚拟机。
  本书的体系结构
  本书立足于实际开发,又不缺理论介绍,力求通俗易懂、循序渐进。本书共分为11章:
  第1章主要为综述,介绍了Java虚拟机的概念、定义,讲解了Java语言规范和Java虚拟机规范,最后,还介绍了OpenJDK的调试方法。
  第2章介绍了虚拟机的总体架构,说明了堆、栈、方法区等内存空间的作用和彼此之间的联系。
  第3章介绍了Java虚拟机的常用配置参数,重点对垃圾回收跟踪参数、内存配置参数做了详细的介绍以及案例说明。
  第4章从理论层面介绍了垃圾回收的算法,如引用计数、标记清除、标记压缩、复制算法等。本章是第5章的理论基础。
  第5章讲解基于垃圾回收的理论知识,进一步详细介绍Java虚拟机中实际使用的各种垃圾回收器,包括串行回收器、并行回收器、CMS、G1等。
  第6章介绍了虚拟机的性能监控和故障诊断工具,考虑实用性,也介绍了系统级性能监控工具的使用,两者结合,可以更好地帮助读者处理实际问题。
  第7章详细介绍了对Java堆的分析方法和案例,主要讲解了MAT和Visual VM两款工具的使用,以及各自OQL的编写方式。
  第8章介绍了Java虚拟机对多线程,尤其是锁的支持,本章不仅介绍了虚拟机内部锁的实现、优化机制,也给出了一些Java语言层面的锁优化思路,最后,还介绍了无锁的并行控制方法。
  第9章介绍了虚拟机的核心——Class文件结构,Class文件作为虚拟机的基石,有着举足轻重的作用,对深入理解虚拟机有着不可忽视的作用。
  第10章介绍了虚拟机中类的装载系统,其中,着重介绍了虚拟机中ClassLoader的实现以及设计模式。
  第11章介绍了虚拟机的执行系统和字节码,为了帮助读者更快更好地理解Java字节码,本章对字节码进行分类讲解,并且理论联系实际,给出了通过ASM框架进行字节码注入的案例。
  本书特色
  本书的主要特点有:
  1.结构清晰。本书采用从整体到局部的视角,首先第1、2两章介绍了Java虚拟机的整体概况和结构。接着步步为营,每一章节对应一个单独知识点,力求展示虚拟机的全貌。
  2.理论结合实战。本书不甘心于简单地枚举理论知识,在每一个理论背后,都给出了演示示例供读者参考,帮助读者更好地消化这些理论。比如,在对Class文件结构和字节码的介绍中,不仅仅简单地给出了理论说明,更是使用ASM框架将这些理论应用于实践,尽可能地做到理论和实践结合。
  3.专注专业。本书着眼于Java虚拟机,对Java虚拟机的原理和实践做了丰富的介绍,包括但不限于体系结构、虚拟机的调试方式、常用参数、垃圾回收系统、Class文件结构、执行系统等,力求从多角度更专业地对Java虚拟机进行探讨。
  4.通俗易懂。本书依然服务于广大虚拟机初学者,尽量避免采用过于理论的描述方式,简单的白话文风格贯穿全书,尽量做到读者在阅读过程中少盲点、无盲点。
  5.技术全面。纵横Windows和Linux双系统下的性能诊断、涉及32位系统和64位系统的优化比较、贯穿从JDK 1.5~ JDK 1.8的优化演进。
  适合阅读人群
  虽然本书力求通俗,但要通读本书并取得良好的学习效果,要求读者需要具备基本的Java知识或者一定的编程经验。因此,本书适合以下读者:
  拥有一定开发经验的Java平台开发人员(Java、Scala、JRuby等)
  软件设计师、架构师
  系统调优人员
  有一定的Java基础并希望更进一步的程序员
  虚拟机爱好者,JVM实践者
  本书的约定
  本书在叙述过程中,有如下约定:
  本书中所述的JDK 1.5、JDK 1.6、JDK 1.7、JDK 1.8等同于JDK 5、JDK 6、JDK 7、JDK 8。
  如无特殊说明,Java虚拟机均指HotSpot虚拟机。
  如无特殊说明,本书的程序、示例均在JDK 1.7环境中运行。
  本书赠送的课程优惠券,可以观看我在51CTO学院的JVM课程。
  联系作者
  本书的写作过程远比我想象的更艰辛,为了让全书能够更清楚更正确地表达和论述,我经历了好多个不眠之夜,即使现在回想起来,也忍不住让我打个寒颤。由于写作水平的限制,书中难免会有不妥之处,望读者谅解。
  为此,如果读者有任何疑问或者建议,非常欢迎大家加入QQ群397196583 ,一起探讨学习中的困难、分享学习的经验,我期待与大家一起交流、共同进步。
  感谢
  这本书能够面世,是因为得到了众人的支持。首先,要感谢我的妻子,她始终不辞辛劳,毫无怨言地对我照顾有加,才让我得以腾出大量时间,并可以安心工作。其次,要感谢小编为我一次又一次地审稿改错,批评指正,才能让本书逐步完善。最后,感谢我的母亲30年如一日对我的体贴和关心。
  参与本书编写的还有宋玉红、关硕、安继宏、白慧、薛淑英、蒋玺、曹静、马玉杰、陈明
  明、张丽萍、任娜娜、李清艺、荆海霞、赵全利、孙迪,特此感谢!
  葛一鸣

媒体评论

对Java程序员来说,Java虚拟机(JVM)可以说是既熟悉又神秘,很少有Java程序员能够抑制自己探究它的冲动。可惜分析JVM故障诊断与性能优化的书籍(尤其是国内出版的)简直少之又少。本书的出版可谓研究JVM的程序员的福音,作者注重理论联系实际,对于理论性较强的章节和知识点安排了大量的实践案例来说明和进行实际操作,具有非常强的实践指导意义。同时本书配套操作视频《深入浅出Java虚拟机——入门篇》在51CTO学院独家发布后受到了51CTO社区广大开发者和爱好者的好评和认可,所以,强烈推荐本书给爱好JVM的你!   ——51CTO学院高级运营经理 曹亚莉

返回顶部
顶部