通读《大话Java性能优化》后,读者可以深入了解Java性能调优的许多主题及相关的综合性知识。读者也可以把《大话Java性能优化》作为参考,对于感兴趣的主题,直接跳到相应章节寻找答案。
总的来说,性能调优在很大程度上是一门艺术,解决的Java性能问题越多,技艺才会越精湛。我们不仅要关心JVM的持续演进,也要积极地去了解底层的硬件平台和操作系统的进步。
1、语言通俗易懂,引人入胜@b@2、系统介绍系统调优的解决思路和技术实现@b@3、结合大家最为熟知的12306、电商等案例@b@4、涉及内存、IO等各种问题,提供丰富的经验参考@b@5、架构、设计、开发、算法等多层次多角度思路和策略@b@大话Java性能优化pdf目录介绍@b@第1章 性能调优策略概述 1@b@1.1 为什么需要调优 1@b@1.2 性能优化的参考因素 5@b@1.2.1 传统计算机体系的分歧 5@b@1.2.2 导致系统瓶颈的计算资源 7@b@1.2.3 程序性能衡量指标 8@b@1.2.4 性能优化目标 9@b@1.2.5 性能优化策略 10@b@1.3 性能调优分类方法 11@b@1.3.1 业务方面 12@b@1.3.2 基础技术方面 12@b@1.3.3 组件方面 17@b@1.3.4 架构方面 19@b@1.3.5 层次方面 20@b@1.4 本章小结 21@b@第2章 优化前的准备知识 22@b@2.1 服务器知识 23@b@2.1.1 内存 23@b@2.1.2 GPU/CPU 44@b@2.1.3 硬盘 49@b@2.1.4 网络架构 51@b@2.2 新兴技术 53@b@第3章 Java API调用优化建议 54@b@3.1 面向对象及基础类型 55@b@3.1.1 采用Clone()方式创建对象 55@b@3.1.2 避免对boolean判断 55@b@3.1.3 多用条件操作符 56@b@3.1.4 静态方法代替实例方法 56@b@3.1.5 有条件地使用final关键字 58@b@3.1.6 避免不需要的instanceof操作 58@b@3.1.7 避免子类中存在父类转换 59@b@3.1.8 建议多使用局部变量 60@b@3.1.9 运算效率最高的方式——位运算 60@b@3.1.10 用一维数组代替二维数组 62@b@3.1.11 布尔运算代替位运算 64@b@3.1.12 提取表达式优化 65@b@3.1.13 不要总是使用取反操作符(!) 66@b@3.1.14 不要重复初始化变量 66@b@3.1.15 变量初始化过程思考 66@b@3.1.16 对象的创建、访问过程 69@b@3.1.17 在switch语句中使用字符串 70@b@3.1.18 数值字面量的改进 73@b@3.1.19 优化变长参数的方法调用 74@b@3.1.20 针对基本数据类型的优化 75@b@3.1.21 空变量 76@b@3.2 集合类概念 77@b@3.2.1 快速删除List里面的数据 78@b@3.2.2 集合内部避免返回null 80@b@3.2.3 ArrayList、LinkedList比较 82@b@3.2.4 Vector、HashTable比较 85@b@3.2.5 HashMap使用经验 87@b@3.2.6 EnumSet、EnumMap 91@b@3.2.7 HashSet使用经验 92@b@3.2.8 LinkedHashMap、TreeMap比较 96@b@3.2.9 集合处理优化新方案 99@b@3.2.10 优先考虑并行计算 107@b@3.3 字符串概念 108@b@3.3.1 String对象 108@b@3.3.2 善用String对象的SubString方法 111@b@3.3.3 用charat()代替startswith() 113@b@3.3.4 在字符串相加的时候,使用' '代替" " 114@b@3.3.5 字符串切割 114@b@3.3.6 字符串重编码 117@b@3.3.7 合并字符串 118@b@3.3.8 正则表达式不是万能的 122@b@3.4 引用类型概念 123@b@3.4.1 强引用(Strong Reference) 126@b@3.4.2 软引用(Soft Reference) 131@b@3.4.3 弱引用(Weak Reference) 135@b@3.4.4 引用队列 141@b@3.4.5 虚引用(Phantom Reference) 142@b@3.5 其他相关概念 146@b@3.5.1 JNI技术提升 146@b@3.5.2 异常捕获机制 150@b@3.5.3 ExceptionUtils类 154@b@3.5.4 循环技巧 155@b@3.5.5 替换switch 157@b@3.5.6 优化循环 158@b@3.5.7 使用arrayCopy() 159@b@3.5.8 使用Buffer进行I/O操作 161@b@3.5.9 使用clone()代替new 164@b@3.5.10 I/O速度 166@b@3.5.11 Finally方法里面释放或者关闭资源占用 167@b@3.5.12 资源管理机制 167@b@3.5.13 牺牲CPU时间 169@b@3.5.14 对象操作 172@b@3.5.15 正则表达式 172@b@3.5.16 压缩文件处理 174@b@3.6 本章小结 175@b@第4章 程序设计优化建议 176@b@4.1 算法优化概述 176@b@4.1.1 常用算法逻辑描述 177@b@4.1.2 多核算法优化原理 186@b@4.1.3 Java算法优化实践 188@b@4.2 设计模式 196@b@4.2.1 设计模式的六大准则 196@b@4.2.2 单一对象控制 200@b@4.2.3 并行程序设计模式 202@b@4.2.4 接口适配 205@b@4.2.5 访问方式隔离 219@b@4.3 I/O及网络相关优化 225@b@4.3.1 I/O操作优化 225@b@4.3.2 Socket编程 231@b@4.3.3 NIO2.0文件系统 235@b@4.4 数据应用优化 236@b@4.4.1 关系型数据库优化 236@b@4.4.2 向HBase插入大量数据 240@b@4.4.3 解决海量数据缓存 251@b@4.5 其他优化 256@b@4.5.1 Web系统性能优化建议 256@b@4.5.2 死锁情况解决方案 259@b@4.5.3 JavaBeans组件 268@b@4.6 本章小结 269@b@第5章 Java并行程序优化建议 270@b@5.1 并行程序优化概述 270@b@5.1.1 资源限制带来的挑战 271@b@5.1.2 进程、线程、协程 272@b@5.1.3 使用多线程的原因 281@b@5.1.4 线程不安全范例 282@b@5.1.5 重排序机制 284@b@5.1.6 实例变量的数据共享 286@b@5.1.7 生产者与消费者模式 288@b@5.1.8 线程池的使用 290@b@5.2 锁机制对比 296@b@5.2.1 锁机制概述 296@b@5.2.2 Synchronized使用技巧 298@b@5.2.3 Volatile的使用技巧 303@b@5.2.4 队列同步器 304@b@5.2.5 可重入锁 307@b@5.2.6 读写锁 308@b@5.2.7 偏向锁和轻量级锁 309@b@5.3 增加程序并行性 310@b@5.3.1 并发计数器 311@b@5.3.2 减少上下文切换次数 312@b@5.3.3 针对Thread类的更新 314@b@5.3.4 Fork/Join框架 314@b@5.3.5 Executor框架 318@b@5.4 jdk类库使用 319@b@5.4.1 原子值 320@b@5.4.2 并行容器 324@b@5.4.3 非阻塞队列 332@b@5.4.4 阻塞队列 338@b@5.4.5 并发工具类 365@b@5.5 本章小结 376@b@第6章 JVM性能测试及监控 377@b@6.1 监控计算机设备层 378@b@6.1.1 监控CPU 380@b@6.1.2 监控内存 405@b@6.1.3 监控磁盘 417@b@6.1.4 监控网络 423@b@6.2 监控JVM活动 428@b@6.2.1 监控垃圾收集目的 429@b@6.2.2 GC垃圾回收报告分析 430@b@6.2.3 图形化工具 431@b@6.2.4 GC跟踪示例 437@b@6.3 本章小结 438@b@第7章 JVM性能调优建议 439@b@7.1 JVM相关概念 439@b@7.1.1 内存使用相关概念 440@b@7.1.2 字节码相关知识 443@b@7.1.3 自动内存管理 448@b@7.2 JVM系统架构 451@b@7.2.1 JVM的基本架构 451@b@7.2.2 JVM初始化过程 453@b@7.2.3 JVM架构模型与执行引擎 456@b@7.2.4 解释器与JIT编译器 456@b@7.2.5 类加载机制 457@b@7.2.6 虚拟机 458@b@7.3 垃圾回收机制相关 459@b@7.3.1 GC相关概念 459@b@7.3.2 垃圾回收算法 468@b@7.3.3 垃圾收集器 476@b@7.4 实用JVM实验 490@b@7.4.1 将新对象预留在年轻代 490@b@7.4.2 大对象进入年老代 494@b@7.4.3 设置对象进入年老代的年龄 495@b@7.4.4 稳定与震荡的堆大小 497@b@7.4.5 吞吐量优先案例 498@b@7.4.6 使用大页案例 499@b@7.4.7 降低停顿案例 499@b@7.4.8 设置最大堆内存 499@b@7.4.9 设置最小堆内存 500@b@7.4.10 设置年轻代 503@b@7.4.11 设置持久代 504@b@7.4.12 设置线程栈 504@b@7.4.13 堆的比例分配 505@b@7.4.14 堆分配参数总结 508@b@7.4.15 垃圾回收器相关参数总结 509@b@7.4.16 查询GC命令 515@b@7.5 本章小结 515@b@第8章 其他优化建议 516@b@8.1 Java现有机制及未来发展 516@b@8.1.1 Java体系结构变化历史 516@b@8.1.2 Java语言面临的挑战 520@b@8.1.3 Java8的新特性 522@b@8.1.4 Java语言前景 523@b@8.1.5 物联网:Java和你是一对 524@b@8.1.6 Java模块化发展 525@b@8.1.7 OpenJDK的发展 527@b@8.2 系统架构优化建议 528@b@8.2.1 系统架构调优 528@b@8.2.2 Java项目优化方式分享 530@b@8.2.3 面向服务架构 534@b@8.2.4 程序隔离技术 538@b@8.2.5 团队并行开发准则 544@b@8.3 与编程无关 546@b@8.3.1 工程师品格 546@b@8.3.2 如何成为技术大牛 547@b@8.3.3 编程方法分享 548@b@8.4 本章小结