在考慮到代碼優化的部分
我們一般有兩種方案
即優化代碼或更改設計方法
我們一般會選擇後者
因為不去調用以下代碼要比調用一些優化的代碼更能提高程序的性能
而一個設計良好的程序能夠精簡代碼
從而提高性能
下面將提供一些在JAVA程序的設計和編碼中
為了能夠提高JAVA程序的性能
而經常采用的一些方法和技巧
線程(Threading)
一個高性能的應用程序中一般都會用到線程
因為線程能充分利用系統的資源
在其他線程因為等待硬盤或網絡讀寫而時
程序能繼續處理和運行
但是對線程運用不當
也會影響程序的性能
對象的生成和大小的調整
JAVA程序設計中一個普遍的問題就是沒有好好的利用JAVA語言本身提供的函數
從而常常會生成大量的對象(或實例)
由於系統不僅要花時間生成對象
以後可能還需花時間對這些對象進行垃圾回收和處理
因此
生成過多的對象將會給程序的性能帶來很大的影響
輸入和輸出(I/O)
輸入和輸出包括很多方面
但涉及最多的是對硬盤
網絡或數據庫的讀寫操作
對於讀寫操作
又分為有緩存和沒有緩存的
對於數據庫的操作
又可以有多種類型的JDBC驅動器可以選擇
但無論怎樣
都會給程序的性能帶來影響
因此
需要注意如下幾點
(
) 使用輸入輸出緩沖
盡可能的多使用緩存
但如果要經常對緩存進行刷新(flush)
則建議不要使用緩存
(
) 輸出流(Output Stream)和Unicode字符串
當時用Output Stream和Unicode字符串時
Write類的開銷比較大
因為它要實現Unicode到字節(byte)的轉換
因此
如果可能的話
在使用Write類之前就實現轉換或用OutputStream類代替Writer類來使用
(
) 當需序列化時使用transient
當序列化一個類或對象時
對於那些原子類型(atomic)或可以重建的原素要表識為transient類型
這樣就不用每一次都進行序列化
如果這些序列化的對象要在網絡上傳輸
這一小小的改變對性能會有很大的提高
(
) 使用高速緩存(Cache)
對於那些經常要使用而又不大變化的對象或數據
可以把它存儲在高速緩存中
這樣就可以提高訪問的速度
這一點對於從數據庫中返回的結果集尤其重要
(
) 使用速度快的JDBC驅動器(Driver)
JAVA對訪問數據庫提供了四種方法
這其中有兩種是JDBC驅動器
一種是用JAVA外包的本地驅動器
另一種是完全的JAVA驅動器
具體要使用哪一種得根據JAVA布署的環境和應用程序本身來定
異常(Exceptions)
JAVA語言中提供了try/catch來發方便用戶捕捉異常
進行異常的處理
但是如果使用不當
也會給JAVA程序的性能帶來影響
因此
要注意以下兩點
(
) 避免對應用程序的邏輯使用try/catch
如果可以用if
while等邏輯語句來處理
那麼就盡可能的不用try/catch語句
(
) 重用異常
在必須要進行異常的處理時
要盡可能的重用已經存在的異常對象
以為在異常的處理中
生成一個異常對象要消耗掉大部分的時間
一些其他的經驗和技巧
(
) 使用局部變量
(
) 避免在同一個類中動過調用函數或方法(get或set)來設置或調用變量
(
) 避免在循環中生成同一個變量或調用同一個函數(參數變量也一樣)
(
) 盡可能的使用static
final
private等關鍵字
(
) 當復制大量數據時
使用System
arraycopy()命令
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26087.html