笔记:Java程序性能优化

1、设计模式算法

一、单例模式数据库

对于频繁使用的对象,能够省略建立对象所花费的时间,减小内存使用频率,减轻GC压力。设计模式

单例模式相比静态类的优点:能够继承、被继承、实现接口,面向对象风格;静态类不行,是面向过程风格的。数组


二、代理模式缓存

由于安全缘由,屏蔽客户端直接访问真实对象;远程调用,隐藏远程调用的细节;提高性能,实现延迟加载 (如 Hibernate )安全

实现方式:JDK动态代理、CGLIB等网络


三、享元模式数据结构

节省重复建立对象的开销;对系统内存要求少,GC压力小。并发


四、装饰者模式负载均衡

既继承又委托。动态添加对象功能。如加缓冲优化IO:FileOutputStream -> BufferedOutputStream


五、观察者模式

UI上的Onclick 事件,JMS 的onMessage 事件等。


2、优化组件和方法

一、缓冲 Buffer

如IO中的BufferWriter,BufferReader 等


二、缓存 Cache

EHCache、OSCache等


三、对象复用池

数据库链接池 C3P0 、DBCP 等


四、负载均衡

Apache + Tomcat 集群,Session 能够复制 (可是容易形成网络繁忙)。

Terracotta + Tomcat 集群,实现Session共享,效率高。


五、事件换空间:

不引入多余变量,实现数字 a、b 交互

a = a+b; (此时1为和sum)

b= a-b;   (sum- 旧b =旧a)

a= a-b;     (sum- 新B =  sum - 旧A = 旧B =新A )


六、空间换时间

好比缓存。


3、字符串优化

一、字符串分割

StringTockenizer 比直接的split() 方法好


二、StringBuffer 、StringBuilder

StringBuffer 同步 、StringBuilder 非同步。

在初始化时候指定容量,如  new StringBuilder (20);



4、核心数据结构优化

一、List

ArrayList 基于数组、LinkedList 基于链表


二、Map

HashMap:基于hash算法

LinkedHashMap:有序的HashMap,按照插入顺序排序

TreeMap:继承自SortedMap,基于红黑树(一种平衡二叉树),能够自定义排序规则 (元素继承Coparable)


三、Set:  Set 是Map 的一种封装,其内部实现跟Map相同

HashSet:基于hash算法

LinkedHashSet: 有序的HashSet,按照插入顺序排序

TreeSet: 继承自SortedSet,基于红黑树(一种平衡二叉树),能够自定义排序规则 (元素继承Coparable)


四、NIO

DirectBuffer 能够直接访问系统物理内存,不须要在JVM的堆上分配空间,铜过设置 -XX:MaxDirectMemorySize=100M 设置


五、引用类型

强引用:

软引用:

弱引用:例子,WeakHashMap,能够做为缓存

虚引用:


六、其余编码技巧

慎用异常

成员变量转化为局部变量

位移运算代替乘除法

使用arrayCopy


5、并行程序设计模式


一、Future 模式

Future 用于实现Callable 接口的class中

FutureTask 既实现 Callable 又实现 Runnable


二、  Master-Worker 模式


三、Guarded Suspension 模式


四、不变模式


五、生产者-消费者模式


6、JDK多任务框架


一、简单线程池实现


二、Executor 框架


三、自定义线程池、扩展ThreadPoolExecutor


7、JDK 并发集合


一、CopyOnWriteArrayList、CopyOnWriteArraySet


二、ConcurrentHashMap


三、ConcurrentLinkedQueue


四、LinkedBlockingQueu  用于生产者-消费者模式


五、LinkedBlockingDeque


8、并发控制方法


一、volatile


二、synchronized


三、Lock、ReadWriteLock


四、Condition


五、Semaphore


六、ThreadLocal


9、锁的优化

一、避免死锁


二、减少锁持有时间


三、减少锁粒度


四、读写锁分离来替换独占锁


五、锁分离




10、JVM 调优


一、

二、

三、

相关文章
相关标签/搜索