欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

開(kāi)山師傅 ? 來(lái)源:嵌入式應(yīng)用開(kāi)發(fā) ? 作者:嵌入式應(yīng)用開(kāi)發(fā) ? 2022-06-01 11:31 ? 次閱讀

內(nèi)存溢出 ,是指程序在申請(qǐng)內(nèi)存時(shí),沒(méi)有足夠的內(nèi)存空間供其使用,出現(xiàn)out of memory;比如申請(qǐng)了一個(gè)integer,但給它存了long才能存下的數(shù),那就是內(nèi)存溢出。

內(nèi)存溢出就是你要求分配的內(nèi)存超出了系統(tǒng)能給你的,系統(tǒng)不能滿足需求,于是產(chǎn)生溢出。

內(nèi)存泄漏是指你向系統(tǒng)申請(qǐng)分配內(nèi)存進(jìn)行使用(new),可是使用完了以后卻不歸還(delete),結(jié)果你申請(qǐng)到的那塊內(nèi)存你自己也不能再訪問(wèn)(也許你把它的地址給弄丟了),而系統(tǒng)也不能再次將它分配給需要的程序。一個(gè)盤子用盡各種方法只能裝4個(gè)果子,你裝了5個(gè),結(jié)果掉倒地上不能吃了。這就是溢出!比方說(shuō)棧,棧滿時(shí)再做進(jìn)棧必定產(chǎn)生空間溢出,叫上溢,??諘r(shí)再做退棧也產(chǎn)生空間溢出,稱為下溢。就是分配的內(nèi)存不足以放下數(shù)據(jù)項(xiàng)序列,稱為內(nèi)存溢出.

以發(fā)生的方式來(lái)分類,內(nèi)存泄漏可以分為4類:

1. 常發(fā)性內(nèi)存泄漏。發(fā)生內(nèi)存泄漏的代碼會(huì)被多次執(zhí)行到,每次被執(zhí)行的時(shí)候都會(huì)導(dǎo)致一塊內(nèi)存泄漏。

2. 偶發(fā)性內(nèi)存泄漏。發(fā)生內(nèi)存泄漏的代碼只有在某些特定環(huán)境或操作過(guò)程下才會(huì)發(fā)生。常發(fā)性和偶發(fā)性是相對(duì)的。對(duì)于特定的環(huán)境,偶發(fā)性的也許就變成了常發(fā)性的。所以測(cè)試環(huán)境和測(cè)試方法對(duì)檢測(cè)內(nèi)存泄漏至關(guān)重要。

3. 一次性內(nèi)存泄漏。發(fā)生內(nèi)存泄漏的代碼只會(huì)被執(zhí)行一次,或者由于算法上的缺陷,導(dǎo)致總會(huì)有一塊僅且一塊內(nèi)存發(fā)生泄漏。比如,在類的構(gòu)造函數(shù)中分配內(nèi)存,在析構(gòu)函數(shù)中卻沒(méi)有釋放該內(nèi)存,所以內(nèi)存泄漏只會(huì)發(fā)生一次。

4. 隱式內(nèi)存泄漏。程序在運(yùn)行過(guò)程中不停的分配內(nèi)存,但是直到結(jié)束的時(shí)候才釋放內(nèi)存。嚴(yán)格的說(shuō)這里并沒(méi)有發(fā)生內(nèi)存泄漏,因?yàn)樽罱K程序釋放了所有申請(qǐng)的內(nèi)存。但是對(duì)于一個(gè)服務(wù)器程序,需要運(yùn)行幾天,幾周甚至幾個(gè)月,不及時(shí)釋放內(nèi)存也可能導(dǎo)致最終耗盡系統(tǒng)的所有內(nèi)存。所以,我們稱這類內(nèi)存泄漏為隱式內(nèi)存泄漏。

從用戶使用程序的角度來(lái)看,內(nèi)存泄漏本身不會(huì)產(chǎn)生什么危害,作為一般的用戶,根本感覺(jué)不到內(nèi)存泄漏的存在。真正有危害的是內(nèi)存泄漏的堆積,這會(huì)最終消耗盡系統(tǒng)所有的內(nèi)存。從這個(gè)角度來(lái)說(shuō),一次性內(nèi)存泄漏并沒(méi)有什么危害,因?yàn)樗粫?huì)堆積,而隱式內(nèi)存泄漏危害性則非常大,因?yàn)檩^之于常發(fā)性和偶發(fā)性內(nèi)存泄漏它更難被檢測(cè)到

內(nèi)存泄露 memory leak,是指程序在申請(qǐng)內(nèi)存后,無(wú)法釋放已申請(qǐng)的內(nèi)存空間,一次內(nèi)存泄露危害可以忽略,但內(nèi)存泄露堆積后果很嚴(yán)重,無(wú)論多少內(nèi)存,遲早會(huì)被占光。

memory leak會(huì)最終會(huì)導(dǎo)致out of memory!

內(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ò)小

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

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

第二步,檢查錯(cuò)誤日志,查看“OutOfMemory”錯(cuò)誤前是否有其它異?;蝈e(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.檢查L(zhǎng)ist、MAP等集合對(duì)象是否有使用完后,未清除的問(wèn)題。List、MAP等集合對(duì)象會(huì)始終存有對(duì)對(duì)象的引用,使得這些對(duì)象不能被GC回收。

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

推薦幾款檢查內(nèi)存泄露的軟件:

pYYBAGKW3WuAT_TIAAEBk7uB5uY506.png

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4835

    瀏覽量

    69117
  • 內(nèi)存泄漏
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    9239
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    內(nèi)存故障及解決方法

    內(nèi)存故障及解決方法(一)按下電源開(kāi)關(guān)后電腦不啟動(dòng)、黑屏故障的解決   電腦開(kāi)機(jī)后就要自檢內(nèi)存,但是此時(shí)因?yàn)橐韵聨讉€(gè)方面的原因,就可能造成開(kāi)機(jī)無(wú)顯示的故障?! ?、
    發(fā)表于 06-16 13:16

    STM32堆棧溢出會(huì)出現(xiàn)的問(wèn)題及溢出原因分析和解決方法

    `在開(kāi)發(fā)過(guò)程中,我們有時(shí)候可能會(huì)遇到數(shù)據(jù)錯(cuò)誤的情況,而這個(gè)情況發(fā)生多數(shù)是由于堆棧溢出導(dǎo)致,這里我們將詳細(xì)講解復(fù)現(xiàn)堆棧溢出會(huì)導(dǎo)致的問(wèn)題及提供相應(yīng)的解決方法。1 .建立一個(gè)測(cè)試工程定義主函數(shù)定義堆棧地址
    發(fā)表于 12-09 10:00

    java內(nèi)存溢出排查方法解析

     內(nèi)存溢出(out of memory),通俗理解就是內(nèi)存不夠,通常在運(yùn)行大型軟件或游戲時(shí),軟件或游戲所需要的內(nèi)存遠(yuǎn)遠(yuǎn)超出了你主機(jī)內(nèi)安裝的內(nèi)存
    發(fā)表于 11-28 13:57 ?6792次閱讀

    加濕器不噴霧的原因解決方法

    在使用加濕器的過(guò)程中發(fā)現(xiàn)不噴霧或噴霧小了是什么原因呢?有什么解決方法。
    的頭像 發(fā)表于 04-04 16:09 ?2.9w次閱讀

    內(nèi)存溢出內(nèi)存泄露的區(qū)別_內(nèi)存溢出原因以及解決方法

    內(nèi)存溢出內(nèi)存泄露的區(qū)別是什么?內(nèi)存溢出怎么解決?內(nèi)存溢出
    發(fā)表于 06-01 10:27 ?2956次閱讀

    舵機(jī)常見(jiàn)的故障原因分析以及解決方法

    舵機(jī)的分析方法和注意事項(xiàng),以及對(duì)舵機(jī)常見(jiàn)故障的解決方法進(jìn)行一個(gè)列舉。
    的頭像 發(fā)表于 09-22 10:14 ?4081次閱讀
    舵機(jī)常見(jiàn)的故障<b class='flag-5'>原因</b>分析<b class='flag-5'>以及</b><b class='flag-5'>解決方法</b>

    如何解決內(nèi)存溢出

    ,有時(shí)候會(huì)自動(dòng)關(guān)閉軟件,重啟電腦或者軟件后釋放掉一部分內(nèi)存又可以正常運(yùn)行該軟件,而由系統(tǒng)配置、數(shù)據(jù)流、用戶代碼等原因而導(dǎo)致的內(nèi)存溢出錯(cuò)誤,即使用戶重新執(zhí)行任務(wù)依然無(wú)法避免 其實(shí)很簡(jiǎn)單,
    的頭像 發(fā)表于 09-25 10:54 ?1489次閱讀
    如何解決<b class='flag-5'>內(nèi)存</b><b class='flag-5'>溢出</b>

    電感嘯叫的常見(jiàn)原因以及解決方法

    電子發(fā)燒友網(wǎng)站提供《電感嘯叫的常見(jiàn)原因以及解決方法.docx》資料免費(fèi)下載
    發(fā)表于 10-15 11:03 ?2次下載

    java內(nèi)存溢出的幾種原因和解決辦法

    內(nèi)存,但是如果程序中存在內(nèi)存泄漏(Memory Leak)或者使用不當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)等問(wèn)題,仍然有可能導(dǎo)致內(nèi)存溢出。下面將詳細(xì)介紹Java內(nèi)存
    的頭像 發(fā)表于 11-23 14:44 ?6289次閱讀

    java內(nèi)存溢出排查方法

    Java內(nèi)存溢出(Memory overflow)是指Java虛擬機(jī)(JVM)中的堆內(nèi)存無(wú)法滿足對(duì)象分配的需求,導(dǎo)致程序拋出OutOfMemoryError異常。內(nèi)存
    的頭像 發(fā)表于 11-23 14:46 ?3370次閱讀

    jvm內(nèi)存溢出故障排查

    溢出故障排查的方法和步驟。 確認(rèn)內(nèi)存溢出錯(cuò)誤 首先,我們需要確認(rèn)應(yīng)用程序是否確實(shí)發(fā)生了內(nèi)存溢出錯(cuò)
    的頭像 發(fā)表于 12-05 11:04 ?900次閱讀

    jvm內(nèi)存溢出該如何定位解決

    在Java應(yīng)用程序中,JVM(Java虛擬機(jī))內(nèi)存溢出是指Java應(yīng)用程序試圖分配的內(nèi)存超過(guò)了JVM所允許的最大內(nèi)存大小,導(dǎo)致程序無(wú)法正常執(zhí)行。內(nèi)存
    的頭像 發(fā)表于 12-05 11:05 ?1381次閱讀

    內(nèi)存溢出內(nèi)存泄漏:定義、區(qū)別與解決方案

    內(nèi)存溢出內(nèi)存泄漏:定義、區(qū)別與解決方案? 內(nèi)存溢出內(nèi)存泄漏是計(jì)算機(jī)科學(xué)中常見(jiàn)的問(wèn)題,在開(kāi)發(fā)和
    的頭像 發(fā)表于 12-19 14:10 ?3059次閱讀

    PCB焊盤脫落的原因解決方法?

    PCB焊盤脫落的原因解決方法? PCB(印刷電路板)焊盤的脫落是一個(gè)常見(jiàn)的問(wèn)題,它會(huì)導(dǎo)致電子設(shè)備無(wú)法正常工作。本文將詳細(xì)介紹焊盤脫落的原因以及解決
    的頭像 發(fā)表于 01-18 11:21 ?7358次閱讀

    無(wú)功補(bǔ)償故障原因解決方法

    無(wú)功補(bǔ)償故障可能由多種原因引起,以下是一些常見(jiàn)的故障原因及其解決方法
    的頭像 發(fā)表于 01-29 14:25 ?177次閱讀