2010-12-02 74 views
3

我有一個創建一系列位圖的應用程序。我在SoftReferences中保存這些位圖,以避免內存不足。我希望堆大小增長到最大16MBs,然後開始收集我的SoftReferences。然而,SoftReference是非常熱切地收集的,在將堆增加到最大值之前。無論如何強迫收集引用不那麼熱切?或者手動將堆擴展到最大?可能是一種只用16mb分配啓動應用程序的方法?Android堆大小和SoftReferences

回答

3

目前無法修改SoftReference收集行爲。

我不確定你的意思是「手動增加堆到最大」。

如果這些是Bitmap類的實例(與一些自定義位圖實現相對),則像素數據實際上存儲在本機堆中,但使用煩人的「外部分配」會計技巧,這進一步使情況變得複雜。 (值得注意的是,存儲器由終結器釋放,而不是GC,並且終結器必須在GC完成後在單獨的線程中執行。可以分配Bitmaps,直到內存用完,GC無法釋放內存在投擲OOM錯誤之前)。

+0

由「堆增長到最大」我希望的辦法,迫使16MB的分配我的應用程序,在啓動時。相當於:來自java的「-Xmx16m」。 – ab11 2010-12-03 01:01:45