1. 程式人生 > >JAVA程式碼上優化效能的方法

JAVA程式碼上優化效能的方法

1.return 一個空的集合,而不是 null

如果一個程式返回一個沒有任何值的集合,請確保一個空集合返回,而不是空元素。這樣你就不用去寫一大堆 ”if else” 判斷null元素    可以返回Collections.EMTY_LIST  或EMTY_SET EMTY_MAP

 

2.字元拼接的時候少用String  可以用StringBuilder或者StringBuffer,使用String時少用new

 

3.將物件定義在迴圈外面,在迴圈內例項化

 

4.陣列和集合的選擇,長度規定使用陣列 經常刪除和新增的話使用LinkedList

 

5.try catch finally 優化:

1> try、catch、finally語句中,在如果try語句有return語句,則返回的之後當前try中變數此時對應的值,此後對變數做任何的修改,都不影響try中return的返回值

2> 如果finally塊中有return 語句,則返回try或catch中的返回語句忽略。

3 >如果finally塊中丟擲異常,則整個try、catch、finally塊中丟擲異常

所以使用try、catch、finally語句塊中需要注意的是

1> 儘量在try或者catch中使用return語句。通過finally塊中達到對try或者catch返回值修改是不可行的。

2 >finally塊中避免使用return語句,因為finally塊中如果使用return語句,會顯示的消化掉try、catch塊中的異常資訊,遮蔽了錯誤的發生

3 >finally塊中避免再次丟擲異常,否則整個包含try語句塊的方法回丟擲異常,並且會消化掉try、catch塊中的異常

6.奇數判斷  使用  (num&1)!=0    

因為如果一個數是偶數的話那麼它二進位制的最後一位就是0,這樣判斷的話 前面的num只有二進位制最後一位是1才返回為1,這就是: 偶數&1為0,奇數&1為1  

7. 單引號和雙引號之間的區別

結果為201201,原因是,如果使用雙引號,字串對待,但在單引號的情況下,字元自動轉換為int型,進行計算。

 

8.通過簡單的技巧避免記憶體洩漏   finally塊中釋放使用的資源

 

9.三種用於避免死鎖的技術:

1>加鎖順序

2>加鎖時限

3>死鎖檢測

一個更好的方案是給這些執行緒設定優先順序,讓一個(或幾個)執行緒回退,剩下的執行緒就像沒發生死鎖一樣繼續保持著它們需要的鎖。如果賦予這些執行緒的優先順序是固定不變的,同一批執行緒總是會擁有更高的優先順序。為避免這個問題,可以在死鎖發生的時候設定隨機的優先順序。

 

10.JAVA執行記憶體的設定

一些java應用程式可以被高度的CPU密集型以及他們需要很多記憶體。這樣的應用程式通常執行速度慢,因為記憶體高的要求。所以,我們可以在相關的配置檔案中進行修改調整記憶體大小。

Xms = 設定記憶體初始化的大小

Xmx = 設定最大能夠使用記憶體的大小

XX:PermSize =初始大小,將分配給JVM的啟動過程

XX:MaxPermSize = 最大尺寸可以分配JVM的啟動過程

 

11.時間選擇 :  迴圈中用System.nanoTime 因為精度高,平時用System.currentTimeMillis()能和data轉換

12.float和double   要效能和記憶體用float,要精度高用double

13.用<<和>>代替乘除 num>>x理解為num除以2的x次方 num<<x為num乘以2的x次方(二進位制位移)