Java內(nèi)存管理

本文是自己在復(fù)習(xí)java基礎(chǔ)知識(shí)時(shí)對(duì)內(nèi)存管理部分進(jìn)行的一點(diǎn)小小的梳理萌狂,有不對(duì)的地方還望各位大神指點(diǎn),歡迎分享。

1.內(nèi)存泄漏:由于某種原因使分配的內(nèi)存始終沒(méi)有得到釋放。如果該任務(wù)不斷的重復(fù)失都,程序最終會(huì)耗盡內(nèi)存并異常終止柏蘑,至少無(wú)法運(yùn)行。Java不要求程序員顯示分配內(nèi)存和釋放內(nèi)存粹庞,當(dāng)創(chuàng)建對(duì)象時(shí)會(huì)自動(dòng)分配內(nèi)存咳焚,當(dāng)該對(duì)象的引用不存在時(shí)釋放該內(nèi)存。在java中庞溜,內(nèi)存泄漏:1)對(duì)象可達(dá)革半,即在有向圖中,存在通路可以與其相連流码;2)對(duì)象是無(wú)用的又官,即程序以后不會(huì)再使用這些對(duì)象。如果滿足這兩個(gè)條件漫试,這些對(duì)象就可以判定為Java中的內(nèi)存泄漏六敬。在Java中,GC線程的優(yōu)先級(jí)別較低商虐。

2.Java中使用垃圾收集器技術(shù)來(lái)監(jiān)視程序的運(yùn)行狀態(tài)觉阅。這里會(huì)引用一種叫軟指針(不直接指向?qū)ο笱掳蹋侵赶驅(qū)ο蟮囊茫┑母拍蠲爻怠ava使用軟指針來(lái)跟蹤對(duì)象的各個(gè)引用,并用一個(gè)對(duì)象表將這些軟指針映射為對(duì)象的引用劫哼,使用軟指針叮趴,垃圾收集器能夠以單獨(dú)的線程在后臺(tái)運(yùn)行,并依次檢查每個(gè)對(duì)象权烧。通過(guò)更改對(duì)象表項(xiàng)眯亦,垃圾收集器可以標(biāo)記對(duì)象,移除對(duì)象般码,移動(dòng)對(duì)象或檢查對(duì)象妻率。

3.垃圾收集器是自動(dòng)運(yùn)行的,一般情況下板祝,無(wú)需顯示的請(qǐng)求垃圾收集器宫静,程序運(yùn)行時(shí),垃圾收集器會(huì)不時(shí)檢查對(duì)象的各個(gè)引用券时,并回收無(wú)引用對(duì)象所占用的空間孤里。調(diào)用System類中的靜態(tài)方法gc()可以運(yùn)行垃圾收集器,但并不能保證立即回收指定對(duì)象橘洞。

4.Java垃圾回收機(jī)制:gc即垃圾回收機(jī)制捌袜,是指JVM用于釋放那些不再使用的對(duì)象所占的內(nèi)存。Java的垃圾回收機(jī)制是為所有的進(jìn)程服務(wù)的炸枣,而不是為了某個(gè)特定的進(jìn)程服務(wù)虏等,因此任何一個(gè)進(jìn)程都不能命令垃圾回收機(jī)制做什么弄唧,怎么做,做多少霍衫。在垃圾回收器收集一個(gè)對(duì)象之前套才,一般要求程序調(diào)用適當(dāng)?shù)姆椒ㄡ尫刨Y源,這個(gè)方法就是finalize()慕淡。原型是protected void finalize() throws Throwable背伴。在該方法返回之后,對(duì)象消失峰髓,垃圾回收器開始執(zhí)行傻寂。

5.在Java中程序員通過(guò)使用new關(guān)鍵字申請(qǐng)內(nèi)存空間,所有的對(duì)象都在堆中分配空間携兵,釋放是由GC決定和執(zhí)行疾掰。正因?yàn)槿绱耍又亓薐VM的負(fù)擔(dān)徐紧,這就造成了java程序運(yùn)行較慢(原因之一)静檬。因?yàn)镚C要監(jiān)控每一個(gè)對(duì)象的運(yùn)行狀態(tài),包括對(duì)象的申請(qǐng)并级,引用拂檩,被引用和賦值等。


堆棧:

1.Java中把內(nèi)存劃分為2種嘲碧,一種是棧內(nèi)存稻励,一種是堆內(nèi)存。棧:存取速度比堆快愈涩,僅次于直接位于CPU中的寄存器望抽,但缺點(diǎn)是存在于棧中的數(shù)據(jù)大小與生存周期必須是確定的,缺乏靈活性履婉,另外棧數(shù)據(jù)可以共享煤篙。堆:動(dòng)態(tài)分配內(nèi)存大小,生存周期也不必事先告訴編譯器毁腿,java垃圾收集器會(huì)自動(dòng)收走這些不再使用的數(shù)據(jù)辑奈。缺點(diǎn)是,由于要在運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存狸棍,存取速度慢身害。

2.8種基本數(shù)據(jù)類型(int, short, long, byte, float, double, boolean, char)是存在于棧中,而且還有數(shù)據(jù)共享的功能草戈。int a = 3;int b = 3;這里在棧中只存在一個(gè)3,而且a = 4,也不會(huì)影響b的值塌鸯,b還是3.對(duì)于String str = "abc";同樣適用,但不適用于String str = new String("abc");

3.棧主要存放一些基本數(shù)據(jù)類型的變量和對(duì)象句柄(對(duì)象的引用)唐片。在堆中產(chǎn)生了一個(gè)數(shù)組或?qū)ο蠛蟊€可以在棧中定義一個(gè)特殊的變量涨颜,讓棧中這個(gè)變量的取值等于數(shù)組或?qū)ο笤诙褍?nèi)存中的首地址,棧中的這個(gè)變量就成了數(shù)組或?qū)ο蟮囊米兞考肭颉R米兞烤拖喈?dāng)于是為數(shù)組或?qū)ο笃鸬囊粋€(gè)名稱庭瑰,以后就可以在程序中使用棧中的引用變量來(lái)訪問(wèn)堆中的數(shù)組或?qū)ο蟆?/p>

4.我們?cè)谑褂弥T如String str = "abc";的格式定義類時(shí)抢埋,總是想當(dāng)然地認(rèn)為弹灭,創(chuàng)建了String類的對(duì)象str,不一定,因?yàn)槿绻孪葲](méi)有揪垄,那么就會(huì)創(chuàng)建穷吮,如果原來(lái)就有,那就指向那個(gè)原來(lái)的對(duì)象就可以了饥努!只有通過(guò)new()方法才能保證每次都創(chuàng)建一個(gè)新的對(duì)象捡鱼。由于String類的immutable性質(zhì),當(dāng)String變量需要經(jīng)常變換其值時(shí)酷愧,應(yīng)該考慮使用StringBuffer類驾诈,以提高程序效率。

注:更加深入的垃圾回收以及內(nèi)存管理機(jī)制參考印象筆記中的相關(guān)筆記溶浴。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乍迄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子戳葵,更是在濱河造成了極大的恐慌就乓,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拱烁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡噩翠,警方通過(guò)查閱死者的電腦和手機(jī)戏自,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)伤锚,“玉大人擅笔,你說(shuō)我怎么就攤上這事⊥驮” “怎么了猛们?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)狞洋。 經(jīng)常有香客問(wèn)我弯淘,道長(zhǎng),這世上最難降的妖魔是什么吉懊? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任庐橙,我火速辦了婚禮假勿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘态鳖。我一直安慰自己转培,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布浆竭。 她就那樣靜靜地躺著浸须,像睡著了一般。 火紅的嫁衣襯著肌膚如雪邦泄。 梳的紋絲不亂的頭發(fā)上羽戒,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音虎韵,去河邊找鬼易稠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛包蓝,可吹牛的內(nèi)容都是我干的驶社。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼测萎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼亡电!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起硅瞧,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤份乒,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后腕唧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體或辖,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年枣接,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颂暇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡但惶,死狀恐怖耳鸯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情膀曾,我是刑警寧澤县爬,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站添谊,受9級(jí)特大地震影響财喳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碉钠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一纲缓、第九天 我趴在偏房一處隱蔽的房頂上張望卷拘。 院中可真熱鬧,春花似錦祝高、人聲如沸栗弟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)乍赫。三九已至,卻和暖如春陆蟆,著一層夾襖步出監(jiān)牢的瞬間雷厂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工叠殷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留改鲫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓林束,卻偏偏與公主長(zhǎng)得像像棘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子壶冒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

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