title

Java程序性能优化:让你的Java程序更快、更稳定

[复制链接]
发表于 2017-10-3 20:06:11 | 显示全部楼层 |阅读模式
Java法式性能优化:让你的Java法式更快、更稳定[size=1.5]

1503909829-9191-003034pqlnzqy631i715yq.jpg 先容

Java是今朝利用为普遍的软件开辟平台,进修针对Java法式的优化方式有重要的现实意义。《Java法式性能优化:让你的Java法式更快、更稳定》以Java性能调优为主线,系统地论述了与Java性能优化相关的常识与技能。

《Java法式性能优化:让你的Java法式更快、更稳定》共6章,前后从软件设想、软件编码、JVM调优以及法式故障排挤等方面先容针对Java法式的优化方式。第1章先容性能的根基概念、定律、系统调优的进程和留意事项。第2章从设想层面先容与性能相关的设想形式、组件。第3章从代码层面先容若何编写高性能的Java法式。第4章先容了并行开辟和若何经过量线程进步系统性能。第5章安身于JVM虚拟机层面,先容若何经过设备公道的JVM参数提升Java法式的性能。第6章为工具篇,先容了获得和监控法式或系统性能目标的各类工具,包括相关的故障排查工具。

《Java法式性能优化:让你的Java法式更快、更稳定》合适一切Java法式员、软件设想师、架构师以及软件开辟爱好者,对于有一定经历的Java工程师,本书更能帮助他冲破技术瓶颈,深入Java内核开辟!

目录

第1章 Java性能调优概述

1.1 性能概述

1.1.1 看懂法式的性能

1.1.2 性能的参考目标

1.1.3 木桶道理与性能瓶颈

1.1.4 Amdahl定律

1.2 性能调优的条理

1.2.1 设想调优

1.2.2 代码调优

1.2.3 JVM调优

1.2.4 数据库调优

1.2.5 操纵系统调优

1.3 根基调优战略和手段

1.3.1 优化的一般步调

1.3.2 系统优化留意事项

1.4 小结

第2章 设想优化

2.1 善用设想形式

2.1.1 单例形式

2.1.2 代理形式

2.1.3 享元形式

2.1.4 装潢者形式

2.1.5 观察者形式

2.1.6 Value Object形式

2.1.7 营业代理形式

2.2 常用优化组件和方式

2.2.1 缓冲(Buffer)

2.2.2 缓存(Cache)

2.2.3 工具复用——“池”

2.2.4 并行替换串行

2.2.5 负载平衡

2.2.6 时候换空间

2.2.7 空间换时候

2.3 小结

第3章 Java法式优化

3.1 字符串优化处置

3.1.1 String工具及其特点

3.1.2 subString()方式的内存泄露

3.1.3 字符串朋分和查找

3.1.4 StringBuffer和StringBuilder

3.2 焦点数据结构

3.2.1 List接口

3.2.2 Map接口

3.2.3 Set接口

3.2.4 优化调集拜候代码

3.2.5 RandomAccess接口

3.3 利用NIO提升性能

3.3.1 NIO的Buffer类族和Channel

3.3.2 Buffer的根基道理

3.3.3 Buffer的相关操纵

3.3.4 MappedByteBuffer性能评价

3.3.5 间接内存拜候

3.4 援用范例

3.4.1 强援用

3.4.2 软援用

3.4.3 弱援用

3.4.4 虚援用

3.4.5 WeakHashMap类及实在现

3.5 有助于改良性能的技能

3.5.1 慎用异常

3.5.2 利用部分变量

3.5.3 位运算取代乘除法

3.5.4 替换switch

3.5.5 一维数组取代二维数组

3.5.6 提取表达式

3.5.7 展开循环

3.5.8 布尔运算取代位运算

3.5.9 利用arrayCopy ()

3.5.10 利用Buffer停止I/O操纵

3.5.11 利用clone()取代new

3.5.12 静态方式替换实例方式

3.6 小结

第4章 并行法式开辟及优化

4.1 并行法式设想形式

4.1.1 Future形式

4.1.2 Master-Worker形式

4.1.3 Guarded Suspension形式

4.1.4 稳定形式

4.1.5 生产者-消耗者形式

4.2 JDK多使命履行框架

4.2.1 无穷制线程的缺点

4.2.2 简单的线程池实现

4.2.3 Executor框架

4.2.4 自界说线程池

4.2.5 优化线程池巨细

4.2.6 扩大ThreadPoolExecutor

4.3 JDK并发数据结构

4.3.1 并发List

4.3.2 并发Set

4.3.3 并发Map

4.3.4 并发Queue

4.3.5 并发Deque

4.4 并发控制方式

4.4.1 Java内存模子与volatile

4.4.2 同步关键字synchronized

4.4.3 ReentrantLock重入锁

4.4.4 ReadWriteLock读写锁

4.4.5 Condition工具

4.4.6 Semaphore信号量

4.4.7 ThreadLocal线程部分变量

4.5 “锁”的性能和优化

4.5.1 线程的开销

4.5.2 避免死锁

4.5.3 减小锁持偶然候

4.5.4 减小锁粒度

4.5.5 读写分手锁来替换独占锁

4.5.6 锁分手

4.5.7 重入锁ReentrantLock和内部锁synchronized

4.5.8 锁粗化(Lock Coarsening)

4.5.9 自旋锁(Spinning Lock)

4.5.10 锁消除(Lock Elimination)

4.5.11 锁偏向(Biased Lock)

4.6 无锁的并行计较

4.6.1 非阻塞的同步/无锁

4.6.2 原子操纵

4.6.3 Amino框架先容

4.6.4 Amino调集

4.6.5 Amino树

4.6.6 Amino图

4.6.7 Amino简单调剂形式

4.7 协程

4.7.1 协程的概念

4.7.2 Kilim框架简介

4.7.3 Task及其状态

4.7.4 Fiber及其状态

4.7.5 Kilim开辟情况设置

4.7.6 Kilim之Hello World

4.7.7 多使命通讯

4.7.8 Kilim实例及性能评价

4.8 小结

第5章 JVM调优

5.1 Java虚拟机内存模子

5.1.1 法式计数器

5.1.2 Java虚拟机栈

5.1.3 当地方式栈

5.1.4 Java堆

5.1.5 方式区

5.2 JVM内存分派参数

5.2.1 设备最大堆内存

5.2.2 设备最小堆内存

5.2.3 设备新生代

5.2.4 设备持久代

5.2.5 设备线程桟

5.2.6 堆的比例分派

5.2.7 堆分派参数总结

5.3 渣滓收集根本

5.3.1 渣滓收集的感化

5.3.2 渣滓接管算法与思惟

5.3.3 渣滓收集器的范例

5.3.4 评价GC战略的目标

5.3.5 新生代串行收集器

5.3.6 老年月串行收集器

5.3.7 并行收集器

5.3.8 新生代并行接管(Parallel Scavenge)收集器

5.3.9 老年月并行接管收集器

5.3.10 CMS收集器

5.3.11 G1收集器(Garbage First)

5.3.12 Stop the World案例

5.3.13 收集器对系统性能的影响

5.3.14 GC相关参数总结

5.4 常用调优案例和方式

5.4.1 将新工具预留在新生代

5.4.2 大工具进入老年月

5.4.3 设备工具进入老年月的年龄

5.4.4 稳定与震动的堆巨细

5.4.5 吞吐量优先案例

5.4.6 利用大页案例

5.4.7 下降搁浅案例

5.5 适用JVM参数

5.5.1 JIT编译参数

5.5.2 堆快照(堆Dump)

5.5.3 毛病处置

5.5.4 获得GC信息

5.5.5 类和工具跟踪

5.5.6 控制GC

5.5.7 挑选类校验器

5.5.8 Solaris下线程控制

5.5.9 利用大页

5.5.10 紧缩指针

5.6 实战JVM调优

5.6.1 Tomcat简介与启动加速

5.6.2 Web利用法式先容

5.6.3 JMeter先容与利用

5.6.4 调优前Web利用运转状态

5.6.5 调优进程

5.7 总结

第6章 Java性能调优工具

6.1 Linux号令行工具

6.1.1 top号令

6.1.2 sar号令

6.1.3 vmstat号令

6.1.4 iostat号令

6.1.5 pidstat工具

6.2 Windows工具

6.2.1 使命治理器

6.2.2 perfmon性能监控工具

6.2.3 Process Explorer

6.2.4 pslist号令行

6.3 JDK号令行工具

6.3.1 jps号令

6.3.2 jstat号令

6.3.3 jinfo号令

6.3.4 jmap号令

6.3.5 jhat号令

6.3.6 jstack号令

6.3.7 jstatd号令

6.3.8 hprof工具

6.4 JConsole工具

6.4.1 JConsole毗连Java法式

6.4.2 Java法式概况

6.4.3 内存监控

6.4.4 线程监控

6.4.5 类加载情况

6.4.6 虚拟机信息

6.4.7 MBean治理

6.4.8 利用插件

6.5 Visual VM多合一工具

6.5.1 Visual VM毗连利用法式

6.5.2 监控利用法式概况

6.5.3 Thread Dump和分析

6.5.4 性能分析

6.5.5 快照

6.5.6 内存快照分析

6.5.7 MBean治理

6.5.8 TDA利用

6.5.9 BTrace先容

6.6 Visual VM对OQL的支持

6.6.1 Visual VM的OQL根基语法

6.6.2 内置heap工具

6.6.3 工具函数

6.6.4 调集/统计函数

6.6.5 法式化OQL

6.7 MAT内存分析工具

6.7.1 初识MAT

6.7.2 浅堆和深堆

6.7.3 安排树(Dominator Tree)

6.7.4 渣滓接管根

6.7.5 内存泄露检测

6.7.6 最大工具报告

6.7.7 查找安排者

6.7.8 线程分析

6.7.9 调集利用情况分析

6.7.10 扩大MAT

6.8 MAT对OQL的支持

6.8.1 Select子句

6.8.2 From子句

6.8.3 Where子句

6.8.4 内置工具与方式

6.9 JProfile简介

6.9.1 JProfile利用设置

6.9.2 内存视图

6.9.3 堆快照

6.9.4 CPU视图

6.9.5 线程视图

6.9.6 JVM统计信息

6.9.7 触发器

6.10 小结

电子书下载:

旅客,假如您要检察本帖隐藏内容请答复




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|站点地图|ITFXZ社区 |网站地图

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表