所有分类
  • 所有分类
  • 机械工业
  • 人民邮电
  • 清华大学
  • 电子工业

Java深度调试技术 PDF下载

Java深度调试技术 PDF下载插图

Java深度调试技术封面

Java深度调试技术 PDF下载插图1

Java深度调试技术书签

作者: 张民卫
出版社: 北京大学出版社
出版年: 2020-8
页数: 376
定价: 89.00
ISBN: 9787301313602

内容简介
“采用Java开发的大型应用系统越来越大、越来越复杂;很多系统甚至是将很多第三方系统集成在一起,整个系统看起来像一个黑盒子。系统运行遭遇问题(系统停止响应,运行越来越慢,或者性能低下,甚至系统core dump),如何迅速命中问题的根本原因是颇具挑战性的任务。 特别的是,有些非功能性的问题只能在生产环境上重现,而生产环境不允许停机维护,这给问题的定位带来巨大的困难。这类问题的定位技巧是本书介绍的重点,借助这些技巧可以快速 找到这些问题的突破口。

本书共有15章,包括Java线程堆栈分析、性能瓶颈分析、内存泄露分析、并发和多线程、幽灵代码、常见Java泥潭、JVM、字符集与编码、常用问题定位工具、Java实践等内容。本书适合Java高级程序员和系统构架师阅读。”

目录
第1章 Java 线程堆栈分析 1
1.1 打印线程堆栈 3
1.2 解读线程堆栈 4
1.3 线程堆栈分析的三个视角 24
1.3 借助线程堆栈进行问题分析 26
第2章 通过Java线程堆栈进行性能瓶颈分析 43
2.1 基本原理分析 44
2.2 常见的性能瓶颈问题 50
2.3 性能瓶颈分析的手段和工具 51
2.4 性能分析的手段总结 59
第3章 Java内存泄漏分析和堆内存设置 62
3.1 Java内存泄漏的背景知识 63
3.2 Java内存泄漏的症状 81
3.3 Java内存泄漏的定位和分析 83
3.4 Java堆内存泄漏的解决 92
3.5 Java内存和垃圾的回收设置 94
第4章 关于并发和多线程 102
4.1 在什么情况下需要加锁 103
4.2 如何加锁 104
4.3 多线程编程易犯的错误 106
4.4 i++这种原子操作是否需要同步保护 107
4.5 一个进程拥有的线程多,是否就可以获得更多的 CPU 107
4.6 合理设置线程的数量 107
4.7 关于线程池 109
4.8 notify和wait的组合 109
4.9 线程的阻塞 113
4.10 Java线程的优先级 115
4.11 关于多线程的错误观点 115
第5章 幽灵代码 116
5.1 由异常而导致的函数非自主退出 117
5.2 wait()与循环 123
5.3 Double-Checked Locking单例模式 124
5.4 另一种异常陷阱——连续的关键接口调用 125
第6章 常见的Java陷阱 127
6.1 不稳定的Runtime、getRuntime()、exec() 128
6.2 JDK自带Timer的适用场合 140
6.3 JDK自带线程池的陷阱 146
6.4 Timer的使用陷阱 146
第7章 关于数据库 147
7.1 关于数据库表死锁与锁表的问题 148
7.2 Oracle的锁表/死锁 151
7.3 使用事务的方法 153
第8章 字符集与编码 154
8.1 字符集 155
8.2 编码 155
8.3 编码的识别 157
8.4 关于编码的转换 158
第9章 JVM运行参数解析 160
9.1 Java 运行期参数 161
9.2 Java -X扩展运行参数 167
9.3 关于即时编译器(JIT) 171
9.4 -Xrunhprof 172
9.5 正确的视角看虚拟机 180
第10章 常用的问题定位工具 181
10.1 远程调试 182
10.2 UNIX下的进行分析利器 proc 182
10.3 UNIX的进程统计工具 prstat 187
10.4 UNIX的剖析工具 188
10.5 路由跟踪命令traceroute/tracert 188
10.6 swap交换分区管理 189
10.7 文件类型/符号表 189
10.8 Windows的相关工具 189
第11章 计算架构与存储架构 191
11.1 计算架构——基于无状态的设计 192
11.2 存储架构——数据分片 196
11.3 存储架构的总结 199
11.4 其他架构的设计建议 200
第12章 项目生命周期与框架、语言、开源选择 202
12.1 以项目时间尺度衡量开发语言的选择 203
12.2 以项目时间尺度衡量开发框架的使用策略 204
12.3 以项目时间尺度衡量开源的选择 205
第13章 设计“工业强度”的软件系统 207
13.1 长期运行能力的构建 208
13.2 瞬时峰值/过载的应对能力构建 208
13.3 池的合理设计 210
13.4 消息系统的设计模型和关键点 215
第14章 工程实践 221
14.1 关于高端机器的系统部署 222
14.2 关于物理机与虚拟化 222
14.3 关于Java进程监控 223
14.4 关于class Loader 223
14.5 关于负载控制 224
14.6 关于机器设置多个IP的原理 225
14.7 关于日志 225
14.8 异常处理的原则 228
14.9 基于限制的系统部署 / 设计 228
14.10 String的值不能改变的原因 229
14.11 系统出现问题时需要收集的信息 229
14.12 Web Failover集群的方案 229
14.13 关于可靠性设计 232
14.14 实现JVM Shutdown钩子函数 232
14.15 截取输出流 233
14.16 将Linux进程绑定在特定的 CPU 上运行 234
14.17 关于Java和C++的互通 234
第15章 常见的案例 236
15.1 太多打开的文件 237
15.2 java.lang.StackOverflflowError 239
15.3 java.net.SocketException: Broken pipe 240
15.4 HashMap的ConcurrentModiftcationException 241
15.5 多线程场合下HashMap导致的无限死循环 242
15.6 Web系统吊死(挂死)的定位思路 245
15.7 基于消息系统(如SIP)吊死的定位思路 247
15.8 多线程读/写Socket导致的数据混乱 247
15.9 CPU 使用率过高问题的定位思路 248
15.10 系统运行越来越慢的定位思路 251
15.11 系统挂死问题的定位思路 252
15.12 关于线程死亡/线程跑飞 253
15.13 关于虚拟机core dump 255
15.14 系统运行越来越慢问题的定位思路 257
15.15 代码GC导致的性能低下 257
15.16 连接池耗尽 259
15.17 更改系统时间导致的系统无法正常工作 260
15.18 瞬间内存泄漏的定位思路 261
15.19 第三方系统能力分析 262
15.20 系统性能过低 264
15.21 未捕获的异常导致数据库锁表,全系统连锁宕机 267
15.22 单机内存泄漏导致数据库锁表,全系统连锁宕机 268
15.23 AIX下CPU使用率被100%占用的定位思路 270
15.24 Linux下提高UDP吞吐量 270
15.25 TIME_WAIT状态下连接不能及时释放 270
15.26 由SAN存储链路问题引起的应用层白屏 272
附录A JProfiler内存泄漏的精确定位 275
附录B SUN JDK自带故障定位 280
附B.1 SUN JDK命令行选项 280
附B.2 诊断工具的详细介绍 282
附B.3 内存泄漏问题的定位 317
附B.4 系统崩溃的定位方法 327
附B.5 致命错误日志 335
附录C Solaris下查找占用指定的端口的进程 351
附录D 如何在solaris下分析I/O瓶颈 352
附录E AIX下32位进程的最大内存占有情况 353
附录F 关于TCP/IP 354
附录G Windows 2003/Windows XP下一个端口多个监听 355
附录G 在 Windows 2003/Windows XP下一个端口多个监听 356
附录H Suse 9.0下线程创建的数量和堆内存/永久内存的关系 357
附录I JConsole 358
附录J Gcviewer 359
附录K IBM JDK下定位引起core dump的JIT方法 360
附录L 一份简短的Java编程规范 361
参考文献 363

资源下载此资源下载价格为3积分点击检测网盘有效后购买,VIP免费
客服QQ:3599229794
资源下载
下载价格3 积分
客服QQ:3599229794
0

评论0

请先

显示验证码
没有账号? 注册  忘记密码?