• 将数组中的不用的元素设置为null,尽早垃圾回收

  • 缓存可以使用WeakHashMap.及时将key进行回收。

  • 使用定时器将缓存中不用的项目删除或者LinkedHashMap.removeEldestEntry()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import com.alibaba.druid.support.json.JSONUtils;

import java.util.LinkedHashMap;
import java.util.Map;

public class LinkedHashMapTest {

private static final int MAX_ENTRIES =3;

public static void main(String[] args) {
LinkedHashMap<String,String> linkedHashMap =new LinkedHashMap(){
@Override
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > MAX_ENTRIES;
}
};
linkedHashMap.put("beijing","haid");
linkedHashMap.put("beijing2","haid2");
linkedHashMap.put("beijing3","haid3");
System.out.println(JSONUtils.toJSONString(linkedHashMap));
linkedHashMap.put("beijing4","haid4");
System.out.println(JSONUtils.toJSONString(linkedHashMap));
}
}

输出:

1
2
{"beijing":"haid","beijing2":"haid2","beijing3":"haid3"}
{"beijing2":"haid2","beijing3":"haid3","beijing4":"haid4"}

  • 将监听器回调及时的清除,可以使用WeakHashMap.

  • 使用内存Heap Profiler进行对象分析。