轉自:http://www.cnblogs.com/yejiurui/archive/2013/02/23/2923418.html
內存泄漏也稱作“存儲滲漏”,用動態存儲分配函數動態開闢的空間,在使用完畢後未釋放,結果導致一直佔據該內存單元。直到程序結束。即所謂內存泄漏。
內存泄漏簡單地說就是申請了一塊內存空間,使用完畢後沒有釋放掉。它的一般表現方式是程序運行時間越長,佔用內存越多,最終用盡全部內存,整個系統崩潰。由程序申請的一塊內存,且沒有任何一個指針指向它,那麼這塊內存就泄露了。
從用戶使用程序的角度來看,內存泄漏本身不會產生什麼危害,作爲一般的用戶,根本感覺不到內存泄漏的存在。真正有危害的是內存泄漏的堆積,這會最終消耗盡系統所有的內存。從這個角度來說,一次性內存泄漏並沒有什麼危害,因爲它不會堆積,而隱式內存泄漏危害性則非常大,因爲較之於常發性和偶發性內存泄漏它更難被檢測到。
Android應用內存泄漏的的原因有以下幾個:
1查詢數據庫後沒有關閉遊標cursor
2 構造Adapter時,沒有使用 convertView 重用
3 Bitmap對象不在使用時調用recycle()釋放內存
4 對象被生命週期長的對象引用,如activity被靜態集合引用導致activity不能釋放
內存泄漏的發現:
通過DDMS中的heap工具,去發現是否有內存溢出。
內存泄漏如何解決:
通過內存分析工具 MAT(Memory Analyzer Tool),找到內存泄露的對象