我使用jprofiler检查Java微服务,同时用JMeter模拟并发用户.
使用jprofiler,我可以看到:
导航到方法find(),我意识到该方法有synchronized关键字
在我看来,这种方法导致线程被阻塞的问题.但为什么要使用它?我可以从微服务中禁用这个缓存机制吗?微服务是用Java编写的,它使用Spring,Spring Boot.
谢谢
我从Monitor History的相同jprofiler快照中添加了屏幕截图,以显示ResolvedTypeCache类所花费的时间.有时候时间较少但有时却很大.
最佳答案
你的结论对我来说似乎是非常错误的,特别是当你暗示这是坏的或者有潜在的死锁时.
在该类中存在同步方法的事实并不表示死锁.事实上,有多个线程在单个锁上等待 – 毕竟这是同步的.另外看那些时候,那些看起来像微秒,并且线程留在那里的最多是4000,这是大约4ms – 不是那么多.
由于这是一个内部库,因此没有太多可以做的,可能建议他们实现一个ConcurrentHashMap,它将提高性能或更好地自己制作一个补丁.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。