關(guān)于資源圖片和占的內(nèi)存

1、關(guān)于Bitmap

在安卓2.3.3(API級(jí)別10)之前,Bitmap像素?cái)?shù)據(jù)和Bitmap對(duì)象是分開存儲(chǔ)的春叫,像素?cái)?shù)據(jù)是存儲(chǔ)在native memory中,對(duì)象存儲(chǔ)在Dalvik heap中,native memory中的像素?cái)?shù)據(jù)不是以一種可預(yù)見的方式釋放,可能導(dǎo)致應(yīng)用程序暫時(shí)超過其內(nèi)存限制和崩潰暂殖,所以在Android2.3.3(API 10)之前你必須要調(diào)用recycle()方法來釋放掉內(nèi)存避免出現(xiàn)OOM,當(dāng)然前提是確定這個(gè)bitmap不再使用价匠,否則會(huì)出現(xiàn) "Canvas: trying to use a recycled bitmap".
在Android3.0(API 11)之后,Bitmap的像素?cái)?shù)據(jù)和Bitmap對(duì)象一起存儲(chǔ)在Dalvik heap中呛每,所以我們不用手動(dòng)調(diào)用recycle()來釋放Bitmap對(duì)象踩窖,內(nèi)存的釋放都交給垃圾回收器來做。

2晨横、資源圖片占的內(nèi)存

我們圖片的尺寸是720×1280洋腮,所有像素點(diǎn)占用內(nèi)存=720x1280x4=3686400 byte=3.515625M,這個(gè)大小是圖片不做任何處理時(shí)占用的內(nèi)存大小手形。但是系統(tǒng)在將圖片處理成Drawable對(duì)象的時(shí)候會(huì)作一些處理啥供。
有兩個(gè)非常重要的參數(shù),inDensity和inTargetDensity:
1叁幢、inDensity表示被設(shè)定的圖像密度滤灯,決定這個(gè)值的是圖片所放置的文件目錄坪稽,比如drawable-hdpi曼玩、drawable-xhdpi等等,其對(duì)應(yīng)的density如下表:

inDensity

如果圖片放在drawable-hdpi下窒百,inDensity=240

2黍判、inTargetDensity表示最終需要適配到的圖片密度,這個(gè)值由手機(jī)設(shè)備來決定篙梢,手機(jī)屏幕越高清這個(gè)值越大顷帖,而我們例子中720p的小米2S對(duì)應(yīng)的densityDpi=320

如果inDensity的值和inTargetDensity的值不相等渤滞,那么圖片尺寸就被會(huì)縮放贬墩,縮放的比例為 inTargetDensity / inDensity。

因?yàn)閳D片占用內(nèi)存與圖片的尺寸有關(guān)妄呕,如果被尺寸縮放了陶舞,內(nèi)存大小就變了。前面未作任何縮放處理的720×1280圖占用內(nèi)存是3.515625M绪励,假設(shè)放在drawable-ldpi目錄下inDensity=120肿孵,設(shè)備inTargetDensity=320,那么最終的占用內(nèi)存大小將是3.515625Mx(320/120)x(320/120)=25M疏魏。

一張圖片占用25M大小停做,很恐怖的一個(gè)值,這種情況下大莫,app估計(jì)直接掛了蛉腌,如果放在drawable-hdpi下,占用就是6.25M,drawable-xhdpi下占用是3.515625M烙丛。由此可見贯吓,圖片放置的目錄一定要慎重。

最終我們得出一個(gè)公式:
資源圖片內(nèi)存大小 = 寬 x 高 x 4 x (設(shè)備密度 / 資源維度密度)x(設(shè)備密度 / 資源維度密度)

參考:Android應(yīng)用性能優(yōu)化系列視圖篇——隱藏在資源圖片中的內(nèi)存殺手

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜀变,一起剝皮案震驚了整個(gè)濱河市悄谐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌库北,老刑警劉巖爬舰,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異寒瓦,居然都是意外死亡情屹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門杂腰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來垃你,“玉大人,你說我怎么就攤上這事喂很∠模” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵少辣,是天一觀的道長凌摄。 經(jīng)常有香客問我,道長漓帅,這世上最難降的妖魔是什么锨亏? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮忙干,結(jié)果婚禮上器予,老公的妹妹穿的比我還像新娘。我一直安慰自己捐迫,他們只是感情好乾翔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著弓乙,像睡著了一般末融。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上暇韧,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天勾习,我揣著相機(jī)與錄音,去河邊找鬼懈玻。 笑死巧婶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播艺栈,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼英岭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了湿右?” 一聲冷哼從身側(cè)響起诅妹,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎毅人,沒想到半個(gè)月后吭狡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丈莺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年划煮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缔俄。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡弛秋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出俐载,到底是詐尸還是另有隱情蟹略,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布瞎疼,位于F島的核電站科乎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏贼急。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一捏萍、第九天 我趴在偏房一處隱蔽的房頂上張望太抓。 院中可真熱鬧,春花似錦令杈、人聲如沸走敌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掉丽。三九已至,卻和暖如春异雁,著一層夾襖步出監(jiān)牢的瞬間捶障,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國打工纲刀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留项炼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像锭部,于是被迫代替她去往敵國和親暂论。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容