Android程序內存泄漏的原因和解決辦法

轉自:http://www.cnblogs.com/yejiurui/archive/2013/02/23/2923418.html

   內存泄漏也稱作“存儲滲漏”,用動態存儲分配函數動態開闢的空間,在使用完畢後未釋放,結果導致一直佔據該內存單元。直到程序結束。即所謂內存泄漏。        

image

      內存泄漏簡單地說就是申請了一塊內存空間,使用完畢後沒有釋放掉。它的一般表現方式是程序運行時間越長,佔用內存越多,最終用盡全部內存,整個系統崩潰。由程序申請的一塊內存,且沒有任何一個指針指向它,那麼這塊內存就泄露了。

       從用戶使用程序的角度來看,內存泄漏本身不會產生什麼危害,作爲一般的用戶,根本感覺不到內存泄漏的存在。真正有危害的是內存泄漏的堆積,這會最終消耗盡系統所有的內存。從這個角度來說,一次性內存泄漏並沒有什麼危害,因爲它不會堆積,而隱式內存泄漏危害性則非常大,因爲較之於常發性和偶發性內存泄漏它更難被檢測到。

Android應用內存泄漏的的原因有以下幾個:

1查詢數據庫後沒有關閉遊標cursor  
2 構造Adapter時,沒有使用 convertView 重用 
3 Bitmap對象不在使用時調用recycle()釋放內存 
4 對象被生命週期長的對象引用,如activity被靜態集合引用導致activity不能釋放

內存泄漏的發現:

通過DDMS中的heap工具,去發現是否有內存溢出。

內存泄漏如何解決:

通過內存分析工具 MAT(Memory Analyzer Tool),找到內存泄露的對象


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章