如何避免記憶體洩漏 溢位

2022-08-17 09:24:19 字數 844 閱讀 6602

記憶體洩漏 memory leak:物件可達但不可用;是指程式在申請記憶體後,無法釋放已申請的記憶體空間,一次記憶體洩露危害可以忽略,但記憶體洩露堆積後果很嚴重,無論多少記憶體,遲早會被占光。

記憶體溢位 out of memory:記憶體大小不夠;是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用,出現out of memory;比如申請了乙個integer,但給它存了long才能存下的數,那就是記憶體溢位。

盡早釋放無用物件的引用

好的辦法是使用臨時變數的時候,讓引用變數在推出活動域後自動設定為null,暗示垃圾收集器來收集該物件,防止發生記憶體洩漏。

程式進行字串處理時,盡量避免使用string,而應該使用stringbuffer。

因為string類是不可變的,每乙個string物件都會獨立占用記憶體一塊區域。

盡量少用靜態變數

因為靜態變數是全域性的,存在方法區,gc不會**。(用永久代實現的方法區,垃圾**行為在這個區域是比較少出現的,垃圾**器的主要目標是針對常量池和型別的解除安裝)

避免集中建立物件,尤其是大物件,如果可以的話盡量使用流操作

jvm會突然需要大量neicun,這時會出發gc優化系統記憶體環境

盡量運用物件池技術以提高系統效能

生命週期長的物件擁有生命周期短的物件時容易引發記憶體洩漏,例如大集合物件擁有大資料量的業務物件的時候,可以考慮分塊進行處理,然後解決一塊釋放一塊的策略。

不要在經常呼叫的方法中建立物件,尤其忌諱在迴圈中建立物件

可以適當的使用hashtable,vector建立一組物件容器,然後從容器中去取這些物件,而不用每次new之後又丟棄。

優化配置

從**層面進行優化完善,盡量避免該情況發生;

調整優化伺服器配置:

如何避免記憶體洩漏

一般來說,記憶體洩漏指的是堆記憶體的洩漏。當我們申請了一塊堆記憶體,使用完之後必須相應的free或者delete掉該記憶體塊。不然這塊記憶體就不能再被使用,我們就說這塊記憶體洩漏了。養成良好的 習慣,保證malloc new和free delete匹配。盡早釋放掉無用的引用,在引用退出作用域後設定為...

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

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

記憶體洩漏 溢位

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