記憶體溢位 out of memory
是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用,出現out of memory;比如申請了乙個integer,但給它存了long才能存下的數,那就是記憶體溢位。
記憶體洩露 memory leak
是指程式在申請記憶體後,無法釋放已申請的記憶體空間,一次記憶體洩露危害可以忽略,但記憶體洩露堆積後果很嚴重,無論多少記憶體,遲早會被占光。
記憶體洩漏可以分為四類:
1、常發性記憶體洩漏,發生記憶體洩漏的**會被多次執行到,每次執行都會導致記憶體洩漏
2、偶發性記憶體洩漏:發生記憶體洩漏的**只有在某些特定環境或操作過程下才會發生,
3、一次性記憶體洩漏,發生記憶體洩漏的**只會被執行一-次,或者由於演算法上的缺陷,導致總會有一塊僅且一塊記憶體發生洩漏。
4、隱式記憶體洩漏。程式在執行過程中不停的分配記憶體,但是直到結束的時候才釋放記憶體。
從使用者使用程式的角度來看,記憶體洩漏本身不會產生什麼危害,真正有危害的是記憶體洩漏的堆積,這會最終消耗盡系統所有的記憶體。
記憶體溢位常見原因:
1.記憶體中載入的資料量過於龐大,如一次從資料庫取出過多資料;
2.集合類中有對物件的引用,使用完後未清空,使得jvm不能**;
3.**中存在死迴圈或迴圈產生過多重複的物件實體;
4.使用的第三方軟體中的bug;
5.啟動引數記憶體值設定的過小
解決方案:
1、修改jvm引數,直接增加記憶體
2、檢查錯誤日誌,檢視記憶體溢位錯誤前是否有其他異常錯誤
3、對**進行走查分析,找出可能發生記憶體溢位的位置
記憶體溢位與記憶體洩露
2019獨角獸企業重金招聘python工程師標準 兩者的區別 記憶體溢位 out of memory 指程式在申請記憶體時,沒有足夠的記憶體空間供其使用,出現out of memory 比如申請了乙個integer,但給它存了long才能存下的數,那就是記憶體溢位。記憶體洩露 memory leak...
記憶體溢位,與記憶體洩露
記憶體洩漏 memory leak 是指程式在申請記憶體後,無法釋放已申請的記憶體空間 只出不進漏氣一樣 記憶體溢位 就是你要的記憶體空間超過了系統實際分配的空間,此時系統相當於沒法滿足你的需求,就會報記憶體溢位的錯誤 比方說棧,棧滿時再做進棧必定產生空間溢位,叫上溢,棧空時再做退棧也產生空間溢位,...
記憶體洩露和記憶體溢位
一 記憶體洩露 1.定義 指由於疏忽或錯誤造成程式未能釋放已經不再使用的記憶體的情況。記憶體洩漏並非指內存在物理上的消失,而是應用程式分配某段記憶體後,由於設計錯誤,失去了對該段記憶體的控制,因而造成了記憶體的浪費。2.洩露型別 1 堆記憶體洩漏 heap leak a.指利用malloc或new進...