Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何强制JVM清除WeakHashMap的所有WeakReference/Key_Java_Memory Leaks_Garbage Collection_Jvm_Weak References - Fatal编程技术网

Java 如何强制JVM清除WeakHashMap的所有WeakReference/Key

Java 如何强制JVM清除WeakHashMap的所有WeakReference/Key,java,memory-leaks,garbage-collection,jvm,weak-references,Java,Memory Leaks,Garbage Collection,Jvm,Weak References,有没有办法强制jvm清除所有WeakReferences(或WeakHashMap的所有键),如果它们不再被常规引用引用 触发垃圾回收将不起作用,弱引用将保持活动状态。 (我读到只有在内存不足时才会清除弱引用)。当内存不足时会清除软引用 更频繁地清除弱引用(就像所有对象只剩下弱引用的时候一样) 查看包的官方Java文档(包文档有助于解释): 你能引用Tomcat关于关机的确切消息吗?你确定你没有误解它吗?对于Tomcat来说,重要的是没有硬引用固定ServletContext的类加载器 Wea

有没有办法强制jvm清除所有
WeakReferences
(或
WeakHashMap
的所有键),如果它们不再被常规引用引用

触发垃圾回收将不起作用,弱引用将保持活动状态。
(我读到只有在内存不足时才会清除弱引用)。

当内存不足时会清除软引用

更频繁地清除弱引用(就像所有对象只剩下弱引用的时候一样)

查看包的官方Java文档(包文档有助于解释):

你能引用Tomcat关于关机的确切消息吗?你确定你没有误解它吗?对于Tomcat来说,重要的是没有硬引用固定ServletContext的类加载器

WeakHashMap: 只有钥匙握得不牢。你用什么作为“价值”?值是否强烈地自引用自己的“键”?有了这一点,我怀疑你是否理解WeakHashMap为你提供了什么(这假定它是工作的正确工具)


根据我的经验,在第一次gc扫描中,您可以使用System.gc()清除Sun JVM 5中的weakreference,这对我来说是100%可靠的。但是他们不能保证这一点。

你为什么要这么做?可能还有其他方法可以实现您的真正目标。我希望确保我的应用程序不会泄漏。(目前,tomcat在停止我的应用程序后检测到“泄漏”,根据我的堆分析器,这是由于弱引用仍然被保留)内存泄漏只是内存不足时的问题。如果不这样做,即使是真正的内存泄漏也是完全没有意思的。既然弱链接无论如何都不会导致OOM异常,为什么要麻烦呢?@Voo:
内存泄漏只是内存不足时的一个问题。有趣的想法……如果您的应用程序是系统中唯一运行的应用程序,我想这是正确的…@Voo-您假设泄漏的内存中没有一个与已用内存共享页面。这些泄漏的引用完全有可能耗尽部分内存页,并导致抖动。子讨论是关于你的笼统陈述,即不会导致OOM错误的内存泄漏无关紧要,以及它可能不真实的原因。