J2ME手機(jī)開(kāi)發(fā)之內(nèi)存優(yōu)化攻略(續(xù))
???????在上一篇中小總結(jié)了下J2ME手機(jī)開(kāi)發(fā)中的內(nèi)存優(yōu)化的一些內(nèi)容,本文繼續(xù)總結(jié)下在J2ME開(kāi)發(fā)過(guò)程中的一些細(xì)節(jié)優(yōu)化處理。優(yōu)化的作用就是提高代碼的執(zhí)行效率,降低運(yùn)行時(shí)的內(nèi)存消耗,更好的適應(yīng)各類內(nèi)存類型的大小跟配置,以下內(nèi)容將專門敘述有關(guān)代碼優(yōu)化的細(xì)節(jié)。
??????A、除法運(yùn)算優(yōu)化
??????在除法運(yùn)算過(guò)程中使用移位操作比直接使用"/"更具效率,如(a+b)/2優(yōu)化后的代碼為(a+b)>>1。
??????B、變量局部化
??????在聲明變量時(shí)候,盡量使用局部變量去替代全局變量,局部變量的賦值性能高于全局變量,如下代碼:
??????int sum;
??????public void add(){
????????????for(int i=0;i<100;i++)
????????????sum += i;
??????}
??????優(yōu)化后代碼為:
??????int sum;
??????public void add(){
????????????int temp = sum;
????????????for(int i=0;i<100;i++)
????????????temp += i;
????????????sum = temp;
??????}
??????C、多選擇switch
??????在多選擇情況下,使用switch進(jìn)行判斷而少用if-else來(lái)做判斷,不但提高性能,而且提高代碼可讀性。
??????D、字符串聲明
??????在字符串聲明中,使用直接賦值比創(chuàng)建字符串對(duì)象好,比如String str = "test"; 比String str = new String("test");更節(jié)省內(nèi)存,因?yàn)閚ew本身創(chuàng)建了另一個(gè)字符串對(duì)象,從而增加了內(nèi)存開(kāi)銷。
??????E、字符串判空
??????在判斷一個(gè)字符串是否為空情況下,使用判斷字符串長(zhǎng)度是否為零,而不使用與""做比較,如使用str.length==0而不使用str.euqals("")。
??????F、StringBuffer對(duì)象
??????在使用StringBuffer中,如果操作一個(gè)字符,使用'',而不使用"",如'a',而不是"a"。
??????G、異常處理優(yōu)化
??????在異常捕獲處理代碼中,可以使用對(duì)異常發(fā)生的情況先進(jìn)行判斷,并執(zhí)行當(dāng)異常情況請(qǐng)有效代碼來(lái)替代try-catch的異常處理。如下代碼:
????? try{
????????????a.do();
??????}catch(NullPointerException ex){
????????????//異常處理代碼
??????}
??????優(yōu)化為:
??????if(a==null)
??????{
?????????????ruturn;??
???????}else
???????{
?????????????a.do();
????????}
??????H、內(nèi)部類
??????使用內(nèi)部類在某些時(shí)候帶來(lái)一定好處,但是使用內(nèi)部類會(huì)消耗更多的內(nèi)存,因此盡量少使用內(nèi)部類。
??????I、程序暫停與開(kāi)始
??????在程序暫停pauseApp時(shí)候讓無(wú)用的資源釋放,而在開(kāi)始startApp的時(shí)候獲取資源,在程序停止destoryApp的時(shí)候釋放所有資源。
????? 嚴(yán)正聲明:本文出自即興詩(shī)人blogjava博客,如轉(zhuǎn)載必須與作者聯(lián)系improviser@163.com!
?
鳳凰涅槃/浴火重生/馬不停蹄/只爭(zhēng)朝夕
???? 隱姓埋名/低調(diào)華麗/簡(jiǎn)單生活/完美人生
posted on 2009-03-02 01:57 poetguo 閱讀(1846) 評(píng)論(3) 編輯 收藏 所屬分類: J2ME