黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Java內(nèi)存泄露原因總結(jié)

Java內(nèi)存泄露原因總結(jié)

更新時(shí)間:2022-12-29 11:44:47 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1683次

大家在進(jìn)行Java開發(fā)的時(shí)候會(huì)遇到Java內(nèi)存泄露的情況,那么,Java內(nèi)存泄露的原因有哪些?下面來我們就來給大家講解一下。

Java內(nèi)存泄露原因總結(jié)

1.未關(guān)閉的資源導(dǎo)致內(nèi)存泄露

每當(dāng)創(chuàng)建連接或者打開流時(shí),JVM都會(huì)為這些資源分配內(nèi)存。如果沒有關(guān)閉連接,會(huì)導(dǎo)致持續(xù)占有內(nèi)存。在任意情況下,資源留下的開放連接都會(huì)消耗內(nèi)存,如果我們不處理,就會(huì)降低性能,甚至OOM。

解決辦法:使用finally塊關(guān)閉資源;關(guān)閉資源的代碼,不應(yīng)該有異常;jdk1.7后,可以使用try-with-resource塊。

2.static字段引起的內(nèi)存泄露

大量使用static字段會(huì)潛在的導(dǎo)致內(nèi)存泄露,在Java中,靜態(tài)字段通常擁有與整個(gè)應(yīng)用程序相匹配的生命周期。

解決辦法:最大限度的減少靜態(tài)變量的使用;單例模式時(shí),依賴于延遲加載對(duì)象而不是立即加載方式。

3.引用了外部類的內(nèi)部類

非靜態(tài)內(nèi)部類的初始化,總是需要外部類的實(shí)例;默認(rèn)情況下,每個(gè)非靜態(tài)內(nèi)部類都包含對(duì)其包含內(nèi)的隱式引用,如果我們?cè)趹?yīng)用程序中使用這個(gè)內(nèi)部類對(duì)象,那么即使在我們的包含類對(duì)象超出范圍后,它也不會(huì)被垃圾收集。

解決辦法:如果內(nèi)部類不需要訪問包含的類成員,考慮轉(zhuǎn)換為靜態(tài)類。

4.不正確的equals()和hashCode()

在HashMap和HashSet這種集合中,常常用到equal()和hashCode()來比較對(duì)象,如果重寫不合理,將會(huì)成為潛在的內(nèi)存泄露問題。

解決辦法:用最佳的方式重寫equals()和hashCode。

5.常量字符串造成的內(nèi)存泄露

如果我們讀取一個(gè)很大的String對(duì)象,并調(diào)用了inter(),那么它將放到字符串池中,位于PermGen中,只要應(yīng)用程序運(yùn)行,該字符串就會(huì)保留,這就會(huì)占用內(nèi)存,可能造成OOM。

解決辦法:增加PermGen的大小,-XX:MaxPermSize=512m;升級(jí)Java版本,JDK1.7后字符串池轉(zhuǎn)移到了堆中。

6.使用ThreadLocal造成內(nèi)存泄露

使用ThreadLocal時(shí),每個(gè)線程只要處于存貨狀態(tài)就可保留對(duì)其ThreadLocal變量副本的隱式調(diào)用,且將保留其自己的副本。使用不當(dāng),就會(huì)引起內(nèi)存泄露。

一旦線程不在存在,ThreadLocals就應(yīng)該被垃圾收集,而現(xiàn)在線程的創(chuàng)建都是使用線程池,線程池有線程重用的功能,因此線程就不會(huì)被垃圾回收器回收。所以使用到ThreadLocals來保留線程池中線程的變量副本時(shí),ThreadLocals沒有顯示的刪除時(shí),就會(huì)一直保留在內(nèi)存中,不會(huì)被垃圾回收。

解決辦法:不在使用ThreadLocal時(shí),調(diào)用remove()方法,該方法刪除了此變量的當(dāng)前線程值。不要使用ThreadLocal.set(null),它只是查找與當(dāng)前線程關(guān)聯(lián)的Map并將鍵值對(duì)設(shè)置為當(dāng)前線程為null。

7.finalize()方法造成的內(nèi)存泄露

重寫finalize()方法時(shí),該類的對(duì)象不會(huì)立即被垃圾收集器收集,如果finalize()方法的代碼有問題,那么會(huì)潛在的引發(fā)OOM;

解決辦法:避免重寫finalize()。

java內(nèi)存泄漏是java常見異常的一種,我們遇到這種情況的時(shí)候,需要及時(shí)進(jìn)行排查,知道錯(cuò)誤的源頭才能進(jìn)行快速解決!

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 欧美日韩国产成人综合在线 | 国产丰满老妇伦子www | 99精品国产在这里白浆 | 两性仑乱肉麻小说 | 欧美日韩视频在线成人 | 嘿嘿午夜 | 日韩一级一片 | 正品蓝导航永久福利在线视频 | 色噜噜狠狠狠色综合久 | 天天躁日日躁狠狠躁综合 | 成人激情在线 | 特黄网站| 天天摸天天干天天操 | 豆国产97在线 | 中国 | 久久国产视频精品 | 黄色国产| 欧美精品xxx | 道日本一本草久 | 亚洲欧美一区二区三区久本道 | a视频免费在线观看 | 直接看的黄色网址 | 欧美中文字幕在线 | 免费看黄视频网站 | 日本欧美韩国专区 | 黄视频在线观看www免费 | 国产欧美日韩综合精品无毒 | 欧美视频在线观看一区二区 | 麻豆国产人免费人成免费视频 | 成人免费黄色 | 一二三四视频社区在线播放中国 | 欧美a欧美乱码一二三四区 欧美a在线看 | 人成午夜性刺激免费 | 美女羞羞网站 | 成人不卡在线 | 久久亚洲最大成人网4438 | 91精品在线视频观看 | 亚洲不卡在线 | 久久亚洲欧美综合激情一区 | 成人深爱网 | 三级伦理在线播放 | 久爱视频在线 |