我使用了幾個大的drawable,我不知道如何管理內存泄漏。 我跟蹤了我的應用程序的堆大小,它不停止增長(作爲分配的內存)。Android Drawables內存泄漏
它特別是長大而不會減少的「字節數組(byte [])」類型。 (在Eclipse上的DDMS Heap視圖中)
我的應用程序由一個使用片段的活動組成。 這些片段正在顯示幾張大圖片。 我試圖將drawables回調設置爲null,將drawables設置爲null,當我彈出一個片段但堆不會減少時清除我的易失性緩存(這會阻止我的應用程序執行太多的磁盤IO操作)。實際上,每次我調用: Drawable.createFromResourceStream(context.getResources(),value,new FileInputStream(f),f.getName(),opts); 堆長大。我如何釋放記憶?
謝謝!
我引用了應用程序上下文,而不是活動場景,你認爲問題是,我的片段永遠不會被銷燬,他們泄露? – abecker
也許,請在我的答案中查看視頻,瞭解如何使用SDK內存分析工具(MAT)查找正在泄漏的對象 –
嘿!我解決了我的問題!實際上,我的片段被保存在內存中,並且它是我的靜態易失性緩存。我不知道爲什麼它有這種行爲。我創建了一個DrawableManager,當我創建一個片段時,它有多種方法從磁盤或網絡中檢索Drawable。當它將一個視圖傳遞給我的視圖時,它將它保存在一個靜態HashMap中(以便在我的其他片段中重用此緩存)。我只是讓我的HashMap沒有靜態(不能重用片段之間的易失性緩存)。我不知道爲什麼我的碎片被留在記憶中。 – abecker