筆記: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 調優


一、

二、

三、

相關文章
相關標籤/搜索