调整了一下JVM内存,程序快了700%,Java程序优化笔记

135 阅读3分钟

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

这份笔记涵盖了**+XXX_WWW666666获取**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线程局部变量

“锁”的性能和优化

  • 线程的开销

  • 避免死锁

  • 减小锁持有时间

  • 减小锁粒度

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

  • 锁分离

  • 重入锁和内部锁

  • 锁粗化

  • 自旋锁

  • 锁消除

  • 锁偏向

    无锁的并行计算

  • 非阻塞的同步/无