內(nèi)存泄漏

1.什么是內(nèi)存泄漏

當(dāng)一個對象已經(jīng)不需要再使用本該被回收時屈雄,另外一個正在使用的對象持有它的引用從而導(dǎo)致它不能被回收,這導(dǎo)致本該被回收的對象不能被回收而停留在堆內(nèi)存中膘掰,這就產(chǎn)生了內(nèi)存泄漏猾担。

本質(zhì):
長期存活對象引用短期存活對象陕壹,導(dǎo)致短期存活對象占用的對象無法回收。

2.產(chǎn)生內(nèi)存泄漏情況

1.靜態(tài)集合類

如HashMap共郭、LinkedList等等祠丝。如果這些容器為靜態(tài)的,那么它們的生命周期與程序一致除嘹,則容器中的對象在程序結(jié)束之前將不能被釋放写半,從而造成內(nèi)存泄漏。簡單而言尉咕,長生命周期的對象持有短生命周期對象的引用叠蝇,盡管短生命周期的對象不再使用,但是因為長生命周期對象持有它的引用而導(dǎo)致不能被回收年缎。

2.各種連接悔捶,數(shù)據(jù)庫連接铃慷、網(wǎng)絡(luò)連接和IO連接等

在對數(shù)據(jù)庫進(jìn)行操作的過程中,首先需要建立與數(shù)據(jù)庫的連接蜕该,當(dāng)不再使用時犁柜,需要調(diào)用close方法來釋放與數(shù)據(jù)庫的連接。只有連接被關(guān)閉后堂淡,垃圾回收器才會回收對應(yīng)的對象馋缅。否則,如果在訪問數(shù)據(jù)庫的過程中绢淀,對Connection萤悴、Statement或ResultSet不顯性地關(guān)閉,將會造成大量的對象無法被回收皆的,從而引起內(nèi)存泄漏稚疹。

3.變量不合理的作用域

一般而言,一個變量的定義的作用范圍大于其使用范圍祭务,很有可能會造成內(nèi)存泄漏内狗。另一方面,如果沒有及時地把對象設(shè)置為null义锥,很有可能導(dǎo)致內(nèi)存泄漏的發(fā)生柳沙。

4.緩存泄漏

內(nèi)存泄漏的另一個常見來源是緩存,一旦你把對象引用放入到緩存中拌倍,他就很容易遺忘赂鲤,對于這個問題,可以使用WeakHashMap代表緩存柱恤,此種Map的特點是数初,當(dāng)除了自身有對key的引用外,此key沒有其他引用那么此map會自動丟棄此值

5.監(jiān)聽器和回調(diào)

如果客戶端在你實現(xiàn)的API中注冊回調(diào)梗顺,卻沒有顯示的取消泡孩,那么就會積聚。

3.解決方法

對jvm的堆內(nèi)存進(jìn)行dump寺谤,只有拿到這個文件我們才能分析出jvm堆內(nèi)存中到底存了些什么內(nèi)容仑鸥,到底在做什么?然后定位具體代碼变屁,修改代碼解決問題

具體:
使用內(nèi)存映像分析工具對dump出來的堆轉(zhuǎn)儲快照進(jìn)行分析眼俊,可以通過工具查看泄露對象到GC Roots的引用鏈,掌握泄露對象的信息粟关,從而確定泄露的代碼位置進(jìn)行修改

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疮胖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌澎灸,老刑警劉巖院塞,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異击孩,居然都是意外死亡迫悠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門巩梢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來创泄,“玉大人,你說我怎么就攤上這事括蝠【弦郑” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵忌警,是天一觀的道長搁拙。 經(jīng)常有香客問我,道長法绵,這世上最難降的妖魔是什么箕速? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮朋譬,結(jié)果婚禮上盐茎,老公的妹妹穿的比我還像新娘。我一直安慰自己徙赢,他們只是感情好字柠,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著狡赐,像睡著了一般窑业。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上枕屉,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天常柄,我揣著相機(jī)與錄音,去河邊找鬼搀庶。 笑死拐纱,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的哥倔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼揍庄,長吁一口氣:“原來是場噩夢啊……” “哼咆蒿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤沃测,失蹤者是張志新(化名)和其女友劉穎缭黔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒂破,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡馏谨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了附迷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惧互。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喇伯,靈堂內(nèi)的尸體忽然破棺而出喊儡,到底是詐尸還是另有隱情,我是刑警寧澤稻据,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布艾猜,位于F島的核電站,受9級特大地震影響捻悯,放射性物質(zhì)發(fā)生泄漏匆赃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一今缚、第九天 我趴在偏房一處隱蔽的房頂上張望算柳。 院中可真熱鬧,春花似錦荚斯、人聲如沸埠居。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滥壕。三九已至,卻和暖如春兽泣,著一層夾襖步出監(jiān)牢的瞬間绎橘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工唠倦, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留称鳞,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓稠鼻,卻偏偏與公主長得像冈止,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子候齿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

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