1.內(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>
2.內(nèi)存溢出:就是你要的內(nèi)存空間超過(guò)了系統(tǒng)實(shí)際分配給你的空間炊林,此時(shí)系統(tǒng)相當(dāng)于沒(méi)法滿足你的需求姥卢,就會(huì)報(bào)內(nèi)存溢出的錯(cuò)誤。
3.關(guān)系:內(nèi)存泄漏的堆積最終會(huì)導(dǎo)致內(nèi)存溢出
4.內(nèi)存溢出的原因:①內(nèi)存中加載的數(shù)據(jù)量過(guò)于龐大②集合類中有對(duì)象的引用渣聚,使用完未清空独榴,JVM不能回收③代碼中存在死循環(huán)或者循環(huán)產(chǎn)生過(guò)多重復(fù)的對(duì)象實(shí)體④啟動(dòng)參數(shù)的內(nèi)存值設(shè)置過(guò)小
5.內(nèi)存溢出的解決辦法:①修改JVM啟動(dòng)參數(shù),直接增加內(nèi)存饵逐。(-Xms括眠,-Xmx參數(shù)一定不要忘記加)②檢查錯(cuò)誤日志,查看“OutOfMemory”錯(cuò)誤前是否有其它異潮度ǎ或錯(cuò)誤掷豺。③對(duì)代碼進(jìn)行走查和分析,找出可能發(fā)生內(nèi)存溢出的位置薄声。