java - static HashMap 导致内存泄漏,但是如何纠正它?

标签 java memory-management memory-leaks static jvm

private static Map<interface,class> m =new HashMap<interface,class>;

是类的实例变量。

class Synchronized(m){m.put(this,this);} 的构造函数中,

问题是这里的键和值是相同的,因此当更新的指示到来时,H​​AshMap 正在收集所有数据,并且永远不会进行 GC 处理。它导致泄漏。

我尝试了一种解决方法并删除了 static 关键字,它工作正常。但我认为删除 static 可能会导致一些严重的问题。

有没有其他方法可以纠正这种泄漏。代码重构是不可能的,因为它非常复杂,而且我已经没有时间了。任何人请指导我。提前致谢

最佳答案

如果 HashMap 保留了您不想要的条目,那是因为您没有删除它们。

如果您只保留所需的条目,则静态集合没有任何特殊原因会导致内存泄漏。

关于java - static HashMap 导致内存泄漏,但是如何纠正它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14209793/

相关文章:

java - PDF 文件 - 使用 Java 检查更新?

Java Servlet 容器性能?

delphi - 何时以及为何在 DirectShow 过滤器中使用 CoTaskMemAlloc()?

scala - 为什么这个 Scalaz 7 枚举器会泄漏内存?

c - Realloc 在 while 循环中不起作用

java - NLTK 和 MaltParser 退出,错误代码为 1

用于安排 SQL 文件在 UNIX 计算机上的特定日期和时间执行的 Java 代码

C++字符串实现

c - 检测到 glibc - 双重释放或损坏

java - 由于 org.jboss.vfs.spi.JavaZipFileSystem 类的许多实例导致内存泄漏