防記憶體不足的HashMap類

2021-06-25 10:32:35 字數 1109 閱讀 1829

眾所周知,在移動端進行開發,最麻煩的就是記憶體不足的情況,當記憶體不足時,會關閉某些應用,對應用的使用造成影響。比如,要儲存每個執行的view,記錄到棧中,方便進行回退操作時,一般都是使用stack或map進行儲存。

一般都是如下寫法:
/**

* 用於儲存載入過的中間介面的物件(用於下次再次載入時使用,不需要重新例項化乙個view)

*/private mapviewcache = new hashmap();// k

if (viewcache.containskey(key)) else catch (exception e)

}

但當記憶體不足時,整個應用都會因為這個map而崩潰。為了防止這種情況,可以通過軟引用的方式,包裝占用記憶體的物件,降低他的優先順序,使其能夠被gc**。而包裝後的map物件如下:

/**

* 軟引用的map集合

* * @author administrator

* * @param * @param */

public class softmapextends hashmap

@override

public v put(k key, v value)

@override

public v get(object key)

return null;

} @override

public boolean containskey(object key) else

*/return get(key) != null;

} /**

* 清理空袋子

*/private void clearsr()

} /**

* 增強版的袋子,增加了key,方便清理操作

* * @author administrator

* * @param * @param */

private class softvalueextends softreference

}

Winform 記憶體不足

winform 記憶體不足 winform,我給picturebox 賦值 picbox one.backgroundimage image.fromfile 解決方案 picbox one.backgroundimage 每賦值一次,都要把上一次的拉出來釋放掉 c codeif picbox on...

linux 記憶體不足

在linux下增加臨時swap空間 sudo dd if dev zero of home swap bs 64m count 16注釋 of home swap,放置swap的空間。count的大小就是增加的 swap 空間的大小,64m 就是塊大小,這裡是 64mb,所以總共空間就是bs cou...

Mysql記憶體不足問題

1.啟動mysql時一直不成功,檢視錯誤日誌 var log mysql error.log 2.主要的錯誤資訊有如下幾條 error innodb mmap 136151040 bytes failed errno 12 error innodb cannot allocate memory fo...