啃完这份Java调优笔记,阿里三面我让面试官JVM快了近十倍,直接给我发offer!

Java程序性能优化是一个永远逃不开的话题,优化无处不在!一个偶然间,小编得到了一份Java程序性能优化的笔记,小编读完这份笔记后大为惊叹,实在是写的太好了,不忍独乐乐,于是把这份笔记免费分享出来,供大家参阅,共同学习,共同成长!

这份笔记涵盖了:Java性能调优概述、设计优化、Java程序优化、并行程序开发及优化、JVM调优、Java性能调优工具!

由于文章篇幅的限制,接下来小编只能为大家展示完整目录和部分内容,完整版的免费获得方式放在了文末!(具体的调优方式全部都在笔记之中)

 

Java性能调优概述

性能概述

  • 看懂程序的性能

  • 性能的参考指标

  • 木桶原理与性能瓶颈

  • AmdahI定律

性能调优的层次

  • 设计调优

  • 代码调优

  • JVM调优

  • 数据库调优

  • 操作系统调优

基本调优策略和手段

  • 优化的一般步骤

  • 系统优化注意事项

 

设计优化

善用设计模式

  • 单例模式

  • 代理模式

  • 享元模式

  • 装饰者模式

  • 观察者模式

  • Value Object模式

  • 业务代理模式

常用优化组件和方法

  • 缓冲(Buffer)

  • 缓存(Cache)

  • 对象复用——” 池”

  • 并行替代串行

  • 负裁均衡

  • 时间换空间

  • 空间换时间

 

Java程序优化

字符串优化处理

  • String对象及其特点

  • subString ()方法的内存泄漏

  • 字符串分割和查找

  • StringBuffer和StringBuilder

核心数据结构

  • List接口

  • Map接口

  • Set接口

  • 优化集合访问代码

  • RandomAccess接口

使用NIO提升性能

  • NIO的Buffer类族和Channel

  • Buffer的基本原理

  • Buffer的相关操作

  • MappedByteBuffer性能评估

  • 直接内存访问

引用类型

  • 强引用

  • 软引用

  • 弱引用

  • 虚引用

  • WeakHashMap类及其实现

有助于改善性能的技巧

  • 慎用异常

  • 使用局部变量

  • 位运算代替乘除法

  • 替换switch

  • 一维数组代替二维数组

  • 提取表达式

  • 展开循环

  • 布尔运算代替位运算

  • 使用arrayCopy ()

  • 使用Buffer进行I/O操作

  • 使用clone ()代替new

  • 静态方法替代实例方法

 

并行程序开发及优化

并行程序设计模式

  • Future模式

  • Master-Worker模式

  • Guarded Suspension模式

  • 不变模式

  • 生产者-消费者模式

JDK多任务执行框架

  • 无限制线程的缺陷

  • 简单的线程池实现

  • Executor框架

  • 自定义线程池

  • 优化线程池大小

  • 扩展ThreadPoolExecutor

JDK并发数据结构

  • 并发List

  • 并发Set

  • 并发Map

  • 并发Queue

  • 并发Deque

并发控制方法

  • Java内存模型与volatile

  • 同步关键字synchronized

  • ReentrantLock重入锁

  • ReadWriteLock读写锁

  • Condition对象

  • Semaphore信号量

  • ThreadLocal线程局部变量

“锁”的性能和优化

  • 线程的开销

  • 避免死锁

  • 减小锁持有时间

  • 减小锁粒度

  • 读写分离锁来替换独占锁

  • 锁分离

  • 重入锁和内部锁

  • 锁粗化

  • 自旋锁

  • 锁消除

  • 锁偏向

无锁的并行计算

  • 非阻塞的同步/无锁

  • 原子操作

  • Amino框架介绍

  • Amino集合

  • Amino树

  • Amino图

  • Amino简单调度模式

协程

  • 协程的概念

  • Kllim框架简介

  • Task及其状态

  • Fiber及其状态

  • Kilim开发环境配置

  • Kilim之Hello World

  • 多任务通信

  • Klim实例及性能评估

 

JVM调优

Java虚拟机内存模型

  • 程序计数器

  • Java虚拟机栈

  • 本地方法栈

  • Java堆

  • 方法区

JVM内存分配参数

  • 设置最大堆内存

  • 设置最小堆内存

  • 设置新生代

  • 设置持久代

  • 设置线程栈

  • 堆的比例分配

  • 堆分配参数总结

垃圾收集基础

  • 垃圾收集的作用

  • 垃圾回收算法与思想

  • 垃圾收集器的类型

  • 评价GC策略的指标

  • 新生代串行收集器

  • 老年代串行收集器

  • 并行收集器

  • 新生代并行回收(Parallel Scavenge)收集器

  • 老年代并行回收收集器

  • CMS收集器

  • G1收集器(Garbage First)

  • Stop the World案例

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

  • GC相关参数总结

常用调优案例和方法

  • 将新对象预留在新生代

  • 大对象进入老年代

  • 设置对象进入老年代的年龄

  • 稳定与震荡的堆大小

  • 吞吐量优先案例

  • 使用大页案例

  • 降低停顿案例

实用JMVM参数

  • JIT编译参数

  • 堆快照(堆Dump)

  • 错误处理

  • 取得GC信息

  • 类和对象跟踪

  • 控制GC

  • 选择类校验器

  • Solaris下线程控制

  • 使用大页

  • 压缩指针

实战JVM调优

  • Tomcat简介与启动加速

  • Web应用程序介绍

  • JMeter介绍与使用

  • 调优前Web应用运行状况

  • 调优过程

 

Java性能调优工具

Linux命令行工具

  • top命令

  • sar命令

  • vmstat命令

  • iostat命令

  • pidstat工具

Windows工具

  • 任务管理器

  • perfmon性能监控工具

  • Process Explorer

  • pslist命令行

JDK命令行工具

  • jps命令

  • jstat命令

  • jinfo命令

  • jmap命令

  • jhat命令

  • jstack命令

  • 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

  • 浅堆和深堆

  • 支配树(Dominator Tree)

  • 垃圾回收根

  • 内存泄露检测

  • 最大对象报告

  • 查找支配者

  • 线程分析

  • 集合使用情况分析

  • 扩展MAT

MAT对OQL的支持

  • Select子句

  • From子句

  • Where子句

  • 内置对象与方法

JProfle简介

  • JProfile使用配置

  • 内存视图

  • 堆快照

  • CPU视图

  • 线程视图

  • JVM统计信息

免费获取方式:点赞这篇文章+关注我,扫码获取!

猜你喜欢

转载自blog.csdn.net/weixin_45825082/article/details/108627765