記憶體洩漏導致記憶體溢位(OOM)

2021-07-23 04:22:58 字數 891 閱讀 5258

開發中遇到這樣乙個bug,調整之前做的乙個意見反饋頁面布局,輸入框中限制字數200字,超過時自動刪除不顯示。

自定義了乙個可監聽並限制輸入字數的edittext,貼上**

測試過程中發現如果一次性往輸入框中貼上幾百上千個文字時程式就會閃退,報的錯誤是

上網查了一下這個錯誤的意思是棧滿溢位的錯誤。檢視錯誤行的**為第62行的delete方法,又重新測試了幾次發現,如果輸入字數達到限制字數200個之後乙個乙個字元輸入或者一次貼上比較少的字元是不會報異常的。最後確定了這個bug的原因:由於**中呼叫delete方法時傳入的變數值邏輯上不正確導致每次只刪除乙個字元,而一次性貼上幾百個甚至上千個字元過來的時候就要呼叫delete方法幾百上千次,最終導致此異常發生。果斷注掉,改為63行就好了。

考慮了一下覺得這個異常跟記憶體洩漏導致的記憶體溢位oom特別的像,就一併記錄一下。

記憶體洩漏是指你向系統申請分配記憶體進行使用,用完之後卻沒有釋放,而導致這部分記憶體丟失,系統也不能把它在分配給其他需要的程式使用。

記憶體溢位是指程式申請的記憶體空間不夠其使用而導致溢位。

一次的記憶體洩漏可能不會有太大的影響,對於使用者來說也不會感覺的到也不會報異常。但是短時間內大量的記憶體洩漏堆積必然會導致記憶體溢位而報oom異常。

記憶體洩漏和記憶體溢位 記憶體洩漏和記憶體溢位

記憶體洩漏 是指申請的記憶體空間使用完畢之後未 一次記憶體洩露危害可以忽略,但若一直洩漏,無論有多少記憶體,遲早都會被占用光,最終導致程式crash。因此,開發中我們要盡量避免記憶體洩漏的出現 記憶體溢位 是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用。通俗理解就是記憶體不夠用了,通常在執行大...

記憶體洩漏 溢位

1 記憶體洩漏memory leak 是指程式在申請記憶體後,無法釋放已申請的記憶體空間,一次記憶體洩漏似乎不會有大的影響,但記憶體洩漏堆積後的後果就是記憶體溢位。2 記憶體溢位 out of memory 指程式申請記憶體時,沒有足夠的記憶體供申請者使用,此時就會報錯oom,即所謂的記憶體溢位。重...

記憶體溢位和記憶體洩漏

記憶體溢位 oom 指程式在申請記憶體時,沒有足夠的記憶體空間供其使用,出現oom 記憶體洩露memory leak 指程式在申請記憶體後,無法釋放已申請的記憶體空間,一直占用著這塊記憶體空間。記憶體溢位就是你要求分配的記憶體超出了系統能給你的,系統不能滿足需求,於是產生溢位。記憶體洩漏是指你向系統...