gpt4 book ai didi

java - 弱引用和软引用

转载 作者:行者123 更新时间:2023-11-30 07:57:38 24 4
gpt4 key购买 nike

弱引用允许GC在下一个GC周期中收集引用,而软引用将保留引用直到内存已满,并且在抛出内存不足错误之前,它将删除软引用。我们将在哪里使用这些引用文献?哪个引用最适合实现缓存?例如:如果我使用软引用进行缓存,那么当内存满时它将被清除。但是让我们假设,我已经获取了一些数据库详细信息并将其放入内存中并将该详细信息缓存在软引用中,现在如果我从内存中删除了一些键值,它仍然会存在于缓存中。我们是否需要在此使用弱引用情况如何?应该如何做出决定。

最佳答案

大多数情况下,软引用用于缓存。您希望尽可能长时间地将数据保留在 RAM 中,但清除缓存总比因 OOM 而死掉要好。

例如,可以使用弱引用来保留有关您的类(class)的额外信息。您有类 User 并且您想要存储一些附加信息,这些信息应该在删除用户时删除(您不想手动执行此操作,因为它是样板代码)。因此,您使用 WeakHashMap 并使用 User 作为键,并且当没有对 user 的引用时,它也会从该映射中删除。

顺便说一下:在引用计数的语言中,弱引用是用来防止引用循环的,但是java GC消除了“隔离岛”,所以弱引用的这种用法不适用于java。

关于java - 弱引用和软引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32443746/

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