《Java程序性能优化实战》葛一鸣 | PDF下载|ePub下载
Java程序性能优化实战 版权信息
- 出版社:机械工业出版社
- 出版时间:2020-12-01
- ISBN:9787111669432
- 条形码:9787111669432 ; 978-7-111-66943-2
Java程序性能优化实战 本书特色
资深程序员深度分享Java程序性能优化的宝贵经验,从软件设计、编码和JVM等维度阐述性能优化的方法和技巧
Java程序性能优化实战 内容简介
本书以Java性能调优为主线,系统地阐述了与Java性能优化相关的知识与技巧。本书共6章,先后从软件设计、软件编码、JVM调优及程序故障排除等方面介绍针对Java程序的优化方法。章介绍性能的基本概念、木桶原理与Amdahl定律、系统调优的过程和注意事项;第2章从设计层面介绍与性能相关的设计模式及常用优化组件;第3章从代码层面介绍如何编写高性能的Java程序;第4章介绍并进行开发和如何通过多线程提高系统性能;第5章立足于JVM虚拟机层面,介绍如何通过设置合理的JVM参数提升Java程序的性能;第6章为工具篇,介绍了获取和监控程序或系统性能指标的各种工具,包括相关的故障排查工具。本书适合所有Java程序员、软件设计师、架构师及软件开发爱好者,对于有一定经验的Java工程师,本书更能帮助他突破技术瓶颈,深入Java内核开发!
Java程序性能优化实战 目录
前言 第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 代码调优 6 1.2.3 JVM调优 6 1.2.4 数据库调优 6 1.2.5 操作系统调优 7 1.3 基本调优策略和手段 7 1.3.1 优化的一般步骤 8 1.3.2 系统优化的注意事项 8 1.4 小结 9 第2章 设计优化 10 2.1 善用设计模式 10 2.1.1 单例模式 10 2.1.2 代理模式 15 2.1.3 享元模式 24 2.1.4 装饰者模式 28 2.1.5 观察者模式 34 2.1.6 值对象模式 38 2.1.7 业务代理模式 41 2.2 常用的优化组件和方法 44 2.2.1 缓冲 44 2.2.2 缓存 47 2.2.3 对象复用–池 51 2.2.4 并行替代串行 58 2.2.5 负载均衡 58 2.2.6 时间换空间 63 2.2.7 空间换时间 64 2.3 小结 66 第3章 Java程序优化 67 3.1 字符串优化处理 67 3.1.1 String对象及其特点 67 3.1.2 substring()方法的内存泄漏 69 3.1.3 字符串分割和查找 72 3.1.4 StringBuffer和StringBuilder 76 3.1.5 CompactStrings优化字符串存储 80 3.2 核心数据结构 81 3.2.1 List接口 81 3.2.2 Map接口 88 3.2.3 Set接口 100 3.2.4 优化集合访问代码 101 3.2.5 RandomAccess接口 103 3.3 使用NIO提升性能 105 3.3.1 NIO中的Buffer类族和Channel 106 3.3.2 Buffer的基本原理 107 3.3.3 Buffer的相关操作 109 3.3.4 MappedByteBuffer性能评估 116 3.3.5 直接访问内存 119 3.4 引用类型 121 3.4.1 强引用 121 3.4.2 软引用 122 3.4.3 弱引用 123 3.4.4 虚引用 124 3.4.5 WeakHashMap类及其实现 127 3.5 性能测试工具JMH 129 3.5.1 JMH之Hello World 130 3.5.2 JMH之指定测量模式 131 3.5.3 JMH之对象作用域 134 3.5.4 JMH之代码消除 135 3.6 有助于改善性能的技巧 137 3.6.1 使用局部变量 137 3.6.2 位运算代替乘除法 138 3.6.3 替换switch 139 3.6.4 一维数组代替二维数组 141 3.6.5 提取表达式 142 3.6.6 展开循环 143 3.6.7 布尔运算代替位运算 144 3.6.8 使用arrayCopy() 145 3.6.9 使用Buffer进行I/O操作 147 3.6.10 使用clone()代替new 149 3.6.11 慎用Java函数式编程 151 3.7 小结 152 第4章 并行程序开发及优化 153 4.1 并行程序设计模式 153 4.1.1 Future模式 153 4.1.2 Master-Worker模式 161 4.1.3 Guarded Suspension模式 165 4.1.4 不变模式 172 4.1.5 生产者-消费者模式 174 4.2 JDK多任务执行框架 178 4.2.1 无限制线程的缺陷 178 4.2.2 简单的线程池实现 179 4.2.3 Executor框架 183 4.2.4 自定义线程池 185 4.2.5 优化线程池大小 189 4.2.6 扩展ThreadPoolExecutor 189 4.3 JDK并发数据结构 191 4.3.1 并发List 191 4.3.2 并发Set 193 4.3.3 并发Map 194 4.3.4 并发Queue 195 4.3.5 并发Deque 197 4.4 并发控制方法 199 4.4.1 Java内存模型与volatile 199 4.4.2 同步关键字synchronized 203 4.4.3 重入锁 205 4.4.4 读写锁 207 4.4.5 读写锁的改进:StampedLock 209 4.4.6 Condition对象 210 4.4.7 信号量 212 4.4.8 线程局部变量ThreadLocal 214 4.5 锁的性能和优化 215 4.5.1 线程的开销 215 4.5.2 避免死锁 215 4.5.3 减少锁持有时间 219 4.5.4 减小锁粒度 220 4.5.5 读写分离锁来替换独占锁 221 4.5.6 锁分离 222 4.5.7 重入锁和内部锁 224 4.5.8 锁粗化 224 4.5.9 自旋锁 226 4.5.10 锁消除 226 4.5.11 锁偏向 227 4.6 无锁的并行计算 228 4.6.1 非阻塞的同步/无锁 228 4.6.2 原子操作 228 4.6.3 Amino框架简介 231 4.6.4 Amino集合 231 4.6.5 Amino树 236 4.6.6 Amino图 237 4.6.7 Amino简单调度模式 238 4.7 协程 240 4.7.1 协程的概念 240 4.7.2 Kilim框架简介 241 4.7.3 Task及其状态 242 4.7.4 Fiber及其状态 242 4.7.5 Kilim开发环境配置 243 4.7.6 Kilim之Hello World 244 4.7.7 多任务通信 246 4.7.8 Kilim实例及性能评估 247 4.8 小结 250 第5章 JVM调优 251 5.1 Java虚拟机内存模型 251 5.1.1 程序计数器 251 5.1.2 Java虚拟机栈 252 5.1.3 本地方法栈 258 5.1.4 Java堆 258 5.1.5 方法区 260 5.2 JVM内存分配参数 263 5.2.1 设置*大堆内存 264 5.2.2 设置*小堆内存 264 5.
Java程序性能优化实战 作者简介
葛一鸣,51CTO特约讲师,国家认证系统分析师,获得Oracle OCP认证。长期从事、Java软件开发工作,对Java程序设计、JVM有深入的研究,对设计模式、人工智能、神经网络、数据挖掘等技术有浓厚兴趣,著有《自己动手写神经网路》电子书,也开设了在线的《深入浅出Java虚拟机――入门篇》培训课程,有问题可联系作者个人博客www.uucode.net。