private static Map<interface,class> m =new HashMap<interface,class>;
是类的实例变量。
在 class Synchronized(m){m.put(this,this);}
的构造函数中,
问题是这里的键和值是相同的,因此当更新的指示到来时,HAshMap 正在收集所有数据,并且永远不会进行 GC 处理。它导致泄漏。
我尝试了一种解决方法并删除了 static 关键字,它工作正常。但我认为删除 static 可能会导致一些严重的问题。
有没有其他方法可以纠正这种泄漏。代码重构是不可能的,因为它非常复杂,而且我已经没有时间了。任何人请指导我。提前致谢
最佳答案
如果 HashMap 保留了您不想要的条目,那是因为您没有删除它们。
如果您只保留所需的条目,则静态集合没有任何特殊原因会导致内存泄漏。
关于java - static HashMap 导致内存泄漏,但是如何纠正它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14209793/