java程式效能最佳化

來源:互聯網
上載者:User

標籤:

1. 盡量避免隨意使用靜態變數

當某個對象被定義為static的變數引用時,那麼GC通常是不會回收這個對象所佔用的記憶體

public class A {

static B b = new B(); // 靜態變數b的生命週期與A類同步, 只要A類不被卸載,那麼b對象就會常駐記憶體,直到程式終止

}


2. 處理好封裝類型和基本類型的使用場所

雖然封裝類型和基本類型在使用過程中是可以相互轉換,但它們兩者所產生的記憶體地區是完全不同的,基本類型資料產生和處理在棧中;

封裝類型是對象,在堆中產生執行個體。


3. 慎用synchronized

實現同步是要很大的系統開銷為代價,甚至可能造成死結,所以盡量避免無謂的同步控制。


4. 單線程盡量使用HashMap、ArrayList

HashTable、Vector等使用了同步機制,降低了效能。


5. 盡量減少對變數的重複計算

for(int i = 0; i < list.size(); i++)  // 迴圈中,迴圈條件會被反覆計算

應該改為 for(int i = 0, len = list.size(); i < len; i++) 


6. 盡量避免不必要的建立

A a = new A();

if(i == 1){ list.add(a); }  

應該改為: if(i == 1){ A a = new A(); list.add(a); }  


7. 盡量確定StringBuilder的容量

StringBuilder的構造器會建立一個預設大小(通常是16)的字元數組,在使用中,如果超出這個大小,就會重新分配記憶體,建立一個更大的數組,並將原先的數組複製過來,再丟棄舊的數組。在大多數情況下,你可以在建立StringBuilder的時候指定大小,這樣就避免了在容量不夠的時候自動成長,以提高效能。


8. 盡量早釋放無用對象的引用

大部分時間,方法局部引用變數所引用的對象會隨著方法結束而變成垃圾,因此,大部分時候程式無需將局部引用變數顯示地設為null;但是如果對象較大,佔用較多記憶體,不用的時候就應手動置為空白了



java程式效能最佳化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.