成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

J2ME應(yīng)用程序內(nèi)存優(yōu)化的三種途徑揭秘

開發(fā) 前端
本文向大家簡(jiǎn)單介紹一下J2ME應(yīng)用程序內(nèi)存優(yōu)化,大家都知道垃圾回收器是java的一大優(yōu)點(diǎn),實(shí)際上垃圾回收器并非實(shí)時(shí)的,它不像C++的Delete語句馬上釋放不用的內(nèi)存。

你知道如何進(jìn)行J2ME應(yīng)用程序內(nèi)存優(yōu)化嗎,主要包括代碼優(yōu)化,圖片優(yōu)化和工具優(yōu)化三部分內(nèi)容,相信通過本文的學(xué)習(xí)你對(duì)J2ME應(yīng)用程序內(nèi)存優(yōu)化一定會(huì)有深刻的認(rèn)識(shí)。

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

一.代碼優(yōu)化

  內(nèi)存會(huì)溢出肯定和代碼逃不了關(guān)系,99.99%學(xué)java的人都知道垃圾回收器是java的一大優(yōu)點(diǎn)并據(jù)此來嘲笑C++。顯然這個(gè)特性為代碼編寫者省了不少事,但這個(gè)特性卻帶來了不少隱患。舉個(gè)例子在游戲當(dāng)中經(jīng)常有不同場(chǎng)景的切換,如從游戲邏輯退到主菜單邏輯,對(duì)游戲邏輯對(duì)象的態(tài)度很多人會(huì)選擇忘記等待垃圾回收器來收尸。乍看之下似乎并無不妥垃圾回收器會(huì)來善后。

實(shí)際上垃圾回收器并非實(shí)時(shí)的,它不像C++的Delete語句馬上釋放不用的內(nèi)存。當(dāng)從游戲邏輯切換到主菜單邏輯這時(shí)兩個(gè)對(duì)象同時(shí)存在很可能這時(shí)內(nèi)存就不夠用了。讀到這里很多人會(huì)發(fā)現(xiàn)實(shí)際上垃圾回收器在j2me上并不怎么好用,從一個(gè)角度上來講在j2me上所有垃圾必須由手工釋放,除簡(jiǎn)單類型以外所有對(duì)象都必須顯式地置空例如imgs=null;實(shí)際上java提供了一個(gè)不錯(cuò)的工具用來查找內(nèi)存溢出,java.lang.Runtime.freeMemory()。它可以返回當(dāng)前的剩余內(nèi)存數(shù),將它適當(dāng)?shù)陌卜旁诖a中可以有效的監(jiān)測(cè)內(nèi)存使用狀況。很大一部份的j2me程序員之前都是從事pc軟件開發(fā)工作,充裕的內(nèi)存掩蓋了許多寫代碼的不良習(xí)慣。如下所示:

  1.   //a不為空  
  2.  
  3.   a=newLogic();  

  很多人可能對(duì)此有異議,他們會(huì)認(rèn)為新的對(duì)象會(huì)把舊的對(duì)象沖掉并且釋放內(nèi)存。這里面包含兩個(gè)問題:1.該段代碼是先創(chuàng)建對(duì)象然后再進(jìn)行賦值操作的,也就是說在這期間有兩個(gè)對(duì)象同時(shí)存在這就很可能會(huì)產(chǎn)生溢出。2.這樣做也會(huì)妨礙垃圾回收器的工作

  較好的寫法如下:

  1.   a=null;  
  2.  
  3.   a=newLogic();  

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

  1.   drawString("游戲時(shí)間:"  
  2. +time,50,50,Graphics.LEFT|Graphics.TOP); 

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

  把所有對(duì)象的初始化放在構(gòu)造函數(shù)里想必是再正當(dāng)不過了,大多數(shù)人通常的做法是把當(dāng)前邏輯所要用到的資源通通初始化完畢。

  很大一部份的內(nèi)存溢出都是發(fā)生在構(gòu)造函數(shù)中。內(nèi)存使用的高峰期都是在構(gòu)造函數(shù)中所以避開這個(gè)高峰能有效的防止溢出。建議最好的辦法是第一次使用時(shí)初始化。如下所示

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

  現(xiàn)在做游戲很多時(shí)候都需要地圖數(shù)組,聲音數(shù)組,還有一些其它資源這些資源很多可以放在代碼中也有的可以放在文件當(dāng)中。

  強(qiáng)烈建議將這些資源放在文件中需要時(shí)在load進(jìn)來。這些資源文件如果放在代碼中則會(huì)占用不小的代碼段空間,而代碼一般是程序一運(yùn)行就裝載到內(nèi)存當(dāng)中。

  除上面列舉的方法外還有一些大家所熟知的順便一提,比如關(guān)閉沒用的rms,關(guān)閉沒用的網(wǎng)絡(luò)連接,關(guān)閉沒用的流。正確地停止線程。良好的程序架構(gòu)減少代碼偶合性也是一個(gè)不錯(cuò)的方法,無論在代碼調(diào)式,內(nèi)存釋放都可以做到非常清析。下面看一下J2ME應(yīng)用程序內(nèi)存優(yōu)化之圖片優(yōu)化。#p#

二.圖片優(yōu)化

  j2me的內(nèi)存殺手無疑非圖片莫屬,一張3k的圖片可以占用20多k的內(nèi)存不信大家把load前后的內(nèi)存剩余打印出來對(duì)比看看。所以J2ME應(yīng)用程序內(nèi)存優(yōu)化防止內(nèi)存溢出最直接的辦法就是從圖片入手。

  1.圖片壓縮:多數(shù)人馬上會(huì)想到這個(gè)辦法。不錯(cuò)這個(gè)辦法是最有效的。在photoshop里圖片制作完成后不要選擇"存儲(chǔ)為",而是選擇"存儲(chǔ)為web所用格式"可以根據(jù)里面的選項(xiàng)進(jìn)行壓縮,特別是顏色這一項(xiàng)越小越好不過相應(yīng)的圖像會(huì)有所失真。不要認(rèn)為這樣就完了。

  實(shí)際上該圖片還可以再次壓縮,在網(wǎng)上有許多類似的工具。推薦一款可以壓縮png格式的軟件xat.comImageOptimizer效果不錯(cuò)。經(jīng)常都有70%的壓縮率且圖像不會(huì)失真。

  假如你有多張規(guī)格一樣的圖片,那么建議你把它做成一張長(zhǎng)條圖片。有兩個(gè)原因:

  1、這樣節(jié)省存儲(chǔ)空間和內(nèi)存空間。大家可做個(gè)試驗(yàn)將10張圖片的內(nèi)容放在一張當(dāng)中對(duì)比看看文件大小有沒有變化。

  2、10張圖片需要10個(gè)image對(duì)象需要進(jìn)行10次io操作浪費(fèi)時(shí)間不說還浪費(fèi)內(nèi)存。當(dāng)筆者發(fā)現(xiàn)這個(gè)好處時(shí)興奮地把所有圖片都存成一張,吱地一聲內(nèi)存又溢出了...原因想必大家也知道!!圖片太大了不要把不同界面的圖片整合在一起否則經(jīng)常會(huì)得不償失。

  作圖時(shí)還有一些細(xì)節(jié)需要注意,顏色數(shù)量,分辯率,圖像模式(最好是索引顏色),畫布大小都會(huì)影響到圖片大小。說完了J2ME應(yīng)用程序內(nèi)存優(yōu)化之圖片優(yōu)化后,下面我們就來看一下工具優(yōu)化。

三.工具優(yōu)化

  誰都知道混淆器是用來保護(hù)代碼的以加大反編譯的難度(個(gè)人認(rèn)為這是在嘲笑程序員的智商)。實(shí)際上用它來優(yōu)化程序也是不錯(cuò)的選擇,至少有兩點(diǎn)好處:

  1、壓縮程序大小。一個(gè)60k的程序經(jīng)常可以壓掉10k左右。10k的空間對(duì)于寫低端手機(jī)的程序員簡(jiǎn)直是雪中送碳,多少超過64k限制的游戲都受過它的恩惠;

  2、節(jié)省內(nèi)存空間。用腳去想也想得出來代碼少了內(nèi)存里的代碼段自然就短了。
 

【編輯推薦】

  1. J2ME應(yīng)用程序架構(gòu)模型詳解
  2. 探究開發(fā)J2ME應(yīng)用程序準(zhǔn)則
  3. IE6.0中使用Javascript支持png格式圖片
  4. J2ME應(yīng)用程序內(nèi)存優(yōu)化的幾種途徑
  5. Javascript巧妙解決img做網(wǎng)站異常提交問題

 

 

責(zé)任編輯:佚名 來源: tech.ddvip.com
相關(guān)推薦

2010-09-29 09:45:01

J2ME應(yīng)用程序

2010-10-09 16:13:10

J2ME應(yīng)用程序

2010-09-29 09:54:09

J2ME應(yīng)用程序

2010-09-30 13:39:52

2009-03-12 10:22:27

EclipseJ2MEJDT

2010-09-29 10:10:06

J2ME代碼優(yōu)化

2010-09-29 08:57:04

J2ME前景

2010-09-29 13:09:48

OTAJ2ME程序

2010-09-30 13:48:10

J2ME游戲引擎

2010-09-29 13:50:31

J2MEJ2SE

2010-10-09 16:04:22

J2ME代碼優(yōu)化

2010-10-09 15:40:19

CookieJ2ME

2010-09-29 12:45:50

J2ME

2010-02-04 13:15:59

Android J2M

2010-09-30 09:56:26

J2ME Polish

2010-09-29 09:19:39

J2ME開發(fā)工具

2011-05-12 14:34:55

cookieJ2ME

2010-09-26 13:04:06

JVM內(nèi)存查看

2010-09-29 10:41:18

J2MEJVM

2010-09-29 16:20:06

J2MEWeb服務(wù)API
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 天天色图 | 日日操av | 亚洲视频一区 | 中文字幕不卡在线88 | 久久精品国产免费看久久精品 | 亚洲一区久久 | 午夜激情影院 | 国产亚韩| 天堂成人国产精品一区 | 一区二区三区视频 | 亚洲三级av | 亚洲精品1区 | 91 久久 | 国产精品色 | 在线看无码的免费网站 | 91小视频在线 | 盗摄精品av一区二区三区 | 欧美日韩国产精品一区二区 | 欧美成人在线影院 | 成人福利电影 | 久久国产精品首页 | 国产精品久久久久久久久久久新郎 | 99精品欧美一区二区三区综合在线 | 午夜av在线| 欧美精品video | 日韩一区中文字幕 | 色综合天天综合网国产成人网 | 五月天婷婷狠狠 | 国产成人免费 | 午夜色婷婷 | 欧美一区二区三区久久精品 | 999精品视频 | 欧美国产激情二区三区 | 国产丝袜一区二区三区免费视频 | 久久精彩 | 国产精品视频网站 | 久久精品无码一区二区三区 | 夜夜夜夜夜夜曰天天天 | a中文在线视频 | 国产精品中文字幕在线 | 日韩中文字幕一区二区三区 |