【发布时间】:2020-04-19 16:02:35
【问题描述】:
我有一个应用程序有几个非常大的数据块,需要很长时间来计算。我将它们中的每一个都保存为 SoftReference,因为我可以重新计算它们,但这需要很长时间。因此,只要我有足够的内存,我就想重用我已经计算过的东西。这正是 Java SoftReference 的用途。
但是,我真正想做的是对这些数据块进行排名,因为有些数据块更重要,计算时间也比其他数据块要长,所以我想让垃圾收集器最后收集这些数据。
我不想要将这些块写入磁盘的解决方案。我知道该怎么做。我只想能够在我的软引用上设置垃圾收集的顺序/优先级。
【问题讨论】:
-
我不认为 Java 可以做到这一点。我能想到的最接近的事情是在内存中保留一个最小值,将第二个集合放入 SoftReference,然后将其余块放入 WeakReference。这会给你一些优先系统的外观,尽管它会很不完美。
-
我发现这是我以前遇到过的一个很好的问题,不幸的是我没有答案。
标签: java garbage-collection rank soft-references