1
pkwenda OP 大概意思就是缓存的数据,时间没到,不应该被 GC,要么死:OOM, 要么 缓存过期 :解除引用,GC -> 内存释放 ?
|
2
dncba 2020-07-10 20:18:17 +08:00
GCRoot 了解下。能通过 GCRoot 找到你的数据就不会被 GC
|
5
cxshun 2020-07-10 20:46:28 +08:00
缓存一般情况下都是通过一个 map 来实现,而你的缓存对象,都是被 put 入 map 里面的,也即是在 map 里面的 table 属性里面或者其他属性,那么此时 GCRoot 就可到达,当然就不会被 GC 了。
|
6
hantsy 2020-07-10 21:13:50 +08:00
@cxshun 一般缓存实现 Weak 的版本用得多。
1,缓存不一定是放内存,第一次用 Ehcache 的时候知道缓存也是要有写硬盘的策略。 2,实现方式太多样了。HazelCast 这种产品就太复杂了,不可能用简单的 Map 之类的去实现了,类似 DataGrid 产品太多了,Redhat 有 Infinispan,Ehcache 也有服务器版本。 |
7
ljzxloaf 2020-07-10 21:25:34 +08:00 via Android 1
main thread 持有的 cachemanager,cachemanager 持有 cache 集合
|