
千万 不能
使用中的String.intern(已经有过多年的与此相关的各种内存问题)。而是创建您自己的缓存,类似于String.intern。基本上,您需要一个Map,每个键都映射到其自身。然后,在缓存任何字符串之前,您“实习”它:
private Map<String,WeakReference<String>> myInternMap = new WeakHashMap<String,,WeakReference<String>>();public String intern(String value) { synchronized(myInternMap) { WeakReference<String> curRef = myInternMap.get(value); String curValue = ((curRef != null) ? curRef.get() : null); if(curValue != null) { return curValue; } myInternMap.put(value, new WeakReference<String>(value)); return value; }}注意,对键和值使用弱引用,这样就不会保留不再使用的字符串的引用。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)