android記憶體洩漏的原因

2021-07-10 00:26:08 字數 672 閱讀 5438

記憶體洩漏也稱作「儲存滲漏」,用

動態儲存

分配函式動態開闢的空間,在使用完畢後未釋放,結果導致一直佔據該記憶體單元。直到程式結束。即所謂記憶體洩漏。        

記憶體洩漏簡單地說就是申請了一塊記憶體空間,使用完畢後沒有釋放掉。它的一般表現方式是程式執行時間越長,占用記憶體越多,最終用盡全部記憶體,整個

系統崩潰

。由程式申請的一塊記憶體,且沒有任何乙個

指標指向它,那麼這塊記憶體就洩露了。

從使用者使用程式的角度來看,記憶體洩漏本身不會產生什麼危害,作為一般的使用者,根本感覺不到記憶體洩漏的存在。真正有危害的是記憶體洩漏的堆積,這會最終消耗盡系統所有的記憶體。從這個角度來說,一次性記憶體洩漏並沒有什麼危害,因為它不會堆積,而隱式記憶體洩漏危害性則非常大,因為較之於

常發性和偶發性記憶體洩漏它更難被檢測到。

android應用記憶體洩漏的的原因有以下幾個:

1查詢資料庫後沒有關閉游標cursor  

2 構造adapter時,沒有使用 convertview 重用 

3 bitmap物件不在使用時呼叫recycle()釋放記憶體 

4 物件被生命週期長的物件引用,如activity被靜態集合引用導致activity不能釋放

記憶體洩漏的原因

1 資源物件沒關閉。如cursor file等資源。他們會在finalize中關閉,但這樣效率太低。容易造成記憶體洩露。sqlitecursor,當資料量大的時候容易洩露 2 使用adapter時,沒有使用系統快取的converview。3 即時呼叫recycle 釋放不再使用的bitmap。適當降...

Android記憶體溢位及記憶體洩漏原因進解析

記憶體溢位 out of memory android系統中每乙個應用程式可以向系統申請一定的記憶體,當申請的記憶體不夠用的時候,就產生了記憶體溢位。記憶體洩漏 當某個物件不再被使用,即不再有變數引用它時,該物件占用的記憶體就會被系統 當某個物件不再被使用,但是在其他物件中仍然有變數引用它時,該物件...

android記憶體洩漏

參考 什麼是記憶體洩漏 記憶體洩露,簡單的說,就是該被釋放的記憶體沒有被釋放,一直被某個或某些例項所引用但不能被使用,導致gc不能 造成記憶體洩漏。總結的說,可以理解為長生命週期的物件一直持有短生命週期物件的引用,導致短生命週期物件一直被引用而無法被gc 記憶體洩漏是造成oom的主要原因之一,當乙個...