<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    即興的靈感

    思維是一種藝術; 藝術需要靈感。

    博客好友

    最新評論

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

    ??????嚴正聲明:本文出自即興詩人blogjava博客,作者經過整理總結而得,如轉載必需與作者聯系improviser@163.com
    ??????在C或C++開發過程中,內存溢出問題可謂是經常讓開發人員極其痛苦的事情,稍不注意問題就產生,甚至引發隱含的漏洞產生。JAVA正是在C++的優秀品質中繼承下來的產物,擁有垃圾回收機制是JAVA虛擬機在C++繼承過程中進化的一個重要地方,垃圾回收機制能在對象沒被使用之后的某個時間將對象進行回收,從而能使無用對象占據的內存得到釋放。但是,這僅僅對有足夠內存的Server服務器主機跟PC機上的虛擬機有用,對于內存極其珍貴的設備來說垃圾回收機制卻顯得有點無能為力,英雄無用武之地。雖然隨著手機硬件的不斷升級,智能手機中的手機內存以及CPU資源大大得到提升,但是目前用戶手中的手機并無法普遍達到這種水平,因此在J2ME設計開發過程中我們需要很好的考慮到每一寸內存土地的利用。今天參考了有關資料,并對J2ME開發過程中的內存相關內容做個歸納,以增加對內存的使用有更好的理解。
    ??????一、程序內存情況分析
    ??????1、在使用WTK中,我們可以調用工具中的Memory Monitor來查看程序的內存使用情況。
    ??????2、使用相對于的手機模擬器內存監視器來對程序使用內存進行監視。
    ??????3、Runtime類提供了查看剩余內存的方法freeMemory()。

    ??????二、程序內存占用分析
    ??????一個軟件在運行過程中占據內存主要是程序代碼和程序所使用的各類資源,包括文字文件資源、圖片、音樂等多媒體資源。
    ????? 而在JAVA虛擬機中,java代碼最終是被編譯成class文件的字節碼形式并且隨著程序的啟動而加載到內存中,因此經過編譯之后的字節碼文件的容量大小,將會影響程序最終占用內存的大小,而字節碼文件的大小則是由程序代碼中類的個數、變量名稱以及方法名的長度、字符串以及靜態常量的長度和大小等因素決定的。
    ??????在手機應用程序中特別在游戲開發中,都需要使用各類的資源,使得游戲內存豐富多彩,而這些資源將是程序占據更多資源的原因。同樣的,在游戲場景中,設計到很多對話內容,因此涉及到很多文字存儲文件(使用文件存儲而不是在程序中聲明字符串的作用是在需要時候才讀取內容,防止過多字符串占據過大內存)。
    ??????聲音也是一種極其占據內存的資源,因此在程序當中也需要對聲效等資源的控制。

    ??????三、內存優化方法攻略
    ??????1、代碼優化
    ??????盡量使用較短的變量名稱和方法名稱,減少類中成員變量跟成員方法的數量,多使用局部變量而少使用全局變量,減少程序總體的代碼行數,在程序測試確定無錯情況下可以去掉異常處理的try-catch語句,對常量跟字符串過多的程序中使用文件存儲形式以使用時候再讀取,對不使用的對象及時指向為null,對占據大內存的程序或資源的數據流讀取使用后及時釋放資源并使用System.gc()方法回收垃圾資源。
    ??????2、圖片優化
    ??????在圖片使用中,我們通常使用圖形壓縮工具或算法對圖片大小進行壓縮,但是這樣的作用僅僅是較小了J2ME程序最終產生的JAR文件包大小,但無法減少圖片在被使用時候對內存的消耗。據有關資料介紹,圖片的內存在內存中的大小只跟圖片被裝載后的高度跟寬度有關,而跟圖片本身體積大小無關,計算公式為內存占用量=寬*高*像素字節數。
    ??????因此在圖片優化中可以使用減小圖片的高寬、使用圖片分割編輯工具對圖片進行分割,充分利用圖片的空間;在使用的時候才載入相關的圖片,而在無用的時候及時銷毀圖片對象;對每一張圖片聲明一個對象變量。
    ??????3、聲效資源優化
    ??????對聲音采用字節流ByteArrayInputStream來創建Player對象;在對聲音對象的回收前停止聲音的播放;其次在每次播放聲音前先對聲音對象進行判斷,如對象存在則先停止后再進行播放。
    ??????4、有關字符串處理
    ??????對字符串的處理使用StringBuffer來操作,因為使用方法append時是同一個對象上的操作,而如果采用“+”操作字符串則會每次創建新的對象。
    ??????5、對循環的優化
    ??????盡量在for循環語句中將size或length等計算提取到循環外面,如下所示(對數組num{23,13,46,26,22,57}進行排序):
    ??????int k = num.length;
    ??????for(int i=0;i<k-1;i++)
    ??????{
    ???????????????for(int j=1;j<k;j++)
    ??????????????????{
    ????????????????????????if(num[i]<=num[j])
    ????????????????????????{
    ???????????????????????????????????int temp = num[i];
    ???????????????????????????????????num[i] = num[j];
    ???????????????????????????????????num[j] =?temp;
    ????????????????????????}
    ??????????????????}
    ???????}
    ????????下篇文章J2ME手機開發之內存優化攻略(續)將繼續敘述有關代碼優化的內存。
    ????????二零零九年二月二十八日于東莞東陽光
    ??????? 嚴正聲明:本文出自即興詩人blogjava博客,作者經過整理總結而得,如轉載必需與作者聯系improviser@163.com



    ?
    鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
    ???? 隱姓埋名/低調華麗/簡單生活/完美人生

    posted on 2009-02-28 19:35 poetguo 閱讀(1518) 評論(0)  編輯  收藏 所屬分類: J2ME

    主站蜘蛛池模板: 亚洲成AV人片在WWW色猫咪 | jyzzjyzz国产免费观看| 大学生a级毛片免费观看| 亚洲精品日韩中文字幕久久久| 日韩免费视频一区二区| 四虎影视在线看免费观看| 最新69国产成人精品免费视频动漫 | 在线精品自拍亚洲第一区| 日韩免费电影在线观看| 亚洲精品无码久久久久牙蜜区| 在线观看成人免费视频| 亚洲粉嫩美白在线| 日韩免费无砖专区2020狼| 美女免费精品高清毛片在线视| 亚洲国产婷婷综合在线精品| 一级做性色a爰片久久毛片免费| 久久亚洲2019中文字幕| 久久久亚洲欧洲日产国码aⅴ| 免费人妻无码不卡中文字幕系| 18gay台湾男同亚洲男同| 久久笫一福利免费导航| 亚洲精品无码日韩国产不卡av| 国产成人免费a在线视频色戒| 九九九国产精品成人免费视频| 久久久久无码专区亚洲av| 中文字幕无码免费久久| 久久久久久亚洲精品成人| 国产乱子精品免费视观看片| 亚洲永久在线观看| 最近2019年免费中文字幕高清| 亚洲国产精品乱码在线观看97| 在线免费观看污网站| 久久国产免费直播| www.亚洲色图| 亚洲天堂中文字幕在线观看| 毛片网站免费在线观看| 高潮毛片无遮挡高清免费视频| 亚洲国产精品无码专区| 国产成人A在线观看视频免费| 人妻无码中文字幕免费视频蜜桃| 亚洲av午夜福利精品一区|