java – 为什么使用Simple Least最近使用的缓存机制?

我使用jprofiler检查Java微服务,同时用JMeter模拟并发用户.
使用jprofiler,我可以看到:

导航到方法find(),我意识到该方法有synchronized关键字

在我看来,这种方法导致线程被阻塞的问题.但为什么要使用它?我可以从微服务中禁用这个缓存机制吗?微服务是用Java编写的,它使用Spring,Spring Boot.

谢谢

我从Monitor History的相同jprofiler快照中添加了屏幕截图,以显示ResolvedTypeCache类所花费的时间.有时候时间较少但有时却很大.

最佳答案
你的结论对我来说似乎是非常错误的,特别是当你暗示这是坏的或者有潜在的死锁时.

在该类中存在同步方法的事实并不表示死锁.事实上,有多个线程在单个锁上等待 – 毕竟这是同步的.另外看那些时候,那些看起来像微秒,并且线程留在那里的最多是4000,这是大约4ms – 不是那么多.

由于这是一个内部库,因此没有太多可以做的,可能建议他们实现一个ConcurrentHashMap,它将提高性能或更好地自己制作一个补丁.

相关文章

这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原...
今天小编给大家分享的是一文解析spring中事务的传播机制,相...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓...