如何强制释放软引用

ida*_*dan 1 java garbage-collection soft-references

我知道软引用只会在 JVM 内存不足时释放。我怎样才能手动完成呢?

我的代码:

  Object object = new Object();
  ReferenceQueue queue = new ReferenceQueue();
  SoftReference softReference= new SoftReference(object, queue);
  object = null;
  System.gc();
  //now I force release soft reference.
Run Code Online (Sandbox Code Playgroud)

最新的java版本(8-11)有解决方案吗?

小智 5

  • System.gc()根据垃圾收集开始之前设置的阈值,可能永远不会运行。
  • 一种选择是调整-XX:SoftRefLRUPolicyMSPerMB=2500JVM 配置中的参数。这意味着任何软引用的项目都将在 2.5 秒内被删除。希望这有帮助。