【问题标题】:Java SoftReference priorityJava 软引用优先级
【发布时间】:2020-04-19 16:02:35
【问题描述】:

我有一个应用程序有几个非常大的数据块,需要很长时间来计算。我将它们中的每一个都保存为 SoftReference,因为我可以重新计算它们,但这需要很长时间。因此,只要我有足够的内存,我就想重用我已经计算过的东西。这正是 Java SoftReference 的用途。

但是,我真正想做的是对这些数据块进行排名,因为有些数据块更重要,计算时间也比其他数据块要长,所以我想让垃圾收集器最后收集这些数据。

我不想要将这些块写入磁盘的解决方案。我知道该怎么做。我只想能够在我的软引用上设置垃圾收集的顺序/优先级。

【问题讨论】:

  • 我不认为 Java 可以做到这一点。我能想到的最接近的事情是在内存中保留一个最小值,将第二个集合放入 SoftReference,然后将其余块放入 WeakReference。这会给你一些优先系统的外观,尽管它会很不完美。
  • 我发现这是我以前遇到过的一个很好的问题,不幸的是我没有答案。

标签: java garbage-collection rank soft-references


【解决方案1】:

不保证清除软引用的时间或清除对不同对象的一组此类引用的顺序。

作为一项规则,JVM 实现会在清理最近创建或最近使用的引用之间进行选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 2013-05-05
    • 2012-12-13
    • 1970-01-01
    相关资源
    最近更新 更多