我们有一个应用程序可以完全缓存大量数据。缓存作为静态映射维护。
由于数据每天都会被一些批处理周期修改,所以我们在数据修改后刷新缓存。刷新缓存是通过创建新对象并将静态变量引用到这些新对象来完成的。因此,每天都会创建新对象并取消引用旧对象。
但问题是服务器堆内存不断增加,直到有一天它崩溃而没有内存异常。
我真的怀疑取消引用的对象是否被垃圾收集。
这是我的课。
Class CacheService {
public static Map<String,Article> articleCache = null;
public docache(){
private Map<String,Article> tempArticleCache= new HashMap<String,Article>();
//Caching stuff
//finally
articleCache = tempArticleCache; // i hope defreferencing takes place here.
}
}
每天都会调用函数 docache() 来更新缓存。任何人都可以帮助我在没有这个问题的情况下实现缓存。