Java程序性能优化 让你的Java程序更快、更稳定PDF电子书下载
- 电子书积分:13 积分如何计算积分?
- 作 者:葛一鸣等编著
- 出 版 社:北京:清华大学出版社
- 出版年份:2012
- ISBN:9787302296256
- 页数:400 页
第1章Java性能调优概述 1
1.1性能概述 1
1.1.1看懂程序的性能 1
1.1.2性能的参考指标 2
1.1.3木桶原理与性能瓶颈 2
1.1.4 Amdahl定律 3
1.2性能调优的层次 5
1.2.1设计调优 5
1.2.2代码调优 5
1.2.3 JVM调优 6
1.2.4数据库调优 6
1.2.5操作系统调优 6
1.3基本调优策略和手段 7
1.3.1优化的一般步骤 7
1.3.2系统优化注意事项 8
1.4小结 8
第2章 设计优化 10
2.1善用设计模式 10
2.1.1单例模式 10
2.1.2代理模式 15
2.1.3享元模式 24
2.1.4装饰者模式 27
2.1.5观察者模式 33
2.1.6 Value Object模式 37
2.1.7业务代理模式 40
2.2常用优化组件和方法 43
2.2.1缓冲(Buffer) 43
2.2.2缓存(Cache) 46
2.2.3对象复用——“池” 50
2.2.4并行替代串行 56
2.2.5负载均衡 56
2.2.6时间换空间 62
2.2.7空间换时间 63
2.3小结 65
第3章Java程序优化 66
3.1字符串优化处理 66
3.1.1 String对象及其特点 66
3.1.2 subString()方法的内存泄漏 68
3.1.3字符串分割和查找 71
3.1.4 StringBuffer和StringBuilder 74
3.2核心数据结构 79
3.2.1 List接口 79
3.2.2 Map接口 86
3.2.3 Set接口 97
3.2.4优化集合访问代码 99
3.2.5 RandomAccess接口 101
3.3使用NIO提升性能 102
3.3.1 NIO的Buffer类族和Channel 103
3.3.2 Buffer的基本原理 104
3.3.3 Buffer的相关操作 107
3.3.4 MappedByteBuffer性能评估 114
3.3.5直接内存访问 116
3.4引用类型 118
3.4.1强引用 119
3.4.2软引用 120
3.4.3弱引用 121
3.4.4虚引用 122
3.4.5 WeakHashMap类及其实现 125
3.5有助于改善性能的技巧 127
3.5.1慎用异常 127
3.5.2使用局部变量 128
3.5.3位运算代替乘除法 128
3.5.4替换switch 129
3.5.5一维数组代替二维数组 130
3.5.6提取表达式 131
3.5.7展开循环 132
3.5.8布尔运算代替位运算 133
3.5.9使用arrayCopy() 134
3.5.10使用Buffer进行I/O操作 135
3.5.11使用clone()代替new 137
3.5.12静态方法替代实例方法 139
3.6小结 140
第4章 并行程序开发及优化 141
4.1并行程序设计模式 141
4.1.1 Future模式 141
4.1.2 Master-Worker模式 148
4.1.3 Guarded Suspension模式 153
4.1.4不变模式 160
4.1.5生产者-消费者模式 162
4.2 JDK多任务执行框架 166
4.2.1无限制线程的缺陷 166
4.2.2简单的线程池实现 167
4.2.3 Executor框架 171
4.2.4自定义线程池 173
4.2.5优化线程池大小 177
4.2.6扩展ThreadPoolExecutor 178
4.3 JDK并发数据结构 179
4.3.1并发List 179
4.3.2并发Set 182
4.3.3并发Map 182
4.3.4并发Queue 183
4.3.5并发Deque 186
4.4并发控制方法 187
4.4.1 Java内存模型与volatile 187
4.4.2同步关键字synchronized 190
4.4.3 ReentrantLock重入锁 192
4.4.4 ReadWriteLock读写锁 195
4.4.5 Condition对象 196
4.4.6 Semaphore信号量 198
4.4.7 ThreadLocal线程局部变量 200
4.5“锁”的性能和优化 201
4.5.1线程的开销 201
4.5.2避免死锁 202
4.5.3减小锁持有时间 206
4.5.4减小锁粒度 207
4.5.5读写分离锁来替换独占锁 208
4.5.6锁分离 209
4.5.7重入锁和内部锁 210
4.5.8锁粗化 211
4.5.9自旋锁 212
4.5.10锁消除 212
4.5.11锁偏向 214
4.6无锁的并行计算 214
4.6.1非阻塞的同步/无锁 214
4.6.2原子操作 215
4.6.3 Amino框架介绍 217
4.6.4 Amino集合 218
4.6.5 Amino树 222
4.6.6 Amino图 222
4.6.7 Amino简单调度模式 223
4.7协程 226
4.7.1协程的概念 226
4.7.2 Kilim框架简介 226
4.7.3 Task及其状态 227
4.7.4 Fiber及其状态 228
4.7.5 Kilim开发环境配置 228
4.7.6 Kilim之Hello World 230
4.7.7多任务通信 232
4.7.8 Kilim实例及性能评估 233
4.8小结 236
第5章JVM调优 237
5.1 Java虚拟机内存模型 237
5.1.1程序计数器 237
5.1.2 Java虚拟机栈 238
5.1.3本地方法栈 243
5.1.4 Java堆 244
5.1.5方法区 245
5.2 JVM内存分配参数 249
5.2.1设置最大堆内存 249
5.2.2设置最小堆内存 250
5.2.3设置新生代 251
5.2.4设置持久代 252
5.2.5设置线程栈 253
5.2.6堆的比例分配 254
5.2.7堆分配参数总结 256
5.3垃圾收集基础 257
5.3.1垃圾收集的作用 257
5.3.2垃圾回收算法与思想 258
5.3.3垃圾收集器的类型 262
5.3.4评价GC策略的指标 263
5.3.5新生代串行收集器 264
5.3.6老年代串行收集器 265
5.3.7并行收集器 265
5.3.8新生代并行回收(Parallel Scavenge)收集器 266
5.3.9老年代并行回收收集器 267
5.3.10 CMS收集器 267
5.3.11 G1收集器(Garbage First) 270
5.3.12 Stop the World案例 270
5.3.13收集器对系统性能的影响 272
5.3.14 GC相关参数总结 273
5.4常用调优案例和方法 275
5.4.1将新对象预留在新生代 275
5.4.2大对象进入老年代 278
5.4.3设置对象进入老年代的年龄 279
5.4.4稳定与震荡的堆大小 280
5.4.5吞吐量优先案例 281
5.4.6使用大页案例 282
5.4.7降低停顿案例 282
5.5实用JVM参数 283
5.5.1 JIT编译参数 283
5.5.2堆快照(堆Dump) 284
5.5.3错误处理 285
5.5.4取得GC信息 285
5.5.5类和对象跟踪 287
5.5.6控制GC 288
5.5.7选择类校验器 289
5.5.8 Solaris下线程控制 289
5.5.9使用大页 289
5.5.10压缩指针 289
5.6实战JVM调优 290
5.6.1 Tomcat简介与启动加速 290
5.6.2 Web应用程序介绍 292
5.6.3 JMeter介绍与使用 293
5.6.4调优前Web应用运行状况 296
5.6.5调优过程 297
5.7总结 298
第6章Java性能调优工具 299
6.1 Linux命令行工具 299
6.1.1 top命令 299
6.1.2 sar命令 301
6.1.3 vmstat命令 302
6.1.4 iostat命令 304
6.1.5 pidstat工具 305
6.2 Windows工具 309
6.2.1任务管理器 309
6.2.2 perfmon性能监控工具 311
6.2.3 Process Explorer 313
6.2.4 pslist命令行 315
6.3 JDK命令行工具 317
6.3.1 jps命令 317
6.3.2 jstat命令 318
6.3.3 jinfo命令 322
6.3.4 j map命令 323
6.3.5 jhat命令 324
6.3.6 jstack命令 326
6.3.7 jstatd命令 329
6.3.8 hprof工具 330
6.4 JConsole工具 332
6.4.1 JConsole连接Java程序 332
6.4.2 Java程序概况 333
6.4.3内存监控 333
6.4.4线程监控 335
6.4.5类加载情况 335
6.4.6虚拟机信息 336
6.4.7 MBean管理 337
6.4.8使用插件 338
6.5 Visual VM多合一工具 339
6.5.1 Visual VM连接应用程序 339
6.5.2监控应用程序概况 342
6.5.3 Thread Dump和分析 343
6.5.4性能分析 344
6.5.5快照 346
6.5.6内存快照分析 347
6.5.7 MBean管理 349
6.5.8 TDA使用 349
6.5.9 BTrace介绍 350
6.6 Visual VM对OQL的支持 356
6.6.1 Visual VM的OQL基本语法 356
6.6.2内置heap对象 357
6.6.3对象函数 359
6.6.4集合/统计函数 362
6.6.5程序化OQL 366
6.7 MAT内存分析工具 368
6.7.1初识MAT 368
6.7.2浅堆和深堆 371
6.7.3支配树(Dominator Tree) 374
6.7.4垃圾回收根 375
6.7.5内存泄露检测 376
6.7.6最大对象报告 378
6.7.7查找支配者 378
6.7.8线程分析 379
6.7.9集合使用情况分析 380
6.7.10扩展MAT 381
6.8 MAT对OQL的支持 385
6.8.1 Select子句 385
6.8.2 From子句 387
6.8.3 Where子句 389
6.8.4内置对象与方法 389
6.9 JProfile简介 393
6.9.1 JProfile使用配置 393
6.9.2内存视图 394
6.9.3堆快照 394
6.9.4 CPU视图 395
6.9.5线程视图 397
6.9.6 JVM统计信息 397
6.9.7触发器 398
6.10小结 400
- 《联吡啶基钌光敏染料的结构与性能的理论研究》李明霞 2019
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《高等学校“十三五”规划教材 C语言程序设计》翟玉峰责任编辑;(中国)李聪,曾志华,江伟 2019
- 《改革进程中的刑事诉讼程序与证据问题研究 基于警察的视角》谢波 2019
- 《Java程序设计基础》罗刚 2018
- 《C++程序设计实验指导 第2版》张潇责任编辑;孟桂娥 2019
- 《NiFe2O4基惰性阳极材料的烧结行为及应用性能》杜金晶,王斌著 2019
- 《并行数据挖掘及性能优化》荀亚玲著 2020
- 《C程序设计教程 第3版》林小茶,陈昕 2018
- 《Java语言程序设计教程》胡光 2018
- 《断陷湖盆比较沉积学与油气储层》赵永胜等著 1996
- 《市政工程基础》杨岚编著 2009
- 《家畜百宝 猪、牛、羊、鸡的综合利用》山西省商业厅组织技术处编著 1959
- 《《道德经》200句》崇贤书院编著 2018
- 《高级英语阅读与听说教程》刘秀梅编著 2019
- 《计算机网络与通信基础》谢雨飞,田启川编著 2019
- 《看图自学吉他弹唱教程》陈飞编著 2019
- 《法语词汇认知联想记忆法》刘莲编著 2020
- 《培智学校义务教育实验教科书教师教学用书 生活适应 二年级 上》人民教育出版社,课程教材研究所,特殊教育课程教材研究中心编著 2019
- 《国家社科基金项目申报规范 技巧与案例 第3版 2020》文传浩,夏宇编著 2019
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《大学生心理健康与人生发展》王琳责任编辑;(中国)肖宇 2019
- 《大学英语四级考试全真试题 标准模拟 四级》汪开虎主编 2012
- 《大学英语教学的跨文化交际视角研究与创新发展》许丽云,刘枫,尚利明著 2020
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《复旦大学新闻学院教授学术丛书 新闻实务随想录》刘海贵 2019
- 《大学英语综合教程 1》王佃春,骆敏主编 2015
- 《大学物理简明教程 下 第2版》施卫主编 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019