成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java內(nèi)存泄漏介紹

nanfeiyan / 967人閱讀

摘要:本章會(huì)說(shuō)明什么是內(nèi)存泄漏,為什么發(fā)生,以及如何防止它們。但是,未使用的對(duì)象并不是全部未被引用,其中一些被引用這是內(nèi)存泄漏的來(lái)源。注意集合類,如等,因?yàn)樗鼈兪前l(fā)現(xiàn)內(nèi)存泄漏的常見地方。如果一個(gè)類管理自己的內(nèi)存,程序應(yīng)該對(duì)內(nèi)存泄漏保持警惕。

內(nèi)存管理是Java最重要的優(yōu)勢(shì)之一,你只需創(chuàng)建對(duì)象,Java垃圾收集器會(huì)自動(dòng)負(fù)責(zé)分配和釋放內(nèi)存。但是,情況并不那么簡(jiǎn)單,因?yàn)樵贘ava應(yīng)用程序中經(jīng)常發(fā)生內(nèi)存泄漏。

本章會(huì)說(shuō)明什么是內(nèi)存泄漏,為什么發(fā)生,以及如何防止它們。

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

內(nèi)存泄漏的定義:應(yīng)用程序不再使用的對(duì)象,垃圾收集器卻無(wú)法刪除它們,因?yàn)樗鼈冋诒灰谩?/p>

為了理解這個(gè)定義,我們需要了解對(duì)象在內(nèi)存中的狀態(tài)。下圖說(shuō)明了什么是未引用的,什么是引用的對(duì)象。

從圖中可以看出,有被引用的對(duì)象和未被引用的對(duì)象。未引用的對(duì)象將被垃圾收集,而被引用的對(duì)象將不會(huì)被垃圾收集。未引用的對(duì)象肯定是未使用的,因?yàn)闆](méi)有其他對(duì)象引用它。但是,未使用的對(duì)象并不是全部未被引用,其中一些被引用!這是內(nèi)存泄漏的來(lái)源。

為什么內(nèi)存泄漏發(fā)生?

讓我們來(lái)看看下面的例子,看看為什么發(fā)生內(nèi)存泄漏。在下面的例子中,對(duì)象A是指對(duì)象B。A的生命周期(t1 - t4)比B的(t2 - t3)長(zhǎng)得多,當(dāng)應(yīng)用中不再使用B時(shí),A仍然有一個(gè)B的引用,這樣垃圾收集器就不能從內(nèi)存中刪除B。這就可能會(huì)導(dǎo)致內(nèi)存不足的問(wèn)題,因?yàn)槿绻鸄同時(shí)為更多的對(duì)象做同樣的事情,那么會(huì)有很多像B這樣的對(duì)象沒(méi)有收集并占用內(nèi)存空間。

B也可能擁有一堆其他對(duì)象的引用,B引用的對(duì)象也不會(huì)被收集。所有這些未使用的對(duì)象將消耗寶貴的內(nèi)存空間。

如何防止內(nèi)存泄漏?

以下是防止內(nèi)存泄漏的一些快速實(shí)用技巧。

注意集合類,如HashMap、ArrayList等,因?yàn)樗鼈兪前l(fā)現(xiàn)內(nèi)存泄漏的常見地方。當(dāng)它們被聲明為靜態(tài)時(shí),它們的生命時(shí)間與應(yīng)用程序的生命時(shí)間是相同的。

注意事件監(jiān)聽器和回調(diào)。如果一個(gè)偵聽器被注冊(cè)了,但是當(dāng)類不再被使用時(shí),可能會(huì)發(fā)生內(nèi)存泄漏。

如果一個(gè)類管理自己的內(nèi)存,程序應(yīng)該對(duì)內(nèi)存泄漏保持警惕。通常情況下,指向其他對(duì)象的成員變量需要為null值。

思考

為什么JDK 6中的substring方法會(huì)導(dǎo)致內(nèi)存泄漏?

推薦閱讀

去BAT面試完的Mysql面試題總結(jié)(55道,帶完整答案)

阿里高級(jí)Java面試題(首發(fā),70道,帶詳細(xì)答案)

2017派臥底去阿里、京東、美團(tuán)、滴滴帶回來(lái)的面試題及答案

Spring面試題(70道,史上最全)

通往大神之路,百度Java面試題前200頁(yè)。

分享Java干貨,高并發(fā)編程,熱門技術(shù)教程,微服務(wù)及分布式技術(shù),架構(gòu)設(shè)計(jì),區(qū)塊鏈技術(shù),人工智能,大數(shù)據(jù),Java面試題,以及前沿?zé)衢T資訊等。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71381.html

相關(guān)文章

  • 內(nèi)存 問(wèn)題- 收藏集 - 掘金

    摘要:然而,中依然有可能發(fā)生內(nèi)存泄漏。所以你的安卓快速定位解決內(nèi)存泄漏掘金昨天是個(gè)好日子,程序員的節(jié)日,在這里給所有的程序員送上一份遲到的祝福。應(yīng)用內(nèi)存泄漏的定位分析與解決策略掘金,大家好,我是。 Android 性能優(yōu)化之巧用軟引用與弱引用優(yōu)化內(nèi)存使用 - Android - 掘金前言: 從事Android開發(fā)的同學(xué)都知道移動(dòng)設(shè)備的內(nèi)存使用是非常敏感的話題,今天我們來(lái)看下如何使用軟引用與弱...

    TIGERB 評(píng)論0 收藏0
  • Android內(nèi)存泄漏定位、分析、解決全方案

    摘要:如果這個(gè)靜態(tài)變量在生命周期結(jié)束后沒(méi)有清空,就導(dǎo)致內(nèi)存泄漏。因此造成內(nèi)存泄露。注冊(cè)沒(méi)取消造成的內(nèi)存泄露這種的內(nèi)存泄露比純的內(nèi)存泄漏還要嚴(yán)重,因?yàn)槠渌恍┏绦蚩赡芤孟到y(tǒng)的程序的對(duì)象比如注冊(cè)機(jī)制。 原文鏈接 更多教程 為什么會(huì)發(fā)生內(nèi)存泄漏 內(nèi)存空間使用完畢之后未回收, 會(huì)導(dǎo)致內(nèi)存泄漏。有人會(huì)問(wèn):Java不是有垃圾自動(dòng)回收機(jī)制么?不幸的是,在Java中仍存在很多容易導(dǎo)致內(nèi)存泄漏的邏輯(...

    yiliang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<