java中內(nèi)存的那點(diǎn)事情

概念

虛擬機(jī)垃圾回收

談到內(nèi)存一定少不了java虛擬機(jī)的垃圾回收策略感局,java語言不再像C/C++那樣需要人工手動分配內(nèi)存和釋放內(nèi)存宣脉,完全由虛擬機(jī)的垃圾回收進(jìn)程來釋放不用的內(nèi)存徐块,垃圾回收進(jìn)程是一個優(yōu)先級很低的進(jìn)程吠撮,當(dāng)一個對象在內(nèi)存中不可達(dá)時博脑,就會被認(rèn)為是無用的內(nèi)存饲嗽,垃圾回收器就會在某個不確定的時間對其進(jìn)行釋放驻谆。關(guān)于java的垃圾回收策略可參考這篇文章--http://blog.csdn.net/u012152619/article/details/46981643

永久保存區(qū)域 --- Permanent Generation space

該區(qū)域主要保存類的方法和一些靜態(tài)屬性卵凑,當(dāng)class第一次被load到虛擬機(jī)時庆聘,會將類的一些方法說明和靜態(tài)屬性保存到該區(qū)域,這塊區(qū)域上的數(shù)據(jù)將持續(xù)到應(yīng)用的整個生命周期勺卢,該區(qū)域不受垃圾回收策略影響

棧 --- Stacks

java中伙判,為每個線程分配自己的獨(dú)立棧,棧內(nèi)存是一塊存儲基本數(shù)據(jù)變量和對象引用的區(qū)域黑忱,其數(shù)據(jù)遵從后進(jìn)先出的原則宴抚,棧數(shù)據(jù)回收的方式是根據(jù)其作用域來回收的,比如甫煞,在某個方法內(nèi)菇曲,定義了一個指向某一對象的局部引用,改引用就創(chuàng)建在棧上抚吠,當(dāng)這段方法代碼執(zhí)行完成后常潮,其棧上的引用就會被回收,同時也順應(yīng)了先進(jìn)后出的規(guī)則

堆 --- Heap space

java堆內(nèi)存是存對象實(shí)例和數(shù)組的區(qū)域楷力,這塊內(nèi)存上的數(shù)據(jù)是由垃圾回收器進(jìn)行垃圾回收喊式,垃圾回收線程是一個優(yōu)先級很低的線程柳击,所以當(dāng)棧上指向某一對象實(shí)例的引用被清除后坞生,并不能保證堆上的這個實(shí)例占用的內(nèi)存會被馬上回收掉;
  當(dāng)創(chuàng)建數(shù)組的時候椭符,會把數(shù)組的首地址賦到棧上去剪勿,作為引用來操作這個數(shù)組
  以上堆受虛擬機(jī)的垃圾回收管理贸诚,永久保存區(qū)域則不會

內(nèi)存問題

內(nèi)存溢出

系統(tǒng)分配給每個應(yīng)用的內(nèi)存都是一定的,當(dāng)應(yīng)用使用的內(nèi)存超過系統(tǒng)分配的內(nèi)存時就會出現(xiàn)內(nèi)存溢出厕吉,如常見OutOfMemeoryException
  為了防止內(nèi)存溢出酱固,我們需要及時回收應(yīng)用無用的對象實(shí)例,或者為我們的應(yīng)用申請更大的內(nèi)存空間

內(nèi)存泄露

當(dāng)內(nèi)存中有一塊內(nèi)存我們無法釋放也無法重現(xiàn)分配時头朱,這塊區(qū)域就屬于內(nèi)存泄露了
  java已經(jīng)有垃圾回收了运悲,那他還會出現(xiàn)內(nèi)存泄露嗎?
  ………………………………
  ………………………………
  ………………………………
  答案是肯定的项钮,人無完人班眯,更何況語言;
  一般來說java的內(nèi)存泄露都是這個原因引起的:
  對象都是有生命周期的烁巫,有的長署隘,有的短,如果長生命周期的對象持有短生命周期的引用亚隙,就很可能會出現(xiàn)內(nèi)存泄露
  常見兩個對象互相引用的問題磁餐,aa類實(shí)例里有一塊數(shù)據(jù),bb類的實(shí)例有一份指向aa類實(shí)例那塊數(shù)據(jù)引用阿弃,bb使用了沒有對引用null诊霹,而aa類也置為null了羞延,這個時候aa類實(shí)例因?yàn)閿?shù)據(jù)被別人引用,所以就不能被釋放脾还,造成內(nèi)存泄露伴箩;
  還有一種內(nèi)存泄露,開啟一個存活很久的線程鄙漏,加載一個類嗤谚,在這個類里面創(chuàng)建一個static引用,讓這個引用指向一個new很大的數(shù)組泥张,并把這個static引用賦值到threadLocal變里去呵恢;按照上面的操作重復(fù)操作,就會造成threadlocal

android設(shè)備上的內(nèi)存優(yōu)化

android移動設(shè)備上媚创,內(nèi)存資源本就有限渗钉,合理利用內(nèi)存資源對app的體驗(yàn)是很重要的,主要分為兩大類使用內(nèi)存上和及時銷毀釋放不需要的對象實(shí)例占用內(nèi)存

常見的內(nèi)存優(yōu)化要點(diǎn):

  • 數(shù)據(jù)結(jié)構(gòu)的優(yōu)化钞钙,hashmap替換成sparsearray鳄橘,以及Arraymap
  • 圖片色彩格式選擇
    ALPHA_8:每個像素占用1byte內(nèi)存。
    ARGB_4444:每個像素占用2byte內(nèi)存
    ARGB_8888:每個像素占用4byte內(nèi)存
    RGB_565:每個像素占用2byte內(nèi)存
  • Bitmap使用完后記得要recyle
  • Cursor記得要close
  • Enums類型是static constant內(nèi)存開銷的兩倍
  • 單例的慎用
  • 生命周期長對象實(shí)例慎用

內(nèi)存泄露資源參考貼
http://geek.csdn.net/news/detail/127226

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芒炼,一起剝皮案震驚了整個濱河市瘫怜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌本刽,老刑警劉巖鲸湃,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異子寓,居然都是意外死亡暗挑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門斜友,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炸裆,“玉大人,你說我怎么就攤上這事鲜屏∨肟矗” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵洛史,是天一觀的道長惯殊。 經(jīng)常有香客問我,道長也殖,這世上最難降的妖魔是什么靠胜? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上浪漠,老公的妹妹穿的比我還像新娘。我一直安慰自己霎褐,他們只是感情好址愿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冻璃,像睡著了一般响谓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上省艳,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天娘纷,我揣著相機(jī)與錄音,去河邊找鬼跋炕。 笑死赖晶,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辐烂。 我是一名探鬼主播遏插,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼纠修!你這毒婦竟也來了胳嘲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤扣草,失蹤者是張志新(化名)和其女友劉穎了牛,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辰妙,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹰祸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了上岗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片福荸。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖肴掷,靈堂內(nèi)的尸體忽然破棺而出敬锐,到底是詐尸還是另有隱情,我是刑警寧澤呆瞻,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布台夺,位于F島的核電站,受9級特大地震影響痴脾,放射性物質(zhì)發(fā)生泄漏颤介。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望滚朵。 院中可真熱鬧冤灾,春花似錦、人聲如沸辕近。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽移宅。三九已至归粉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漏峰,已是汗流浹背糠悼。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浅乔,地道東北人倔喂。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像童擎,于是被迫代替她去往敵國和親滴劲。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

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