欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

javajvm內(nèi)存溢出和內(nèi)存泄漏的區(qū)別是什么

這篇文章主要介紹“java jvm 內(nèi)存溢出和內(nèi)存泄漏的區(qū)別是什么”,在日常操作中,相信很多人在java jvm 內(nèi)存溢出和內(nèi)存泄漏的區(qū)別是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”java jvm 內(nèi)存溢出和內(nèi)存泄漏的區(qū)別是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的綏陽(yáng)網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

1、概念的區(qū)分

內(nèi)存溢出 out of memory

是指程序在申請(qǐng)內(nèi)存時(shí),沒(méi)有足夠的內(nèi)存空間供其使用,出現(xiàn) out of memory 。

比如申請(qǐng)了一個(gè)10MB 空間, 但是當(dāng)前內(nèi)存只有5MB,那就是內(nèi)存溢出。

javadoc 對(duì) OutOfMemoryError 的解釋是, 沒(méi)有空閑內(nèi)存,垃圾收集器也無(wú)未能提供更多的內(nèi)存空間 。

java jvm 內(nèi)存溢出和內(nèi)存泄漏的區(qū)別是什么

內(nèi)存泄露 memory leak

是指程序運(yùn)行結(jié)束后,沒(méi)有釋放已所占用的內(nèi)存空間,一次內(nèi)存泄漏 似乎不會(huì)有大的影響,但內(nèi)存泄漏 堆積后的后果就是 內(nèi)存溢出。
java jvm 內(nèi)存溢出和內(nèi)存泄漏的區(qū)別是什么

1)單例模式

單例的生命周期和應(yīng)用程序是一樣長(zhǎng)的,所以單例程序中如果持有對(duì)外部對(duì)象的引用的話,那么這個(gè)外部對(duì)象是不能被回收的,則會(huì)導(dǎo)致內(nèi)存泄露的產(chǎn)生。

2)一些提供close的資源未閉導(dǎo)致內(nèi)存泄漏

數(shù)據(jù)庫(kù)連接(dataSource.getConnection() ),網(wǎng)絡(luò)連接(socket)和 IO流的連接必須在finally中 close,否則不能被回收的。

2、二者的關(guān)系:

  • 內(nèi)存溢出就是你要的內(nèi)存空間超過(guò)了系統(tǒng)實(shí)際分配給你的空間,此時(shí)系統(tǒng)相當(dāng)于沒(méi)法滿足你的需求,就會(huì)報(bào)內(nèi)存溢出的錯(cuò)誤。

  • 內(nèi)存溢出:一個(gè)盤子用盡各種方法只能裝4個(gè)果子,你裝了5個(gè),結(jié)果掉倒地上不能吃了。這就是溢出。比方說(shuō)棧,棧滿時(shí)再做進(jìn)棧必定產(chǎn)生空間溢出,叫上溢,棧空時(shí)再做退棧也產(chǎn)生空間溢出,稱為下溢。就是分配的內(nèi)存不足以放下數(shù)據(jù)項(xiàng)序列,稱為內(nèi)存溢出。說(shuō)白了就是我承受不了那么多,那我就報(bào)錯(cuò)。

  • 內(nèi)存泄漏是指你向系統(tǒng)申請(qǐng)分配內(nèi)存進(jìn)行使用(new),可是使用完了以后卻不歸還(delete),結(jié)果你申請(qǐng)到的那塊內(nèi)存你自己也不能再訪問(wèn)(也許你把它的地址給弄丟了),而系統(tǒng)也不能再次將它分配給需要的程序。就相當(dāng)于你租了個(gè)帶鑰匙的柜子,你存完?yáng)|西之后把柜子鎖上之后,把鑰匙丟了或者沒(méi)有將鑰匙還回去,那么結(jié)果就是這個(gè)柜子將無(wú)法供給任何人使用,也無(wú)法被垃圾回收器回收,因?yàn)檎也坏剿娜魏涡畔ⅰ?/p>

    內(nèi)存泄漏的堆積最終會(huì)導(dǎo)致內(nèi)存溢出。

3、內(nèi)存溢出的原因以及解決方法

3.1、內(nèi)存溢出的原因

引起內(nèi)存溢出的原因有很多種,小編列舉一下常見(jiàn)的有以下幾種:

  1. 內(nèi)存中加載的數(shù)據(jù)量過(guò)于龐大,如一次從數(shù)據(jù)庫(kù)取出過(guò)多數(shù)據(jù);

  2. 集合類中有對(duì)對(duì)象的引用,使用完后未清空,使得JVM不能回收;

  3. 代碼中存在死循環(huán)或循環(huán)產(chǎn)生過(guò)多重復(fù)的對(duì)象實(shí)體;

  4. 使用的第三方軟件中的BUG;

  5. 啟動(dòng)參數(shù)內(nèi)存值設(shè)定的過(guò)小 。

3.2、內(nèi)存溢出的解決方案:

第一步,修改JVM啟動(dòng)參數(shù),直接增加內(nèi)存。(-Xms-Xmx 參數(shù)一定不要忘記加)

第二步,檢查錯(cuò)誤日志,查看 “OutOfMemory” 錯(cuò)誤前是否有其它異常或錯(cuò)誤。

第三步,對(duì)代碼進(jìn)行走查和分析,找出可能發(fā)生內(nèi)存溢出的位置。

重點(diǎn)排查以下幾點(diǎn):

1.檢查對(duì)數(shù)據(jù)庫(kù)查詢中,是否有一次獲得全部數(shù)據(jù)的查詢。
 一般來(lái)說(shuō),如果一次取十萬(wàn)條記錄到內(nèi)存,就可能引起內(nèi)存溢出。
 這個(gè)問(wèn)題比較隱蔽,在上線前,數(shù)據(jù)庫(kù)中數(shù)據(jù)較少,不容易出問(wèn)題,上線后,
 數(shù)據(jù)庫(kù)中數(shù)據(jù)多了,一次查詢就有可能引起內(nèi)存溢出。因此對(duì)于數(shù)據(jù)庫(kù)查詢盡量采用分頁(yè)的方式查詢。
 
2.檢查代碼中是否有死循環(huán)或遞歸調(diào)用。

3.檢查是否有大循環(huán)重復(fù)產(chǎn)生新對(duì)象實(shí)體。

4.檢查對(duì)數(shù)據(jù)庫(kù)查詢中,是否有一次獲得全部數(shù)據(jù)的查詢。
 一般來(lái)說(shuō),如果一次取十萬(wàn)條記錄到內(nèi)存,就可能引起內(nèi)存溢出。
 這個(gè)問(wèn)題比較隱蔽,在上線前,數(shù)據(jù)庫(kù)中數(shù)據(jù)較少,不容易出問(wèn)題,
 上線后,數(shù)據(jù)庫(kù)中數(shù)據(jù)多了,一次查詢就有可能引起內(nèi)存溢出。因此對(duì)于數(shù)據(jù)庫(kù)查詢盡量采用分頁(yè)的方式查詢。

5.檢查L(zhǎng)ist、MAP等集合對(duì)象是否有使用完后,未清除的問(wèn)題。
 List、MAP等集合對(duì)象會(huì)始終存有對(duì)對(duì)象的引用,使得這些對(duì)象不能被GC回收。

第四步,使用內(nèi)存查看工具動(dòng)態(tài)查看內(nèi)存使用情況。

到此,關(guān)于“java jvm 內(nèi)存溢出和內(nèi)存泄漏的區(qū)別是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

當(dāng)前文章:javajvm內(nèi)存溢出和內(nèi)存泄漏的區(qū)別是什么
路徑分享:http://www.chinadenli.net/article34/peigpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)網(wǎng)站導(dǎo)航外貿(mào)網(wǎng)站建設(shè)網(wǎng)頁(yè)設(shè)計(jì)公司網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化