Java代碼最佳化方案 J2ME記憶體最佳化

來源:互聯網
上載者:User
從幾本書上,N個網站上整理的一些JAVA代碼最佳化方案,最近的項目只有1M記憶體可用,必須很摳門了~J2ME項目更要注意的避免記憶體溢出

l 不用的對象釋放(置空)

如 :

a不為空白時 a=new object()//這句代碼執行時將有兩個對象存在於記憶體中

較好的寫法是a=null; a=new object();

不用的對象設定成null

l 記憶體溢出通常發生在建構函式中,在建構函式中變數在要用時再new,用完之後置null

一次性載入所有圖片很容易造成記憶體峰值。

可以用 if(img==null){

Create…

}

l 考慮用靜態Factory 方法替代建構函式(但是,注意釋放,單例模式的釋放只能由自己來做)。

l 使用局部變數

l 圖形重繪操作用部分重繪

l 避免在同一個類中通過調用get set來設定或調用變數,用public

l 避免在迴圈中產生同一個變數或調用同一個函數

l 常用變數儘可能用static final private

l 能用byte的就不用int,String

l 不要使用double

l 複製大量資料時用System.appaycopy()

l 避免使用泛型

l 盡量不使用try catch,必須使用時不要在迴圈體內寫try catch

l 字串操作使用StringBuffer

代碼2是代碼1執行速度的兩倍:

代碼1:

String title=new String(“大家好”);

Title+=”歡迎”;

Title+=”閱讀”

//會在棧中產生五個對象:“大家好”,“歡迎”,“閱讀”,“大家好歡迎”,“大家好歡迎閱讀”

代碼2:

StringBuffer title=new StringBuffer(“大家好”);

Tltle.append(“歡迎”);

Title.append(“閱讀”);

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

l 使用零值做為判斷條件

For(int i=a.length()-1;i>=0;i--) 優於 for(int i=0;i<a.length();i++)

l 不要重複初始設定變數

預設情況下,調用類的建構函式時, Java會把變數初始化成確定的值:所有的對象被設定成null,整數變數(byte、short、int、long)設定成0,float和 double變成0.0,邏輯值設定成false

l 乘法和除法用移位 ,除法比乘法慢,所以用乘於倒數來代替除法

考慮下面的代碼:

for (val = 0; val < 100000; val +=5) { alterX = val * 8; myResult = val * 2; }

用移位操作替代乘法操作可以極大地提高效能。下面是修改後的代碼:

for (val = 0; val < 100000; val += 5) { alterX = val << 3; myResult = val << 1; }

l 傳遞儘可能少的參數到經常調用的方法

l 不要有空方法,或方法內代碼很少而方法又很少調用

l 避免類型轉換

使用Profiler去尋找哪裡需要最佳化

改進你的演算法,寫最優的代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.