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

实战Java虚拟机———JVM故障诊断与性能优化百度网盘pdf下载

作者:
简介:本篇主要提供实战Java虚拟机———JVM故障诊断与性能优化pdf下载
出版社:淘乐思图书专营店
出版时间:2019-06
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

基本信息

  • 商品名称:实战Java虚拟机(JVM故障诊断与性能优化第2版)
  • 作者:葛一鸣
  • 定价:89
  • 出版社:电子工业
  • ISBN号:9787121367748

其他参考信息(以实物为准)

  • 出版时间:2019-07-01
  • 印刷时间:2019-07-01
  • 版次:2
  • 印次:1
  • 开本:16开
  • 包装:平装
  • 页数:436
  • 字数:654千字

内容提要

不管技术如何发展,Java依然是一个充满活力的生态圈,学习Java的人也越来越多,但多数人学习Java虚拟机(JVM)时都会遇到瓶颈。本书将通过200余个示例详细介绍JVM中的各种参数配置、故障排查、性能监控及性能优化,帮助Java人突破瓶颈。本书共11章,修订后版本涵盖Java 6~Java 10。 ~3章介绍了Java虚拟机的定义、总体架构、常用配置参数。第4~5章介绍了垃圾回收的算法和各种垃圾回收器。第6章介绍了Java虚拟机的性能监控和故障诊断工具。第7章详细介绍了对Java堆的分析方法和案例。第8章介绍了Java虚拟机对多线程,尤其是对锁的支持。第9~10章介绍了Java虚拟机的核心—Class文件结构,以及Java虚拟机中类的装载系统。 1章介绍了Java虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码注入的案例。本书不仅适合Java程序员阅读,还适合工作于Java虚拟机之上的研发人员、软件设计师、架构师阅读。

作者简介

葛一鸣:炼数成金特约讲师, 认证系统分析师,获得Oracle OCP认证。长期从事Java软件开发工作,对Java程序设计、JVM有深入研究,对设计模式、人工智能、神经网络、数据挖掘等技术有浓厚兴趣,著有《实战Java虚拟机》一书,目前在Dataguru开设多门课程,包括Java并发、JVM、Git等。

目录

目  录


第1章 初探Java虚拟机1
1.1 知根知底:追溯Java的发展历程2
1.1.1 那些依托Java虚拟机的语言大咖们2
1.1.2 Java发展 的里程碑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.4 Java语言规范总结9
1.4 一切听我的:Java虚拟机规范9
1.5 数字编码就是计算机世界的水和电10
1.5.1 整数在Java虚拟机中的表示10
1.5.2 浮点数在Java虚拟机中的表示12
1.6 抛砖引玉:编译和调试虚拟机14
1.7 小结18
第2章 认识Java虚拟机的基本结构19
2.1 谋全局者才能成大器:看穿Java虚拟机的架构19
2.2 小参数能解决大问题:学会设置Java虚拟机的参数21
2.3 对象去哪儿:辨清Java堆22
2.4 函数如何调用:出入Java栈24
2.4.1 局部变量表26
2.4.2 操作数栈31
2.4.3 帧数据区31
2.4.4 栈上分配32
2.5 类去哪儿了:识别方法区34
2.6 小结36
第3章 常用Java虚拟机参数37
3.1 一切运行都有迹可循:掌握跟踪调试参数37
3.1.1 跟踪垃圾回收—读懂虚拟机日志38
3.1.2 类加载/卸载的跟踪42
3.1.3 查看系统参数45
3.2 让性能飞起来:学习堆的配置参数45
3.2.1 大堆和初始堆的设置46
3.2.2 新生代的配置49
3.2.3 堆溢出处理53
3.3 别让性能有缺口:了解非堆内存的参数配置54
3.3.1 方法区配置55
3.3.2 栈配置55
3.3.3 直接内存配置55
3.4 Client和Server二选一:虚拟机的工作模式58
3.5 小结59
第4章 垃圾回收的概念与算法60
4.1 内存管理清洁工:认识垃圾回收60
4.2 清洁工具大PK:讨论常用的垃圾回收算法61
4.2.1 引用计数法(Reference Counting)62
4.2.2 标记清除法(Mark-Sweep)63
4.2.3 复制算法(Copying)64
4.2.4 标记压缩法(Mark-Compact)66
4.2.5 分代算法(Generational Collecting)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 小结83
第5章 垃圾收集器和内存分配84
5.1 一心一意一件事:串行回收器85
5.1.1 新生代串行回收器85
5.1.2 老年代串行回收器86
5.2 人多力量大:并行回收器86
5.2.1 新生代ParNew回收器87
5.2.2 新生代ParallelGC回收器88
5.2.3 老年代ParallelOldGC回收器89
5.3 一心多用都不落下:CMS回收器(JDK 8及之前的版本)90
5.3.1 CMS主要工作步骤90
5.3.2 CMS主要的参数91
5.3.3 CMS的日志分析93
5.3.4 有关Class的回收94
5.4 未来我做主:G1回收器(JDK 9及之后版本的默认回收器)95
5.4.1 G1的内存划分和主要收集过程95
5.4.2 G1的新生代GC96
5.4.3 G1的并发标记周期97
5.4.4 混合回收100
5.4.5 必要时的Full GC102
5.4.6 G1的日志102
5.4.7 G1相关的参数106
5.5 回眸:有关对象内存分配和回收的一些细节问题106
5.5.1 禁用System.gc()107
5.5.2 System.gc()使用并发回收107
5.5.3 并行GC前额外触发的新生代GC109
5.5.4 对象何时进入老年代109
5.5.5 在TLAB上分配对象117
5.5.6 finalize()函数对垃圾回收的影响120
5.6 温故又知新:常用的GC参数125
5.7 动手才是真英雄:垃圾回收器对Tomcat性能影响的实验127
5.7.1 配置实验环境127
5.7.2 配置性能测试工具JMeter128
5.7.3 配置Web应用服务器Tomcat131
5.7.4 实战案例1—初试串行回收器133
5.7.5 实战案例2—扩大堆以提升系统性能133
5.7.6 实战案例3—调整初始堆大小134
5.7.7 实战案例4—使用ParrellOldGC回收器135
5.7.8 实战案例5—使用较小堆提高GC压力135
5.7.9 实战案例6—测试ParallelOldGC的表现135
5.7.10 实战案例7—测试ParNew回收器的表现136
5.7.11 实战案例8—测试JDK 1.8的表现136
5.7.12 实战案例9—使用高版本虚拟机提升性能137
5.8 小结137
第6章 性能监控工具138
6.1 有我 高效:Linux下的性能监控工具139
6.1.1 显示系统整体资源使用情况—top命令139
6.1.2 监控内存和CPU—vmstat命令140
6.1.3 监控I/O—iostat命令142
6.1.4 多功能诊断器—pidstat工具143
6.2 用我 高效:Windows下的性能监控工具148
6.2.1 任务管理器148
6.2.2 perfmon性能监控工具150
6.2.3 Process Explorer进程管理工具153
6.2.4 pslist命令—Windows下也有命令行工具155
6.3 外科手术刀:JDK性能监控工具157
6.3.1 查看Java进程—jps命令158
6.3.2 查看虚拟机运行时信息—jstat命令159
6.3.3 查看虚拟机参数—jinfo命令162
6.3.4 导出堆到文件—jmap命令163
6.3.5 JDK自带的堆分析工具—jhat命令165
6.3.6 查看线程堆栈—jstack命令168
6.3.7 远程主机信息收集—jstatd命令171
6.3.8 多功能命令行—jcmd命令173
6.3.9 性能统计工具—hprof175
6.3.10 扩展jps命令178
6.4 我是你的眼:图形化虚拟机监控工具JConsole178
6.4.1 JConsole连接Java程序179
6.4.2 Java程序概况180
6.4.3 内存监控180
6.4.4 线程监控181
6.4.5 类加载情况183
6.4.6 虚拟机信息183
6.5 一目了然:可视化性能监控工具Visual VM184
6.5.1 Visual VM连接应用程序185
6.5.2 监控应用程序概况186
6.5.3 Thread Dump和分析187
6.5.4 性能分析188
6.5.5 内存快照分析190
6.5.6 BTrace介绍191
6.6 来自JRockit的礼物:虚拟机诊断工具Mission Control199
6.6.1 MBean服务器199
6.6.2 飞行记录器(Flight Recorder)201
6.7 小结204
第7章 分析Java堆205
7.1 对症才能下药:找到内存溢出的原因206
7.1.1 堆溢出206
7.1.2 直接内存溢出206
7.1.3 过多线程导致OOM208
7.1.4 区溢出210
7.1.5 GC效率低下引起的OOM211
7.2 无处不在的字符串:String在虚拟机中的实现211
7.2.1 String对象的特点211
7.2.2 有关String的内存泄漏213
7.2.3 有关String常量池的位置216
7.3 虚拟机也有内窥镜:使用MAT分析Java堆218
7.3.1 初识MAT218
7.3.2 浅堆和深堆221
7.3.3 MAT堆分析案例解析222
7.3.4 支配树(Dominator Tree)226
7.3.5 Tomcat堆溢出分析227
7.4 筛选堆对象:MAT对OQL的支持231
7.4.1 Select子句231
7.4.2 From子句233
7.4.3 Where子句235
7.4.4 内置对象与方法235
7.5 精彩的查找:Visual VM对OQL的支持240
7.5.1 Visual VM的OQL基本语法240
7.5.2 内置heap对象241
7.5.3 对象函数243
7.5.4 集合/统计函数247
7.5.5 程序化OQL分析Tomcat堆253
7.6 小结256
第8章 锁与并发257
8.1 安全就是锁存在的理由:锁的基本概