gpt4 book ai didi

java - 具有值(等于)相等性的 SoftReference 的潜在用途

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:25:22 26 4
gpt4 key购买 nike

我之前得出的结论是,如果您需要一个具有基于值(等于)的相等性的 SoftReference,那么设计就会很糟糕,但内部人员除外。这是继 Google Collections 和 Guava 之后,不包括此类。但是我遇到了一个问题,我认为可以使用这样的对象。

我们在视觉效果渲染场中有一个 Assets 管理系统,其中有 100 个进程运行相同的作业,只是渲染的帧数不同。我们有一个 Oracle 数据库,需要记录所有使用的 Assets 。在中间层 Assets 管理系统中,我们可以使用 HashSet 来记录是否要插入到 Oracle 中的对象,而不是用相同的插入来攻击 Oracle,在这种情况下只有一个会成功完成所有作业。

我可以使用带有过期时间的 Google MapMaker,但我不想担心过期时间是否正确,我们的渲染可以在几小时内运行,有些甚至可以在几天内运行。使用 equals 相等性的 SoftReference 听起来是一种更好的方法,因此 JVM 将自动管理垃圾回收。

对于我想用带垃圾收集的 ConcurrentHashMap 解决的其他问题,我会在 HashMap 中使用强引用作为获得 equals() 相等性的键,并使用 SoftReference 作为值,以便 JVM 可以垃圾收集一些东西,但在这种情况下,这个值并不重要,我没有一个值可以包装在 SoftReference 中放在那里。因此,使用带有 equals() 的 SoftReference 似乎可以解决问题。

对此还有其他建议吗?

最佳答案

在大多数情况下,当您想对 Google Collections 使用软引用时,您应该调用

MapMaker.softValues()

对于强键但软值,查找将使用相等性,并且当内存紧张时键值对将被垃圾收集。

关于java - 具有值(等于)相等性的 SoftReference 的潜在用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2250191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com