你们是否知道Java Map或类似的标准数据存储在给定的超时后自动清除条目?这意味着老化,旧的过期条目会自动"老化".
最好是在可通过Maven访问的开源库中?
我知道自己实现这些功能的方法,并且过去曾多次这样做过,所以我不是在这方面寻求建议,而是指向一个好的参考实现.
基于WeakReference的解决方案(如WeakHashMap)不是一个选项,因为我的键很可能是非实习字符串,我想要一个不依赖于垃圾收集器的可配置超时.
Ehcache也是一个我不想依赖的选项,因为它需要外部配置文件.我正在寻找一个仅限代码的解决方案.
这是一个在求职面试中出现的问题.我们的想法是定义一个数据结构,而不是使用Java内置的LinkedHashMap.
LRU高速缓存删除最近最少使用的条目以插入新条目.因此,给出以下场景:
 A - B - C - D - E
如果A是最近最少使用的项目,如果我们要插入F,我们需要删除A.
如果我们通过(键,值)保存带有缓存条目的HashMap以及包含元素的键和使用时间的单独列表,则可以轻松实现这一点.但是,我们需要查询列表以找到最近最少使用的项目,具有潜在的O(n)时间复杂度.
如何在Java中为通用对象和O(1)操作实现此结构?
这与可能的重复不同,因为它侧重于效率(O(1)ops)和实现数据结构本身,而不是扩展Java.
我使用JProfiler检查Java微服务,同时用JMeter模拟并发用户.使用JProfiler,我可以看到:
 
 
 
 导航到方法find(),我意识到该方法有synchronized关键字
导航到方法find(),我意识到该方法有synchronized关键字

在我看来,这种方法导致线程被阻塞的问题.但为什么要使用它?我可以从微服务中禁用这个缓存机制吗?微服务是用Java编写的,它使用Spring,Spring Boot.
谢谢
我从Monitor History的相同JProfiler快照中添加了屏幕截图,以显示ResolvedTypeCache类所花费的时间.有时候时间较少但有时却很大.

java ×3
caching ×1
dictionary ×1
generics ×1
jprofiler ×1
profiling ×1
spring ×1
spring-boot ×1