gpt4 book ai didi

java - WeakReference 是我需要的吗?

转载 作者:行者123 更新时间:2023-12-02 04:41:52 25 4
gpt4 key购买 nike

我正在开发一个订购系统,这是我的场景:我有一个类以“缓存”策略之类的方式保存新订单。此时,我使用的是这样的HashMap:

public static final Map<Long, Order> orders = new HashMap<Long, Order>();

我通过long唯一标识订单(它不是来自数据库,它只是一个递增变量)。我不从数据库中保存它的原因是,例如:员工正在注册来自电话的订单,突然客户不想再订购了,这样我就不会用无用的数据填充我的数据库登记。基于此,我正在寻找一种方法来保存所有订单并“自动清理”不再使用的索引。

我看过WeakReference,但我不知道这是否是我真正需要的。我愿意接受任何建议。

提前致谢。

最佳答案

您不需要为此使用WeakReference。 WeakReference 用于在内存中缓存大型对象(例如图像),并且您希望指示垃圾收集器在可用内存变得稀疏时可以删除该图像的情况。在这种情况下,您稍后可以随时从磁盘重新加载图像,因此您不必关心它是否从内存中删除。

对于您的情况,我将使用普通的HashMap。一旦客户确认他们确实想要该订单,您就可以将其保存到数据库中。

如果客户不想要该订单,则只需将其从 HashMap 中删除 - 这是一个非常便宜的操作。

编辑:

您可能还在寻找“定时缓存”。类似 HashMap 的东西会在一定时间后自动过期任何键/值。 Google的Guava有这样的数据结构。请参阅related SO question .

关于java - WeakReference 是我需要的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30090262/

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