为什么使用简单最近最少使用缓存机制?

2024-06-23

I am using JProfiler to inspect a Java microservice while I simulate concurrent users with JMeter. With JProfiler I can see: Overview Thread History Monitor Usage Monitor History Navigating to the method find(), I realized the method has synchronized keyword method

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

谢谢

I added screenshot from the same JProfiler snapshot for Monitor History to show the time spent in the ResolvedTypeCache class. Sometimes the time is less but sometimes is huge. History Monitor Update


Why is LRU用过的?大概是因为有一些东西值得缓存。

为什么synchronized?因为LinkedHashMap这里用作缓存的不是线程安全的。它确实提供了惯用的 LRU 机制 https://stackoverflow.com/questions/27475797/use-linkedhashmap-to-implement-lru-cache though.

它可以替换为ConcurrentMap来减轻同步的影响,但是这样你就会有一个不断增长的非 LRU 缓存,而这根本不是一回事。

现在你对此无能为力。最好的主意可能是联系开发人员并让他们知道这一点。总而言之,该库可能不适合您通过它的流量,或者您可能正在模拟会表现出病态行为的流量,或者您可能高估了这种影响(不是冒犯,我是只是非常穆德风格关于 SO 帖子,即“信任 no1”)。

最后,无竞争的同步成本较低,因此如果有可能将流量分配到缓存的多个实例,则可能会以某种方式影响性能(不一定是积极的)。不过我不了解图书馆的架构,所以这可能完全不可能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么使用简单最近最少使用缓存机制? 的相关文章

随机推荐

  • 将全局变量存储在单独的文件中以进行量角器测试

    我正在尝试为量角器测试创建一个单独的库存文件 其中我可以存储由不同测试脚本使用的所有可重用变量 示例变量列表称为 Vars js 规范应从此文件导入变量并使用它们 但是 这会失败 如下所示 这种方法实际上可以用于存储可重用变量吗 我实际上可
  • 创建向导

    因此 我尝试在 Visual Studio C 2010 Express 中创建一个将充当顺序表单的表单 我不确定我是否使用了此类表格的正确术语 并且我也没有在网上找到任何相关教程 基本上 我有一个表单将一次一步地向用户询问数据 它将在初始
  • 日期选择器不显示日历

    我的应用程序中有一个表单 我可以在其中从日期选择器日历中选择日期 当我刷新页面时 单击表单时会出现日期选择器日历 这是正确的行为 但是 当我使用链接从另一个页面到达同一页面时 单击表单后不会出现日历 我必须刷新页面才能使日历可见 这是我的表
  • 使用 Swift 在 IOS 上的 XMPP 连接问题

    我正在尝试使用 XMPP 框架 https github com robbiehanson XMPPFramework https github com robbiehanson XMPPFramework 使用快速 我是快速新手 clas
  • Swift:更新 UI - 主线程上的整个功能还是只是 UI 更新?

    我读到 UI 应该始终在主线程上更新 然而 当谈到实现这些更新的首选方法时 我有点困惑 我有各种函数可以执行一些条件检查 然后使用结果来确定如何更新 UI 我的问题是整个函数应该在主线程上运行吗 应该只更新 UI 吗 我可以 应该在另一个线
  • 我们如何将 elmah 日志集成到 servicestack 中

    我是 servicestack 和 elman 日志记录的新手 有人可以建议我们如何将 elmah 集成到服务堆栈应用程序中吗 谢谢 如果您有现有的日志记录解决方案 那么您可以使用ServiceStack Logging Elmah htt
  • UIView 在 swift 中改变其位置

    我如何制作一个UIView按一下按钮从原来的位置向上滑动 再按一下按钮将其放回原位 使用 Swift 和 Xcode 6 我目前已经尝试过这个 IBOutlet weak var DynView UIView IBAction func b
  • 使用 subplots 和 colorbar 与 matplotlib 将 x 轴与 sharex 对齐

    我正在尝试使用 pyplot 创建一组具有共享 x 轴的子图 当图表很简单并且所有 x 轴都对齐得很好时 这一切都很好 但是 当我包含包含颜色条的子图时 这会压缩该特定子图的宽度以包含颜色条 从而导致子图不再共享 x 轴 我在网上搜索过 但
  • Rails JSON 多重嵌套关联

    我有一个对象 测试列表 其中包含问题和奖励问题 每个问题都有一个主题模型 我试图将它们全部包含在 JSON API 中 但我不断收到奇怪的难以理解的语法错误消息 我可以让它处理问题和主题或奖励问题和主题 但不能同时处理两者 这是我现在所拥有
  • Angular 2 路由器导航无法使用相同的 url 第二次工作

    我有一个页面 单击按钮后 它将使用下面的路由器导航进行重定向 router navigate search data test 但是 当我第二次单击同一按钮而不更改值时 router navigate 将无法工作 我怎样才能覆盖它 欢迎所有
  • 从 NSTableView 中拖出进行删除

    我有一个NSTableView其中包含许多项目 我想实现从inside并掉落outsideNSTableView 的删除拖动的项目 有点像 Safari 如何 噗 地删除书签 The NSTableView已配置为支持拖放重新排序 并接受来
  • 如何在不刷新页面的情况下显示 mysql 数据库,无需单击按钮即可使用 GET 数据中的数据刷新页面

    我的问题是尝试在不刷新页面的情况下显示数据库中的值 好的 我的代码包含使用 GET 方法从第 1 页到第 2 页检索的值 假设该值是从包含值 3 的数据名称 位置 捕获的 然后使用第2页上 location 的值来抓取存储在哪个位置的用户信
  • GNU Makefile 中的仅限订单先决条件在 CMake 中可用吗?如果没有,有哪些替代选项?

    In GNU make 如果目标 A 依赖于两个目标 B 和 C 但使用目标 C 构建 A 要求目标 B 已经构建 但是目标 C 本身不依赖于 B 我可以使用仅订单先决条件 有没有其他选择CMake 我知道CMake只是一个配置工具 因此问
  • 最后一次迭代后 tqdm 更新

    我使用 tqdm 作为一个不错的进度条 但在迭代进度条后我想更新描述 下面是一个简单的例子 with tqdm somelist as pbar for element in pbar foo element pbar set descri
  • 获取 android 回调“外部”变量的值

    有一个字符串message作为接口方法中的参数 public class Home extends AppCompatActivity private String globalStringResult null Override prot
  • 如何检查 Firebase 中 autoID 子项下保存的值?

    点击删除按钮后 我正在尝试从 Firebase 数据库中删除特定的子项 我的问题是我无法参考特定的childByAutoId在我的数据库中 因此我的应用程序不知道要删除哪个子项 Firebase 数据库 数据服务文件 import Foun
  • python:局部变量在赋值之前被引用[重复]

    这个问题在这里已经有答案了 这是我的代码 x 1 def poi y insert line here def main print poi 1 if name main main 如果放置以下 4 行 一次一行 代替 insert lin
  • 即使从 ca 目录删除 CA 后,starttls 仍成功

    我无法验证我的软件的正确行为 以下是我为验证操作是否正确而执行的步骤 我有使用 openldap 库并对 ldap 服务器执行启动 tls 的示例代码 我第一次设置了 ca cert 目录和 tlx 上下文的全局选项 之后 我对服务器执行了
  • 致命 Python 错误:PyEval_RestoreThread:NULL tstate

    有人知道这个错误是什么意思吗 Fatal Python error PyEval RestoreThread NULL tstate 在我的应用程序中 当我销毁主窗口时 会打印此错误 我正在使用多个线程同时运行不同的作业 我真的不知道这是什
  • 为什么使用简单最近最少使用缓存机制?

    I am using JProfiler to inspect a Java microservice while I simulate concurrent users with JMeter With JProfiler I can s