《J2ME移動軟件程序設(shè)計》課件第7章_第1頁
《J2ME移動軟件程序設(shè)計》課件第7章_第2頁
《J2ME移動軟件程序設(shè)計》課件第7章_第3頁
《J2ME移動軟件程序設(shè)計》課件第7章_第4頁
《J2ME移動軟件程序設(shè)計》課件第7章_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

知識點:代碼優(yōu)化的一些基準優(yōu)化內(nèi)存使用優(yōu)化代碼運行速度優(yōu)化用戶界面合理地打包應用程序J2ME的程序兼容性本章導讀:

本章主要介紹如何優(yōu)化一個J2ME程序的性能。對J2ME中字符串編程、用戶界面編程、MIDlet打包和加密等工作進行了詳細討論,并對如何提高性能給出了切實可行的方法。J2ME移動軟件程序設(shè)計7.1.1代碼優(yōu)化基準概述7.1代碼優(yōu)化的一些基準

在J2SE(Java2的標準版)中,可以提供許多工具來對代碼性能、代碼運行瓶頸、內(nèi)存使用情況等進行檢測。J2ME中不存在這些工具,需要使用一些傳統(tǒng)的方法來測試和優(yōu)化代碼。在MIDP的API中提供了幾種對測試和優(yōu)化代碼很有用的方法。J2ME移動軟件程序設(shè)計7.1.2

內(nèi)存測試基準

使用java.lang.Runtime中所提供的兩種方法

publiclongfreeMemory();給出當前有多少字節(jié)的剩余內(nèi)存可以使用。publiclongtotalmemory();給出在當前運行環(huán)境中總共的存儲器大小。J2ME移動軟件程序設(shè)計例:查明一個對象到底需要使用多少內(nèi)存(變量size中)

Runtimeruntime=Runtime.getRuntime();longbefore,after;System.gc();before=runtime.freeMemory();ObjectnewObject=newString();after=runtime.freeMemory();longsize=before-after;J2ME移動軟件程序設(shè)計7.1.3時間測試基準

采用傳統(tǒng)的方式測試運行速度longstart,finish;start=System.currentTimeMillis();someMethod();finish=System.currentTimeMillis();longduration=finish-start;

J2ME移動軟件程序設(shè)計7.2.1優(yōu)化內(nèi)存概述7.2優(yōu)化內(nèi)存使用

在J2ME環(huán)境中內(nèi)存總是稀缺的內(nèi)存分配和垃圾收集器的運行將可能使應用程序的運行速度變慢在J2ME環(huán)境中小心使用內(nèi)存

J2ME移動軟件程序設(shè)計7.2.2創(chuàng)建和刪除對象

每當創(chuàng)建一個新對象時,內(nèi)存將被重新分配,而分配內(nèi)存將花費很多時間。在一個循環(huán)體開始處創(chuàng)建的對象,有可能在循環(huán)體的尾部被釋放。這就意味著,每一次循環(huán)體的執(zhí)行就將激發(fā)系統(tǒng)運行一次垃圾收集器,這樣將導致循環(huán)體的執(zhí)行速度與垃圾收集器的運行速度差不多。解決方法:將對象的創(chuàng)建從循環(huán)體內(nèi)放在循環(huán)體外。

J2ME移動軟件程序設(shè)計7.2.3字符串和字符串緩存

使用“+”操作符連接兩個字符串時,有可能導致新的字符串對象的創(chuàng)建,而新字符串對象的創(chuàng)建又將觸發(fā)內(nèi)存管理工作解決方法:放棄使用字符串和字符串緩存,而使用字符數(shù)組。

J2ME移動軟件程序設(shè)計7.2.4正確處理內(nèi)存不足

當一個對象被創(chuàng)建時,如果發(fā)生內(nèi)存不足的錯誤,MIDlet將拋出java.lang.OutOfMemoryError異常。解決方法:使用try/catch來攔截異常,并當異常出現(xiàn)時給用戶合理的解釋。

J2ME移動軟件程序設(shè)計7.3.1優(yōu)化循環(huán)

7.3優(yōu)化代碼運行速度

一切可以在循環(huán)體外部預先計算好的值都不應該放到循環(huán)體內(nèi)部計算。例:避免在循環(huán)體中對v.size()的重復調(diào)用優(yōu)化前優(yōu)化后for(inti=0;i<v.size();i++){Objecto=v.elementAt(i);//處理對象o}intsize=v.size();for(inti=0;i<size;i++){Objecto=v.elementAt(i);//處理對象o}J2ME移動軟件程序設(shè)計7.3.2使用數(shù)組代替對象

矢量和哈希表既簡單又方便,但它們會增加大量的系統(tǒng)開銷。

數(shù)組通常比集合類運行得更快、更可靠。J2ME移動軟件程序設(shè)計7.3.3使用緩存I/O

應該盡量避免從數(shù)據(jù)流中讀寫一個字節(jié)。盡量使用帶有緩沖的流讀寫方法。BufferedReader和BufferedWriter兩個類可以提供內(nèi)置的緩沖I/O功能,但在J2ME中沒有提供這兩個類,因此如果要提高I/O效率,就應該自己設(shè)計符合要求的帶有緩沖的I/O方式。

J2ME移動軟件程序設(shè)計7.3.4主動清理內(nèi)存

一旦不再使用所用內(nèi)存,就應該立即釋放,以提高應用程序的性能。如果有數(shù)組不再使用了,設(shè)置數(shù)組指向null,使數(shù)組能被垃圾收集器收集。如果程序需要馬上進行內(nèi)存垃圾搜集工作,顯式地調(diào)用System.gc()方法來實現(xiàn)。

J2ME移動軟件程序設(shè)計7.4優(yōu)化用戶界面在臺式計算機上能很快執(zhí)行完畢的程序,在移動電話上都可能需要很長的時間才執(zhí)行完。MIDlet的界面設(shè)計必須能讓用戶感到程序在運行,而不是長時間沒有任何反應的等待。在程序執(zhí)行需要較長時間的地方加入一些進度指示器(例如標尺),這樣用戶才能夠知道程序在執(zhí)行需要大量時間的運算。在MIDlet的界面設(shè)計中,基本的準則是:簡單明了、使用快捷、響應及時和信息豐富。

J2ME移動軟件程序設(shè)計7.5合理地打包應用程序

僅僅打包使用的代碼使用代碼加密保護程序J2ME移動軟件程序設(shè)計7.6

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論