WeakReference我需要什么?

时间:2015-05-07 01:10:58

标签: java caching weak-references

我正在开发一个订购系统,这是我的场景:我有一个类,可以保存新订单,例如"缓存"战略。这时,我正在使用这样的HashMap:

f <- spline(x, y, n = 100, method = "natural")
f(7)

我通过public static final Map<Long, Order> orders = new HashMap<Long, Order>(); 唯一标识订单(不是来自数据库,它只是一个递增的变量)。我没有从DB保存它的原因是,例如:员工正在注册来自电话的订单,突然客户不再想要订购,所以我不会忘记使用无用的寄存器填充我的数据库。基于此,我正在寻找一种方法来保存所有订单并自动清理&#34;不再使用的索引。

我看过long,但我不知道这是不是我真正需要的。我对任何建议持开放态度。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您不希望WeakReference为此。如果您在内存中缓存大对象(比如图像),则使用WeakReference,并且如果空闲内存变稀疏,您希望指示垃圾收集器可以删除此图像。在这种情况下,您可以随时从磁盘重新加载映像,因此您不必关心它是否已从内存中删除。

根据您的情况,我会使用普通的HashMap。一旦客户确认他们确实想要订单,那么您可以将其持久保存到数据库中。

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

修改

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