2015-06-12 127 views
1

我有許多圖像加載使用畢加索在視圖鰭片是在一個片段。我想知道當我改變到不同的片段時,圖像是否仍然在內存中。如果他們堅持在記憶中,我怎麼去除它們。畢加索清除內存

任何建議,任何其他方法來加載圖像到視圖鰭將不勝感激。這些圖像位於設備的內部存儲器中。

在此先感謝。

+1

如果您使用recyclerView,那麼它會照顧緩存,但一旦關閉應用程序並重新打開它,它會再次加載圖像。 –

+0

如果你真的好奇你的設備上的內存使用情況爲了調試......您可以使用https://developer.android.com/tools/debugging/debugging-memory.html中指定的一些技術 - 即堆轉儲和MAT。 – Zadrox

回答

2

試試.. setIndicatorsEnabled(true)。它指的是你從哪裏載入圖像。 另外,請查看鏈接中有關DEBUG INDICATORS的官方文檔。 enter link description here

避免畢加索從緩存中加載圖像。

請設置

.memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE) .networkPolicy(NetworkPolicy.NO_CACHE,NetworkPolicy.NO_STORE)

您的需求。

1

我有(有?)這樣的問題。在我的情況下,它是在ViewPager中的「畫廊」和單個圖像片段的主 - 細節模式。畢加索它是自己使用LRU緩存的可用內存的七分之一,我不建議改變它 - 對於99%,它只會推遲OOM導致崩潰片刻。 在我的情況下,對圖像的引用是由其他引起泄漏的對象保存的。

在我的情況下,什麼幫助: 我玩了一段時間的應用程序,使其在內存中增長,然後使用Android設備監視器創建hprof轉儲。 此文件需要通過sdk(platform-tools目錄)中的hprof-conv進行轉換。 可以在Eclipse Memory Analyzer Tool中查看翻譯後的文件(它也可以作爲獨立應用程序以及Eclipse插件使用)。 不幸的是,尋找大對象並沒有什麼幫助 - 正如人們所預料的那樣 - 在應用程序中有很多位圖用於查看圖像。我使用直方圖工具來查找存在於大量數據中的對象,特別是在通過我自己的應用程序包過濾結果之後,這種方法更有幫助。最後,我發現我自己的問題的解決方案和採取的行動是: 我做了「細節」片段單個實例(工廠方法有點破解) - 由於未知的原因,這個類的以前的實例保存在內存中,不收集GC 。 我將ViewPager更改爲RecyclerView,因爲ViewPager在數據偏離過程中在內存中保留了太多的備用視圖。 我也對連接進行了一些改進,使它不太頻繁地給GC提供更好的工作機會。

什麼我也建議更換爲:

使用.fit()或畢加索的.resize()方法來限制放入圖像視圖圖像的大小。 如果可能的話,創建適合您需要的圖片(需要後端開發)。 經常檢查浪費的內存,使這些調查更容易。