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

付費(fèi)下載

下載本文檔

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

文檔簡介

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

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

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

內(nèi)存測試基準(zhǔn)

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

publiclongfreeMemory();給出當(dāng)前有多少字節(jié)的剩余內(nèi)存可以使用。publiclongtotalmemory();給出在當(dāng)前運(yùn)行環(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時間測試基準(zhǔn)

采用傳統(tǒng)的方式測試運(yùn)行速度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)存分配和垃圾收集器的運(yùn)行將可能使應(yīng)用程序的運(yùn)行速度變慢在J2ME環(huán)境中小心使用內(nèi)存

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

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

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

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

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

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

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

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

一切可以在循環(huán)體外部預(yù)先計算好的值都不應(yīng)該放到循環(huán)體內(nèi)部計算。例:避免在循環(huán)體中對v.size()的重復(fù)調(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ù)組通常比集合類運(yùn)行得更快、更可靠。J2ME移動軟件程序設(shè)計7.3.3使用緩存I/O

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論