




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
知識(shí)點(diǎn):代碼優(yōu)化的一些基準(zhǔn)優(yōu)化內(nèi)存使用優(yōu)化代碼運(yùn)行速度優(yōu)化用戶(hù)界面合理地打包應(yīng)用程序J2ME的程序兼容性本章導(dǎo)讀:
本章主要介紹如何優(yōu)化一個(gè)J2ME程序的性能。對(duì)J2ME中字符串編程、用戶(hù)界面編程、MIDlet打包和加密等工作進(jìn)行了詳細(xì)討論,并對(duì)如何提高性能給出了切實(shí)可行的方法。J2ME移動(dòng)軟件程序設(shè)計(jì)7.1.1代碼優(yōu)化基準(zhǔn)概述7.1代碼優(yōu)化的一些基準(zhǔn)
在J2SE(Java2的標(biāo)準(zhǔn)版)中,可以提供許多工具來(lái)對(duì)代碼性能、代碼運(yùn)行瓶頸、內(nèi)存使用情況等進(jìn)行檢測(cè)。J2ME中不存在這些工具,需要使用一些傳統(tǒng)的方法來(lái)測(cè)試和優(yōu)化代碼。在MIDP的API中提供了幾種對(duì)測(cè)試和優(yōu)化代碼很有用的方法。J2ME移動(dòng)軟件程序設(shè)計(jì)7.1.2
內(nèi)存測(cè)試基準(zhǔn)
使用java.lang.Runtime中所提供的兩種方法
publiclongfreeMemory();給出當(dāng)前有多少字節(jié)的剩余內(nèi)存可以使用。publiclongtotalmemory();給出在當(dāng)前運(yùn)行環(huán)境中總共的存儲(chǔ)器大小。J2ME移動(dòng)軟件程序設(shè)計(jì)例:查明一個(gè)對(duì)象到底需要使用多少內(nèi)存(變量size中)
Runtimeruntime=Runtime.getRuntime();longbefore,after;System.gc();before=runtime.freeMemory();ObjectnewObject=newString();after=runtime.freeMemory();longsize=before-after;J2ME移動(dòng)軟件程序設(shè)計(jì)7.1.3時(shí)間測(cè)試基準(zhǔn)
采用傳統(tǒng)的方式測(cè)試運(yùn)行速度longstart,finish;start=System.currentTimeMillis();someMethod();finish=System.currentTimeMillis();longduration=finish-start;
J2ME移動(dòng)軟件程序設(shè)計(jì)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移動(dòng)軟件程序設(shè)計(jì)7.2.2創(chuàng)建和刪除對(duì)象
每當(dāng)創(chuàng)建一個(gè)新對(duì)象時(shí),內(nèi)存將被重新分配,而分配內(nèi)存將花費(fèi)很多時(shí)間。在一個(gè)循環(huán)體開(kāi)始處創(chuàng)建的對(duì)象,有可能在循環(huán)體的尾部被釋放。這就意味著,每一次循環(huán)體的執(zhí)行就將激發(fā)系統(tǒng)運(yùn)行一次垃圾收集器,這樣將導(dǎo)致循環(huán)體的執(zhí)行速度與垃圾收集器的運(yùn)行速度差不多。解決方法:將對(duì)象的創(chuàng)建從循環(huán)體內(nèi)放在循環(huán)體外。
J2ME移動(dòng)軟件程序設(shè)計(jì)7.2.3字符串和字符串緩存
使用“+”操作符連接兩個(gè)字符串時(shí),有可能導(dǎo)致新的字符串對(duì)象的創(chuàng)建,而新字符串對(duì)象的創(chuàng)建又將觸發(fā)內(nèi)存管理工作解決方法:放棄使用字符串和字符串緩存,而使用字符數(shù)組。
J2ME移動(dòng)軟件程序設(shè)計(jì)7.2.4正確處理內(nèi)存不足
當(dāng)一個(gè)對(duì)象被創(chuàng)建時(shí),如果發(fā)生內(nèi)存不足的錯(cuò)誤,MIDlet將拋出java.lang.OutOfMemoryError異常。解決方法:使用try/catch來(lái)攔截異常,并當(dāng)異常出現(xiàn)時(shí)給用戶(hù)合理的解釋。
J2ME移動(dòng)軟件程序設(shè)計(jì)7.3.1優(yōu)化循環(huán)
7.3優(yōu)化代碼運(yùn)行速度
一切可以在循環(huán)體外部預(yù)先計(jì)算好的值都不應(yīng)該放到循環(huán)體內(nèi)部計(jì)算。例:避免在循環(huán)體中對(duì)v.size()的重復(fù)調(diào)用優(yōu)化前優(yōu)化后for(inti=0;i<v.size();i++){Objecto=v.elementAt(i);//處理對(duì)象o}intsize=v.size();for(inti=0;i<size;i++){Objecto=v.elementAt(i);//處理對(duì)象o}J2ME移動(dòng)軟件程序設(shè)計(jì)7.3.2使用數(shù)組代替對(duì)象
矢量和哈希表既簡(jiǎn)單又方便,但它們會(huì)增加大量的系統(tǒng)開(kāi)銷(xiāo)。
數(shù)組通常比集合類(lèi)運(yùn)行得更快、更可靠。J2ME移動(dòng)軟件程序設(shè)計(jì)7.3.3使用緩存I/O
應(yīng)該盡量避免從數(shù)據(jù)流中讀寫(xiě)一個(gè)字節(jié)。盡量使用帶有緩沖的流讀寫(xiě)方法。BufferedReader和BufferedWriter兩個(gè)類(lèi)可以提供內(nèi)置的緩沖I/O功能,但在J2ME中沒(méi)有提供這兩個(gè)類(lèi),因此如果要提高I/O效率,就應(yīng)該自己設(shè)計(jì)符合要求的帶有緩沖的I/O方式。
J2ME移動(dòng)軟件程序設(shè)計(jì)7.3.4主動(dòng)清理內(nèi)存
一旦不再使用所用內(nèi)存,就應(yīng)該立即釋放,以提高應(yīng)用程序的性能。如果有數(shù)組不再使用了,設(shè)置數(shù)組指向null,使數(shù)組能被垃圾收集器收集。如果程序需要馬上進(jìn)行內(nèi)存垃圾搜集工作,顯式地調(diào)用System.gc()方法來(lái)實(shí)現(xiàn)。
J2ME移動(dòng)軟件程序設(shè)計(jì)7.4優(yōu)化用戶(hù)界面在臺(tái)式計(jì)算機(jī)上能很快執(zhí)行完畢的程序,在移動(dòng)電話(huà)上都可能需要很長(zhǎng)的時(shí)間才執(zhí)行完。MIDlet的界面設(shè)計(jì)必須能讓用戶(hù)感到程序在運(yùn)行,而不是長(zhǎng)時(shí)間沒(méi)有任何反應(yīng)的等待。在程序執(zhí)行需要較長(zhǎng)時(shí)間的地方加入一些進(jìn)度指示器(例如標(biāo)尺),這樣用戶(hù)才能夠知道程序在執(zhí)行需要大量時(shí)間的運(yùn)算。在MIDlet的界面設(shè)計(jì)中,基本的準(zhǔn)則是:簡(jiǎn)單明了、使用快捷、響應(yīng)及時(shí)和信息豐富。
J2ME移動(dòng)軟件程序設(shè)計(jì)7.5合理地打包應(yīng)用程序
僅僅打包使用的代碼使用代碼加密保護(hù)程序J2ME移動(dòng)軟件程序設(shè)計(jì)7.6
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二次根式的性質(zhì)教學(xué)設(shè)計(jì)
- 醫(yī)療廢棄物處理的可持續(xù)發(fā)展路徑
- 區(qū)塊鏈技術(shù)在智能合約中的應(yīng)用實(shí)例
- 健康產(chǎn)業(yè)人才激勵(lì)機(jī)制研究報(bào)告
- 健康教育與生活方式改變的關(guān)聯(lián)性研究
- 周?chē)懿〉呐R床護(hù)理
- 醫(yī)療健康數(shù)據(jù)隱私保護(hù)HIPAA的核心要點(diǎn)
- 2025年5月山西省晉中市高考適應(yīng)訓(xùn)練考試物理試卷(含答案)
- 企業(yè)出兌合同范例
- 1000元租房合同范例
- SL631-637-2012-水利水電工程單元工程施工質(zhì)量驗(yàn)收評(píng)定標(biāo)準(zhǔn)
- 項(xiàng)目管理課件
- 人教版七年級(jí)生物下冊(cè)《血流的管道-血管》評(píng)課稿
- 裝配式建筑施工技術(shù)PPT(高職)完整全套教學(xué)課件
- 涉詐風(fēng)險(xiǎn)賬戶(hù)審查表
- 門(mén)診辦運(yùn)用PDCA提高門(mén)診預(yù)約掛號(hào)率品管圈成果匯報(bào)
- 市場(chǎng)開(kāi)拓委托合同書(shū)
- 跟骨牽引 跟骨牽引圖片
- 《莊子過(guò)惠子之墓》中考文言文閱讀試題2篇(含答案與翻譯)
- 6、柴油發(fā)電機(jī)房安全風(fēng)險(xiǎn)告知卡
- 2023學(xué)年完整公開(kāi)課版ThelastdayofPompeii
評(píng)論
0/150
提交評(píng)論