soft-references

    2熱度

    1回答

    我得到一個OutOfMemoryException: E/AndroidRuntime(3013): java.lang.OutOfMemoryError: bitmap size exceeds VM budget E/AndroidRuntime(3013): at android.graphics.BitmapFactory.nativeDecodeStream(Native Metho

    6熱度

    2回答

    每對番石榴的MapMaker.softValues()文檔: 警告:在大多數情況下,最好是設置每個高速緩存的最大尺寸,而不是使用軟引用的。如果您熟悉軟引用的實際後果,則只應使用此方法。 我對軟引用有一箇中間的理解 - 他們的行爲,用途和他們與垃圾收集的契約。不過,我想知道這些文件暗示的實際後果是什麼。爲什麼使用最大尺寸而不是軟引用更好?在實現緩存方面,軟引用的算法和行爲是否使得它們的使用效率更高,

    77熱度

    4回答

    有人可以解釋三個參考類之間的區別(或鏈接到一個很好的解釋)嗎? SoftReference>WeakReference>PhantomReference,但是我什麼時候會使用每一個?爲什麼有WeakHashMap但是沒有SoftHashMap或PhantomHashMap? 如果我用下面的代碼... WeakReference<String> ref = new WeakReference<Str

    2熱度

    1回答

    我試圖實現寫回緩存。我試圖使用軟引用,但是由於在將引用添加到gcQueue之前已清除引用,因此我無法訪問引用對象,因此執行事後回寫會遇到麻煩。 解決方案?

    13熱度

    4回答

    什麼是Java中軟引用的用例?當JVM的內存不足時,爲了釋放足夠的資源以便在關閉JVM之前轉儲關鍵信息,將垃圾收集非關鍵項目是否有用? 他們被稱爲軟引用,他們軟,當「處於壓力下」時會中斷,即:JVM的內存不足。我理解弱引用和幻影引用,但不是真正需要這些引用時。

    0熱度

    1回答

    假設一個潛在的多線程環境。我想使用一張地圖和(值)緩存。爲什麼我更喜歡 collection.immutable.Map.empty[ K, SoftReference[ V ]] new com.google.common.collect.MapMaker.softValues.makeMap[ K, V ] 其他?地圖將被存儲在STM引用中,所以不可變的將會直截了當並且很好。此外,K最有

    0熱度

    2回答

    前段時間我使用軟引用創建了一個緩存,但是在試圖解決一個錯誤時,我擔心實際上我做了不正確的操作,並且在它不應該刪除對象時,噸。這就是我已經做到了: private static final Map<String, SoftReference<Buffered>> imageMap = new HashMap<String,SoftReference<Buffered>>(); pub

    24熱度

    12回答

    我需要使用一定比例的RAM緩存Java中的對象。我知道其他人已經提出了這個問題,但是沒有任何回覆符合我的要求。 我的要求是: 簡單,重量輕 不顯着比一個普通的HashMap 使用LRU,或近似於LRU 我試圖LinkedHashMap的一些刪除策略比較慢,但是它需要你指定最大數量的元素,而我不知道要填充可用RAM的數量(它們的大小會有很大差異)。 我目前的做法是使用谷歌收集的地圖製作工具如下: M

    10熱度

    4回答

    我正在爲我的Android應用程序實現緩存機制。 我使用SoftReference,就像我找到的許多例子。問題是,當我在我的ListView中向上或向下滾動時,圖像的大多數已被清除。我可以在LogCat中看到,每次應用程序加載新圖像時,我的應用程序都會被垃圾收集。這意味着ListView中不可見圖像的大多數都消失了。 所以,每次我回捲到一個較早的位置(我真的下載的圖片前)我不得不再次下載圖像 -

    0熱度

    2回答

    我得到了一個OOM。我知道這個問題已經被前面的問題覆蓋了很多,但是我一般都與Android和Java的內部有關。 由於我隨機加載圖像,我得到這個可怕的OOM異常。 我有我的圖片在HashMap中>。如果內存不夠,從SoftReferences定義中我會期望Drawables被GC'ed。 相比之下,從我以前的研究中,我發現drawable中的位圖被分配在不同的堆(本地堆)中,而不是我的應用程序堆中