Java程序性能优化
2021-09-12 09:25:45 0 举报
AI智能生成
《Java程序性能优化》目录,以及一些技术点的扩展,添加链接。(不断完善中)
作者其他创作
大纲/内容
Java性能调优概述
性能概述
看懂程序的性能
性能的参考指标
木桶原理和性能瓶颈
Amdahl原理
性能调优的层次
设计调优
一个良好的系统设计可以规避掉很多潜在的性能问题
代码调优
开发人员息息相关的,和开发人员的基本功以及习惯有着深刻的关系
JVM调优
主要是一些JVM相关参数
数据库调优
应用层SQL进行优化
对数据库进行优化
对数据库软件进行优化
操作系统调优
基本调优策略和手段
优化的一般步骤
系统优化注意事项
小结
设计优化
善用设计模式
单列模式
代理模式
享元模式
装饰器模式
观察者模式
Value Object模式
业务代理模式
策略模式
模板方法模式
常用优化组件和方法
缓冲(Buffer)
缓存(Cache)
对象复用(池化)
并行代替串行
负载均衡
时间换空间
空间换时间
小结
Java程序优化
字符串优化处理
String对象及其特点
subString()方法的内存泄漏
字符串分割和查找
String/StringBuilder/StringBuffer
核心数据结构
List接口
Map接口
Set接口
优化集合访问代码
RandomAccess接口
使用NIO提升性能
NIO的Buffer类族和Channel
Buffer的基本原理
Buffer的相关操作
MappedByteBuffer性能评估
直接内存访问
对象引用类型
强应用
软引用
弱引用
虚引用
WeakHashMap类及其实现
有助于改善性能的技巧
慎用异常
使用局部变量
与运算替换乘除法
替换switch
一维数组代替二维数组
提取表达式
展开循环
布尔运算代替位运算
使用arrayCopy()
使用Buffer进行I/O操作
使用clone()方法代替new
静态方法替换代理方法
小结
并行程序开发及优化
并行程序设计模式
Future模式
Master-Workder模式
Guarded Suspension模式
不变模式
生产者和消费者模式
JDK多任务执行框架
无限制线程的缺陷
简单的线程池实现
Excutor框架
自定义线程池大小
优化线程池大小
扩展ThreadPoolExecutor
JDK并发数据结构
并发List
并发Set
并发Map
并发Queue
并发Deque
并发控制方法
Java内存模型与volatile
同步关键字synchronized
ReentrantLock重入锁
ReadWriteLock
Condition对象
Semapore信号量
ThreadLocal线程局部变量
锁的性能和优化
线程的开销
避免死锁
减小锁持有时间
缩小锁粒度
读写分离替换独占锁
锁分离
重入锁和内部锁
锁粗化
自旋锁
锁消除
锁偏向
无锁的并行计算
非阻塞的同步/无锁
原子操作
Amino框架结束
Amino集合
Amino树
Amino图
Amino简单调度模式
协程
协程的概念
Kilim框架结束
Task机器状态
Fiber机器状态
Kilim之Hello World
多任务通信
Kilim开发环境配置
Kilim实例及其性能评估
小结
JVM调优
Java虚拟机内存模型
程序计数器
Java虚拟机栈
本地方栈
Java堆
方法区
JVM内存分配参数
设置最大和最小堆内存
设置新生代大小
设置永久代/元空间大小
设置线程栈
设置堆比例
堆分配参数总结
垃圾收集基础
垃圾收集的作用
垃圾回收算法与思想
垃圾收集器的类型
评价GC策略的指标
新生代串行收集器
老年代串行收集器
并行收集器
新生代并行回收(Parallel Scavenge)收集器
老年代并行回收收集器
CMS收集器
G1(Garbage First)收集器
STW(Stop the world)案例
收集器对系统性能的影响
GC相关参数总结
常用调优案例和方法
讲新对象预留在新生代
大对象进入老年代
设置对象进入老年代的年龄
稳定与震荡的堆大小
吞吐量有限案例
使用大页案例
降低停顿案例
使用JVM参数
JIT编译参数
对快照(对Dump)
错误处理
取得GC信息
类和对象跟踪
控制GC
选择类检验器
Solaris下县城控制
使用大页
压缩指针
实战JVM调优
Tomcat介绍和启动加速
Web应用介绍
JMeter介绍与使用
调优钱Web应用运行状况
调优过程
总结
Java性能调优工具
Linux命令工具
top命令
sar命令
vmstat命令
iostat命令
pidstat命令
Windows工具
任务管理器
perfmon性能监控工具
Process Exploer
pslist命令行
JDK命令行工具
jps命令
jstat命令
jinfo命令
jmap命令
jhat命令
jstck命令
jstatd命令
hprof命令
JConsole工具
JConsole连接Java程序
Java程序概况
内存监控
线程监控
类加载监控
虚拟机信息
MBean管理
使用插件
Visual VM 多合一工具
Visual VM 连接应用程序
监控应用程序概况
Thread Dump和分析
性能分析
快照
内存快照分析
MBean管理
TDA使用
BTrace介绍
Visual VM对OQL的支持
Visual VM对OQL基本语法
内置heap对象
对象函数
集合/统计函数
程序员OQL
MAT内存分析工具
初识MAT
浅堆和深堆
支配树
垃圾回收根
内存泄漏检测
最大对象报告
查找支配者
集合使用情况分析
线程分析
扩展MAT
MAT对OQL的支持
Select子句
From子句
Where子句
内置对象与方法
JProfile简介
JProfile使用配置
内存视图
堆快照
CPU视图
线程视图
JVM统计信息
触发器
小结
0 条评论
下一页