使用场景:
RMapCache<Object, Object> mapCache = redissonClient.getMapCache("key");
mapCache.put("key1","value1",100, TimeUnit.SECONDS);
mapCache.expire(1000,TimeUnit.SECONDS);
每个key都可以设置相应的过期时间
整个mapchache也可以设置大的过期时间
运行一段后:
线上频繁报出OGC,一分钟5-8次
mat查看dump文件
org.redisson.eviction.MapCacheEvictionTask内存泄露
发现mapcache对每一个键值对都会设置一个本地的定时任务,在过期时间到了之后,再对redis中的mapcache键值对删除
问题:
1.mapcache不是分布式,上线会导致定时任务失效,redis数据无法及时删除,redis内存上升
2.mapcache在本地启动的定时任务过多,导致进入老年代,频繁触发OGC