Java代碼優化方案 J2ME內存優化

Java代碼優化方案 J2ME內存優化

從幾本書上,N個網站上整理的一些JAVA代碼優化方案,最近的項目只有1M內存可用,必須很摳門了~J2ME項目更要注意的

避免內存溢出

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

如 :算法

a不爲空時 a=new object()//這句代碼執行時將有兩個對象存在於內存中數組

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

不用的對象設置成null函數

l 內存溢出一般發生在構造函數中,在構造函數中變量在要用時再new,用完以後置nullpost

一次性加載全部圖片很容易形成內存峯值。性能

能夠用 if(img==null){優化

 

Create…網站

}url

l 考慮用靜態工廠方法替代構造函數(可是,注意釋放,單例模式的釋放只能由本身來作)。

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++)

 

不要重複初始化變量

默認狀況下,調用類的構造函數時, Java會把變量初始化成肯定的值:全部的對象被設置成null,整數變量(byte、short、int、long)設置成0,float和 double變成0.0,邏輯值設置成false

乘法和除法用移位 ,除法比乘法慢,因此用乘於倒數來代替除法

考慮下面的代碼:

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去查找哪裏須要優化

改進你的算法,寫最優的代碼
相關文章
相關標籤/搜索