J2ME手機開發之內存優化攻略(續)

火星人 @ 2014-03-10 , reply:0


在上一篇中小總結了下J2ME手機開發中的內存優化的一些內容,本文繼續總結下在J2ME開發過程中的一些細節優化處理.優化的作用就是提高代碼的執行效率,降低運行時的內存消耗,更好的適應各類內存類型的大小跟配置,以下內容將專門敘述有關代碼優化的細節.

A、除法運算優化

在除法運算過程中使用移位操作比直接使用"/"更具效率,如(a b)/2優化后的代碼為(a b)>>1.

B、變數局部化

在聲明變數時候,盡量使用局部變數去替代全局變數,局部變數的賦值性能高於全局變數,如下代碼:

int sum;
public void add(){
for(int i=0;i<100;i )
sum = i;
}
優化後代碼為:
int sum;
public void add(){
int temp = sum;
for(int i=0;i<100;i )
temp = i;
sum = temp;
}

C、多選擇switch

在多選擇情況下,使用switch進行判斷而少用if-else來做判斷,不但提高性能,而且提高代碼可讀性.

D、字元串聲明

在字元串聲明中,使用直接賦值比創建字元串對象好,比如String str = "test"; 比String str = new String("test");更節省內存,new本身創建了另一個字元串對象,從而增加了內存開銷.

E、字元串判空

在判斷一個字元串是否為空情況下,使用判斷字元串長度是否為零,而不使用與""做比較,如使用str.length==0而不使用str.euqals("").

F、StringBuffer對象

在使用StringBuffer中,如果操作一個字元,使用'',而不使用"",如'a',而不是"a".

G、異常處理優化

在異常捕獲處理代碼中,可以使用對異常發生的情況先進行判斷,並執行當異常情況請有效代碼來替代try-catch的異常處理.如下代碼:

try{
a.do();
}catch(NullPointerException ex){
//異常處理代碼
}
優化為:
if(a==null)
{
ruturn;
}else
{
a.do();
}

H、內部類

使用內部類在某些時候帶來一定好處,但是使用內部類會消耗更多的內存,因此盡量少使用內部類.

I、程序暫停與開始

在程序暫停pauseApp時候讓無用的資源釋放,而在開始startApp的時候獲取資源,在程序停止destoryApp的時候釋放所有資源.




[火星人 via ] J2ME手機開發之內存優化攻略(續)已經有117次圍觀

http://www.coctec.com/docs/java/show-post-62211.html