日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
J2ME應(yīng)用程序內(nèi)存優(yōu)化的幾種途徑

開(kāi)發(fā)J2ME應(yīng)用程序時(shí),out momory內(nèi)存溢出這種痛苦經(jīng)常經(jīng)常出現(xiàn),所以J2ME應(yīng)用程序內(nèi)存的優(yōu)化是非常必要而必須的,這里向大家簡(jiǎn)單描述一下,相信本文介紹一定會(huì)讓你有所收獲。

創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供開(kāi)原企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為開(kāi)原眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

J2ME應(yīng)用程序內(nèi)存優(yōu)化

開(kāi)發(fā)J2ME應(yīng)用程序時(shí),out momory內(nèi)存溢出這種痛苦經(jīng)常經(jīng)常出現(xiàn)。要知道在手機(jī)上用內(nèi)存必須勒緊褲腰帶,手機(jī)是以K來(lái)計(jì)算的。寫(xiě)手機(jī)程序讓人回到了8086時(shí)代。J2ME應(yīng)用程序內(nèi)存的優(yōu)化是非常必要而必須的。

一.代碼優(yōu)化

內(nèi)存會(huì)溢出肯定和代碼逃不了關(guān)系,垃圾回收器是java的一大優(yōu)點(diǎn),顯然這個(gè)特性為代碼編寫(xiě)者省了不少事,但這個(gè)特性卻帶來(lái)了不少隱患。
舉個(gè)例子在游戲當(dāng)中經(jīng)常有不同場(chǎng)景的切換,如從游戲邏輯退到主菜單邏輯,對(duì)游戲邏輯對(duì)象的態(tài)度,很多人會(huì)選擇忘記內(nèi)存的釋放,就等著垃圾回收器自己來(lái)善后。但是實(shí)際上垃圾回收器并非實(shí)時(shí)的,它不像C++的Delete語(yǔ)句馬上釋放不用的內(nèi)存。當(dāng)從游戲邏輯切換到主菜單邏輯這時(shí)兩個(gè)對(duì)象同時(shí)存在很可能這時(shí)內(nèi)存就不夠用了。

實(shí)際上垃圾回收器在j2me上并不怎么好用,在j2me上所有垃圾手工釋放才比較直接有效,除簡(jiǎn)單類(lèi)型以外所有對(duì)象都必須顯式地置空例如 imgs=null; 實(shí)際上java提供了一個(gè)不錯(cuò)的工具用來(lái)查找內(nèi)存溢出,java.lang.Runtime.freeMemory() 。它可以返回當(dāng)前的剩余內(nèi)存數(shù),將它適當(dāng)?shù)陌卜旁诖a中可以有效的監(jiān)測(cè)內(nèi)存使用狀況。
有一部份的j2me程序員寫(xiě)代碼存在不良習(xí)慣。

例1:

 
 
 
  1. //a 不為空
  2. a=new menu();

這里面包含兩個(gè)問(wèn)題:

1. 該段代碼是先創(chuàng)建對(duì)象然后再進(jìn)行賦值操作的,也就是說(shuō)在這期間有兩個(gè)對(duì)象同時(shí)存在這就很可能會(huì)產(chǎn)生溢出。

2. 這樣做也會(huì)妨礙垃圾回收器的工作

較好的寫(xiě)法如下:

 
 
 
  1. a=null;
  2. System.gc(); // 回收a以前引用的對(duì)象
  3. a=new menu();

雖然麻煩了點(diǎn)但在j2me中還是必要的。

例2:

drawString(”游戲時(shí)間:” + time ,50,50,Graphics.LEFT|Graphics.TOP);
“游戲時(shí)間:” + time 很***在paint()方法當(dāng)中每次都被刷一遍顯示在屏幕上。該語(yǔ)句每次運(yùn)行時(shí)會(huì)重新分配內(nèi)存來(lái)存儲(chǔ) ”游戲時(shí)間:” + time 而顯示完以后又必須由垃圾回收器釋放,用了雙倍時(shí)間,并且容易發(fā)生內(nèi)存溢出。依此類(lèi)推在重復(fù)執(zhí)行的方法里應(yīng)盡量避免重復(fù)定義對(duì)象。與paint()方法類(lèi)似在循環(huán)里也有類(lèi)似的情況存在。

例3:

把所有對(duì)象的初始化放在構(gòu)造函數(shù)里,大多數(shù)人通常的做法是把當(dāng)前所要用到的資源通通一次初始化完畢。
很大一部份的內(nèi)存溢出都是發(fā)生在構(gòu)造函數(shù)中。內(nèi)存使用的高峰期都是在構(gòu)造函數(shù)中所以避開(kāi)這個(gè)高峰能有效的防止溢出。
比較好的做法是***次使用時(shí)初始化。如下所示

 
 
 
  1. if (img==null){
  2. //初始化
  3. }

現(xiàn)在做游戲都需要地圖數(shù)組,聲音數(shù)組,還有一些其它資源。
這些資源可以放在代碼中也可以放在文件當(dāng)中,但是建議將這些資源放在文件中需要時(shí)在loading進(jìn)來(lái)。這些資源如果放在代碼中則會(huì)占用不小的代碼段空間,而代碼一般是程序一運(yùn)行就裝載到內(nèi)存當(dāng)中。

除上面列舉的方法外還有其他的小方法, 比如關(guān)閉沒(méi)用的rms ,關(guān)閉沒(méi)用的網(wǎng)絡(luò)連接,關(guān)閉沒(méi)用的流。正確地停止線程。良好的程序架構(gòu)減少代碼偶合性也是一個(gè)不錯(cuò)的方法。#p#

二.圖片優(yōu)化

下面我們來(lái)看一下J2ME應(yīng)用程序內(nèi)存優(yōu)化的圖片優(yōu)化的概念。j2me的內(nèi)存殺手無(wú)疑非圖片莫屬,一張3k的圖片可以占用20多k的內(nèi)存。防止內(nèi)存溢出最直接的辦法就是從圖片入手。圖片壓縮: 多數(shù)人馬上會(huì)想到這個(gè)辦法。不錯(cuò)這個(gè)辦法是最有效的。在網(wǎng)上有許多圖片壓縮工具,這里就不詳細(xì)說(shuō)明了。
假如你有多張規(guī)格一樣的圖片,那么建議你把它做成一張長(zhǎng)條圖片。有兩個(gè)原因:

1>這樣節(jié)省存儲(chǔ)空間和內(nèi)存空間。10張圖片的內(nèi)容放在一張當(dāng)中和10張小圖片相比,文件大小減少了不少。

2>10張圖片需要10個(gè)image 對(duì)象需要進(jìn)行10次io操作浪費(fèi)時(shí)間還浪費(fèi)內(nèi)存。當(dāng)把所有圖片都存成一張,內(nèi)存又容易溢出了… 圖片太大了不要把不同界面的圖片整合在一起否則經(jīng)常會(huì)得不償失,這就需要在實(shí)踐中不斷調(diào)整了。

作圖時(shí)也有一些細(xì)節(jié)需要注意,顏色數(shù)量,分辯率,圖像模式(***是索引顏色),畫(huà)布大小都會(huì)影響到圖片大小。J2ME應(yīng)用程序內(nèi)存優(yōu)化如何使用工具進(jìn)行優(yōu)化呢。

三.工具優(yōu)化

混淆器是用來(lái)保護(hù)代碼的以加大反編譯的難度,實(shí)際上用它來(lái)優(yōu)化程序也是不錯(cuò)的選擇。

其實(shí)有兩點(diǎn)好處:

1> 壓縮程序大小: 一個(gè)60k的程序經(jīng)??梢詨旱?0多k。10k的空間對(duì)于低端手機(jī)來(lái)說(shuō)可不是個(gè)小數(shù)

2> 節(jié)省內(nèi)存空間: 代碼減小了內(nèi)存里的代碼段自然就短了。


網(wǎng)站標(biāo)題:J2ME應(yīng)用程序內(nèi)存優(yōu)化的幾種途徑
網(wǎng)址分享:http://www.5511xx.com/article/dphoics.html