编辑推荐

  《51CTO学院系列丛书·实战Java虚拟机:JVM故障诊断与性能优化》的主要特点有:
  1.结构清晰。步步为营,每一章节对应一个单独的知识点,力求展示虚拟机的全貌。
  2.理论结合实战。在每一个理论背后,都给出了演示示例供读者参考。
  3.专注专业。包括但不限于体系结构、虚拟机的调试方式、常用参数、垃圾回收系统、Class文件结构、执行系统等,力求从多角度更专业地对Java虚拟机进行探讨。
  4.通俗易懂。简单的白话文风格贯穿《51CTO学院系列丛书·实战Java虚拟机:JVM故障诊断与性能优化》,尽量做到读者在阅读过程中少盲点、无盲点。
  5.技术全面。纵横Windows和Linux双系统下的性能诊断、涉及32位系统和64位系统的优化比较、贯穿从JDK1.5到JDK1.8的优化演进。

推荐购买:《实战Java高并发程序设计》

《分布式服务框架原理与实践》

《云计算网络珠玑》《大型分布式网站架构设计与实践》《深度解析SDN——利益、战略、技术、实践》《网站运维技术与实践》海报:

内容简介

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

作者简介

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

精彩书评

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

  ——51CTO学院高级运营经理曹亚莉   

目录

第1章 初探Java虚拟机1
1.1知根知底:追溯Java的发展历程2
1.1.1那些依托Java虚拟机的语言大咖们2
1.1.2Java发展史上的里程碑2
1.2跨平台的真相:Java虚拟机来做中介4
1.2.1理解Java虚拟机的原理4
1.2.2看清Java虚拟机的种类5
1.3一切看我的:Java语言规范6
1.3.1词法的定义6
1.3.2语法的定义7
1.3.3数据类型的定义8
1.3.4Java语言规范总结9
1.4一切听我的:Java虚拟机规范9
1.5数字编码就是计算机世界的水和电10
1.5.1整数在Java虚拟机中的表示10
1.5.2浮点数在Java虚拟机中的表示12
1.6抛砖引玉:编译和调试虚拟机14
1.7小结19
第2章 认识Java虚拟机的基本结构20
2.1谋全局者才能成大器:看穿Java虚拟机的架构20
2.2小参数能解决大问题:学会设置Java虚拟机的参数22
2.3对象去哪儿:辨清Java堆23
2.4函数如何调用:出入Java栈25
2.4.1局部变量表27
2.4.2操作数栈32
2.4.3帧数据区32
2.4.4栈上分配33
2.5类去哪儿了:识别方法区35
2.6小结37
第3章 常用Java虚拟机参数38
3.1一切运行都有迹可循:掌握跟踪调试参数38
3.1.1跟踪垃圾回收——读懂虚拟机日志39
3.1.2类加载/卸载的跟踪42
3.1.3系统参数查看44
3.2让性能飞起来:学习堆的配置参数45
3.2.1最大堆和初始堆的设置45
3.2.2新生代的配置49
3.2.3堆溢出处理52
3.3别让性能有缺口:了解非堆内存的参数配置54
3.3.1方法区配置55
3.3.2栈配置55
3.3.3直接内存配置55
3.4Client和Server二选一:虚拟机的工作模式58
3.5小结59
第4章 垃圾回收概念与算法60
4.1内存管理清洁工:认识垃圾回收60
4.2清洁工具大PK:讨论常用的垃圾回收算法61
4.2.1引用计数法(ReferenceCounting)62
4.2.2标记清除法(Mark-Sweep)63
4.2.3复制算法(Copying)64
4.2.4标记压缩法(Mark-Compact)66
4.2.5分代算法(GenerationalCollecting)67
4.2.6分区算法(Region)68
4.3谁才是真正的垃圾:判断可触及性69
4.3.1对象的复活69
4.3.2引用和可触及性的强度71
4.3.3软引用——可被回收的引用72
4.3.4弱引用——发现即回收76
4.3.5虚引用——对象回收跟踪77
4.4垃圾回收时的停顿现象:Stop-The-World案例实战79
4.5小结
255
......

精彩书摘

  11.6跑得再快点:静态编译优化
  当使用javac把Java源码转为字节码时,编译器会有一些优化以获得更好的性能。目前,对于执行的字节码会从两处进行优化:
  第一,就是使用javac编译时;
  第二,就是通过JIT(Just-In-Time)即时编译,在运行时。
  目前,大量的优化工作都围绕着JIT展开,比如方法内联、栈上替换等。将优化工作从javac前端移到后端的好处是非常明显的,这样,所有基于Java平台的语言都能共享这种优化带来的好处。将大量的优化只放置于javac前端,那么只有Java语言可以利用这种优化方式。但即便如此,开发人员也必须要了解一些javac的常用优化方法。
  11.6.1编译时计算
  如果在程序中出现了计算表达式,如果表达式的值能够在编译时确定,那么表达式的计算会提前到编译阶段,而不是在运行时计算。
  【示例11-30】很多时候,为了增强代码的可读性,往往不会把最终的数值写在代码中,通常倾向于把计算过程写在代码里。比如下面代码:
  for(inti=0;i

其他推荐