【发布时间】:2011-12-06 07:28:48
【问题描述】:
如果常规引用不再引用它们,是否有办法强制 jvm 清除所有 WeakReferences(或 WeakHashMap 的所有键)?
触发垃圾回收将不起作用,弱引用仍然存在。 (我读到只有在内存不足时才会清除弱引用)。
【问题讨论】:
-
为什么要这么做?可能还有其他方法可以实现您的真正目标。l
-
我想确保我的应用程序没有泄漏。 (目前,tomcat 在停止我的应用程序后检测到“泄漏”,根据我的堆分析器,这是因为仍然持有弱引用)
-
只有在内存不足时才会出现内存泄漏问题。如果你不这样做,那么即使是真正的内存泄漏也是完全无趣的。而且由于弱链接无论如何都不会导致 OOM 异常 - 为什么要麻烦?
-
@Voo:
Memory leaks are only a problem if you run out of memory.Interesting thinking....如果您的应用程序是系统中唯一运行的应用程序,我想这是正确的...... -
@Voo - 您假设您的泄漏内存没有与已用内存共享页面。那些泄露的引用完全有可能用完部分内存页面并导致抖动。子讨论与您的一揽子声明有关,即不会导致 OOM 错误的内存泄漏无关紧要,以及它可能不真实的原因。
标签: java memory-leaks garbage-collection jvm weak-references