图书介绍

Java虚拟机精讲+实战Java虚拟机JVM故障诊断与性能优化java编程2本

  • 店铺: 蓝墨水图书专营店
  • 出版社: 电子工业出版社
  • ISBN:9787121257056
  • 版次:1
  • 上架时间:2015-06-30 10:10:31
  • 商品编码:1617416681

PDF下载

高速下载 普通下载

赞助商链接

图书目录

bm000853
Java虚拟机精讲+实战Java虚拟机 JVM故障诊断与性能优化 java编程2本
9787121257056 9787121256127
1、基本信息
书名:Java虚拟机精讲
定价:¥69.00
作者: 高翔龙
出版社:电子工业出版社
ISBN:9787121257056
上架时间:2015-3-28
出版日期:2015 年5月
开本:16开
页码:280
版次:1-1
编辑推荐
如果你对JVM 感兴趣,并且从未接触过JVM,那么本书将会是你探索JVM世界的必备入门工具。
内容简介
HotSpot VM 是目前市面上高性能JVM 的代表作之一,它采用解释器+JIT 编译器的混合执行引擎,使得Java 程序的执行性能从此有了质的飞跃。本书以极其精练的语句诠释了HotSpot VM 的方方面面,比如:字节码的编译原理、字节码的内部组成结构、通过源码的方式剖析HotSpot VM 的启动过程和初始化过程、Java 虚拟机的运行时内存、垃圾收集算法、垃圾收集器(重点讲解了Serial 收集器、ParNew 收集器、Parallel 收集器、CMS(Concurrent-Mark-Sweep)收集器和G1(Garbage-First)收集器)、类加载机制,以及HotSpot VM 基于栈的架构模型和执行引擎(解释器的工作流程、JIT 编译器的工作流程、分层编译策略、热点探测功能)等技术。
目 录
第 1 章 Java 体系结构.......................................1
1.1 认识 Java................................................1
1.1.1 与生俱来的优点.........................2
1.1.2 语法结构和对象模型..................4
1.1.3 历史版本追溯.............................5
1.2 Java 重要概念.......................................7
1.2.1 Java 编程语言.............................7
1.2.2 字节码.........................................7
1.2.3 Java API.......................................8
1.2.4 Java 虚拟机.................................8
1.3 安装与配置 Java 运行环境..............10
1.3.1 Windows 环境下的安装与
配置...........................................10
1.3.2 Linux 环境下的安装与配置.....11
1.3.3 编写 Java 程序..........................12
1.3.4 编译与运行...............................13
1.3.5 关键字与标示符.......................13
1.4 Java 技术的新特性............................14
1.4.1 Java 模块化与 OSGi 技术........14
1.4.2 语言无关性...............................15
1.4.3 使用 Fork/Join 框架实现多
核并行.......................................16
1.4.4 丰富的语法特性.......................17
1.4.5 过渡到 64 位虚拟机.................18
1.5 实战:玩转 OpenJDK.......................19
1.5.1 JDK 与 OpenJDK 的关系.........19
1.5.2 基于 OpenJDK 深度定制的
淘宝 JVM(TaobaoVM)........20
1.5.3 下载 OpenJDK 源代码.............22
1.5.4 构建编译环境...........................22
1.5.5 执行整个 OpenJDK 的编译.....23
1.5.6 执行单独 HotSpot 的编译........26
1.5.7 导致编译失败的一些疑难
杂症...........................................29
1.5.8 使用 GDB 工具 Debug
HotSpot......................................30
1.6 本章小结..............................................36
第 2 章 字节码的编译原理.............................37
2.1 javac 编译器简介...............................37
2.1.1 javac 与 Eclipse Compiler for
Java 编译器...............................38
2.1.2 javac 的使用与标准选项配置..39
2.1.3 编译原理...................................40
2.1.4 下载 javac 编译器源码.............41
2.1.5 调用 compile()方法执行编译...41
2.2 词法解析步骤.....................................43
2.2.1 Token 序列................................45
2.2.2 源码字符集合与 Token 之间
的对应关系...............................47
2.2.3 调用 key()方法获取指定
Token.........................................48
2.2.4 调用 nextToken()方法计算
Token 的获取规则....................48
2.2.5 调用 parseCompilationUnit()
方法执行词法解析...................49
2.3 语法解析步骤.....................................51
2.3.1 调用 qualident()方法解析
package 语法节点.....................52
2.3.2 调用 importDeclaration()
方法解析 import 语法树...........54
2.3.3 调用 classDeclaration()
方法解析 class 语法树..............56
2.4 语义解析步骤.....................................59
2.5 生成字节码..........................................61
2.6 实战:使用 javap 工具分析
字节码...................................................62
2.7 实战:使用 GCJ 编译器将 Java
源码直接编译为本地机器指令......64
2.8 本章小结..............................................66
第 3 章 字节码文件...........................................67
3.1 字节码文件的内部组成结构...........67
3.2 符号引用..............................................73
3.2.1 类或者接口的全限定名............74
3.2.2 简单名称...................................74
3.2.3 描述符.......................................74
3.3 常量池..................................................76
3.3.1 CONSTANT_Utf8_info
常量项.......................................77
3.3.2 CONSTANT_Integer_info
常量项.......................................77
3.3.3 CONSTANT_Float_info
常量项.......................................78
3.3.4 CONSTANT_Long_info
常量项.......................................78
3.3.5 CONSTANT_Double_info
常量项.......................................79
3.3.6 CONSTANT_Class_info
常量项.......................................79
3.3.7 CONSTANT_String_info
常量项.......................................80
3.3.8 CONSTANT_Fieldref_info
常量项.......................................81
3.3.9 CONSTANT_Methodref_info
常量项.......................................81
3.3.10 CONSTANT_InterfaceMethodref
_info 常量项............................82
3.3.11 CONSTANT_NameAndType
_info 常量项............................82
3.3.12 CONSTANT_MethodHandle
_info 常量项............................83
3.3.13 CONSTANT_MethodType
_info 常量项............................84
3.3.14 CONSTANT_InvokeDynamic
_info 常量项............................84
3.4 字段表..................................................85
3.5 方法表..................................................86
3.6 属性表..................................................88
3.6.1 Code 属性..................................89
3.6.2 ConstantValue 属性..................90
3.6.3 Exceptions 属性........................91
3.6.4 LineNumberTable 属性.............92
3.6.5 SourceFile 属性.........................93
3.6.6 LocalVariableTable 属性..........93
3.6.7 InnerClasses 属性......................94
3.6.8 BootstrapMethods 属性.............95
3.7 本章小结..............................................96
第 4 章 剖析 HotSpot 的 Launcher..............97
4.1 HotSpot 的源码目录结构.................97
4.2 Launcher 简介.....................................99
4.3 跟踪 Launcher 的执行过程............101
4.3.1 使用 Launcher 启动 JVM........101
4.3.2 启动函数 main()......................102
4.3.3 在主线程中执行 JavaMain()
函数.........................................106
4.3.4 调用 JNI_CreateJavaVM()
函数初始化 HotSpot...............114
4.3.5 调用 LoadClass()函数获取
Java 启动类.............................115
4.3.6 调用 GetStaticMethodId()
函数获取 Java 启动方法.........116
4.3.7 调用 CallStaticVoidMethod()
函数执行 Java 启动方法.........116
4.3.8 调用 jni_DestroyJavaVM
函数销毁 HotSpot...................119
4.4 实战:在 Launcher 中添加
自定义函数模块...............................120
4.5 本章小结............................................121
第 5 章 剖析 HotSpot 的初始化过程..........122
5.1 HotSpot 的构成模块........................122
5.2 Prims 模块.........................................124
5.2.1 JNI 子模块...............................124
5.2.2 JVM 子模块............................125
5.2.3 JVMTI 子模块.........................128
5.2.4 Perf 子模块..............................129
5.3 Runtime 模块.....................................129
5.3.1 Thread 子模块.........................131
5.3.2 调用 create_vm()函数完成
HotSpot 的最终初始化...........131
5.4 跟踪 HotSpot 的初始化过程..........140
5.4.1 调用 init()和 init_2()函数
初始化 os 模块........................141
5.4.2 调用 vm_init_globals()函数
初始化全局数据结构.............144
5.4.3 调用 init_globals()函数
初始化全局模块.....................144
5.5 本章小结............................................146
第 6 章 内存分配与垃圾回收.......................147
6.1 JVM 的运行时内存区结构............147
6.2 线程共享内存区..............................148
6.2.1 Java 堆区.................................148
6.2.2 方法区.....................................150
6.2.3 运行时常量池.........................150
6.3 线程私有内存区..............................150
6.3.1 PC 寄存器...............................151
6.3.2 Java 栈.....................................151
6.3.3 本地方法栈.............................152
6.4 性能监控区.......................................152
6.5 自动内存管理...................................152
6.5.1 内存分配原理.........................153
6.5.2 逃逸分析与栈上分配.............157
6.5.3 对象内存布局与 OOP-Klass
模型.........................................158
6.5.4 GC 的作用..............................159
6.5.5 垃圾标记:根搜索算法.........160
6.5.6 垃圾回收:分代收集算法.....161
6.6 垃圾收集器.......................................164
6.6.1 串行回收:Serial 收集器.......165
6.6.2 并行回收:ParNew 收集器...166
6.6.3 程序吞吐量优先:Parallel
收集器.....................................166
6.6.4 低延迟:CMS(Concurrent-
Mark-Sweep)收集器.............167
6.6.5 区域化分代式:G1(Garbage-
First)收集器..........................170
6.6.6 垃圾收集的相关选项配置......172
6.7 实战:GC 日志分析........................175
6.7.1 不同 GC 日志的展示形式......175
6.7.2 使用 GCHisto 工具分析离线
日志.........................................179
6.8 实战:分析 dump 文件...................181
6.8.1 使用 jmap 工具生成 dump
文件.........................................181
6.8.2 使用 MAT(Memory Analyzer
Tool)工具分析 dump 文件...182
6.9 本章小结............................................184
第 7 章 类加载机制.........................................185
7.1 类加载器............................................185
7.1.1 抽象类 ClassLoader.................187
7.1.2 双亲委派模型.........................188
7.1.3 自定义类加载器.....................191
7.1.4 定位 ClassNotFoundException
异常.........................................193
7.1.5 定位 NoClassDefFoundError
异常.........................................194
7.2 类的加载过程...................................195
7.2.1 加载字节码.............................198
7.2.2 验证阶段.................................199
7.2.3 准备阶段.................................200
7.2.4 解析阶段.................................201
7.2.5 初始化阶段.............................201
7.3 实战:字节码文件的加密与
解密.....................................................204
7.4 本章小结............................................208
第 8 章 剖析 HotSpot 的架构模型与
执行引擎.............................................209
8.1 栈帧的组成结构...............................209
8.1.1 局部变量表.............................211
8.1.2 操作数栈.................................212
8.1.3 动态链接.................................214
8.1.4 方法返回值.............................216
8.2 HotSpot 中执行引擎的架构
模型....................................................216
8.2.1 本地机器指令.........................217
8.2.2 寄存器架构与栈式架构之间
的区别.....................................218
8.2.3 基于栈式架构的设计.............221
8.2.4 调用 call_stub()函数执行 Java
方法.........................................222
8.2.5 栈顶缓存(Top-of-Stack Cashing)
技术.........................................225
8.2.6 实战:跟踪字节码解释器的
执行步骤.................................227
8.3 解释器与 JIT 编译器......................230
8.3.1 查阅 HotSpot 的运行时执
行模式.....................................231
8.3.2 解释器的工作机制与构成
模块.........................................232
8.3.3 JIT 编译器的工作机制与
构成模块.................................234
8.3.4 分层编译策略.........................235
8.3.5 热点探测功能.........................236
8.4 本章小结............................................239
附录 A Java7 新增语法特性........................241
A.1 try-with-resources 语句..................241
A.2 泛型的“<>”类型推断运算符...245
A.3 声明二进制字面值.........................247
A.4 字面值下画线支持.........................248
A.5 switch 表达式支持 String 类型....250
A.6 mutil-catch 特性..............................251
A.7 NIO2.0 文件系统的改变...............255
2、基本信息
书名:实战Java虚拟机——JVM故障诊断与性能优化
定价:79.00
作者: 葛一鸣
丛书名: 51CTO学院系列丛书
出版社:电子工业出版社
ISBN:9787121256127
上架时间:2015-3-21
出版日期:2015 年3月
开本:16开
页码:452
版次:1-1
内容简介
随着越来越多的第三方语言(Groovy、Scala、JRuby等)在Java虚拟机上运行,Java也俨然成为一个充满活力的生态圈。本书将通过200余示例详细介绍Java虚拟机中的各种参数配置、故障排查、性能监控以及性能优化。 本书共11章。第1~3章介绍了Java虚拟机的定义、总体架构、常用配置参数。第4~5章介绍了垃圾回收的算法和各种垃圾回收器。第6章介绍了虚拟机的性能监控和故障诊断工具。第7章详细介绍了对Java堆的分析方法和案例。第8章介绍了Java虚拟机对多线程,尤其是锁的支持。第9~10章介绍了虚拟机的核心——Class文件结构,以及虚拟机中类的装载系统。第11章介绍了虚拟机的执行系统和字节码,并给出了通过ASM框架进行字节码注入的案例。
目 录
第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 小结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.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.2 老年代ParallelOldGC回收器89
5.3 一心多用都不落下:CMS回收器90
5.3.1 CMS主要工作步骤90
5.3.2 CMS主要的设置参数91
5.3.3 CMS的日志分析92
5.3.4 有关Class的回收94
5.4 未来我做主:G1回收器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 回眸:有关对象内存分配和回收的一些细节问题107
5.5.1 禁用System.gc()107
5.5.2 System.gc()使用并发回收107
5.5.3 并行GC前额外触发的新生代GC109
5.5.4 对象何时进入老年代110
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.6的表现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 监控IO使用——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命令167
6.3.7 远程主机信息收集——jstatd命令170
6.3.8 多功能命令行——jcmd命令172
6.3.9 性能统计工具——hprof175
6.3.10 扩展jps命令177
6.4 我是你的眼:图形化虚拟机监控工具JConsole178
6.4.1 JConsole连接Java程序178
6.4.2 Java程序概况179
6.4.3 内存监控180
6.4.4 线程监控180
6.4.5 类加载情况182
6.4.6 虚拟机信息182
6.5 一目了然:可视化性能监控工具Visual VM183
6.5.1 Visual VM连接应用程序184
6.5.2 监控应用程序概况185
6.5.3 Thread Dump和分析186
6.5.4 性能分析187
6.5.5 内存快照分析189
6.5.6 BTrace介绍190
6.6 来自JRockit的礼物:虚拟机诊断工具Mission Control198
6.6.1 MBean服务器198
6.6.2 飞机记录器(Flight Recorder)200
6.7 小结203
第7章 分析Java堆204
7.1 对症才能下药:找到内存溢出的原因205
7.1.1 堆溢出205
7.1.2 直接内存溢出205
7.1.3 过多线程导致OOM207
7.1.4 永久区溢出209
7.1.5 GC效率低下引起的OOM210
7.2 无处不在的字符串:String在虚拟机中的实现210
7.2.1 String对象的特点210

查看全部 ↓

精品推荐

天天可领!最高99块!土豪站长12月发红包啦!

关闭
支付宝红包