当前位置: 首页 > news >正文

java伪共享问题

参考文章

https://blog.csdn.net/qq_45443475/article/details/131417090

产生原因

cpu 与内核数据交换的单位是 cache 行,多核 cpu 的高速缓存在对同一个变量进行修改时由于缓存一致性协议导致对应的缓存失效。

缓存行的大小 cpu 架构有关系,如果是 32 位,就是一次性处理 32 位数据,如果是 64 位,以此类推。目前处理器单次处理的数据是 2^n,目前市面上流行的是 64 位。

java 解决办法

通过对齐填充来解决这个问题,鉴于代码里会写很多跟功能无关的代码,所以 java 官方做了一个新功能。类似于 java 对象的对齐填充。

提出 JEP 142,作为 java 8 的一个增强功能,添加了 @sun.misc.Contended 和 jvm 参数 -XX:-RestrictContended 来使用此功能。其中 RestrictContended  默认值为 128,考虑到现有的处理器很少有这个的,可以手动修改为 -XX:ContendedPaddingWidth=64

https://openjdk.org/jeps/142

https://www.zhihu.com/question/54812014/answer/2329131348

https://www.zhihu.com/question/54812014/answer/141881795

针对参数 RestrictContended 在官方文档中没找到

https://www.zhihu.com/question/619373213

java 中 ConcurrentHashMap、ForkJoinPool、Thread、Striped64、Exchanger 都有应用。

http://www.lryc.cn/news/239225.html

相关文章:

  • 【Ubuntu】Ubuntu arm64 部署 Blazor Server 应用
  • Android加固为何重要?很多人不学
  • 【C/PTA】函数专项练习(一)
  • SUDS: Scalable Urban Dynamic Scenes
  • 蓝桥杯算法双周赛心得——迷宫逃脱(记忆化搜索)
  • nodejs+vue线上生活超市购物商城系统w2c42
  • 飞翔的小鸟
  • 浅析OKR的敏捷性
  • Linux+qt:创建动态库so,以及如何使用(详细步骤)
  • 如何将Docker的构建时间减少40%
  • 二分查找——经典题目合集
  • 在Jupyter Lab中使用多个环境,及魔法命令简介
  • 知虾数据软件:电商人必备知虾数据软件,轻松掌握市场趋势
  • c语言中*p1++和p1++有啥区别
  • 2
  • SELinux零知识学习二十二、SELinux策略语言之类型强制(7)
  • cadence layout lvs时出现error
  • python练习题(markdown中的60道题)
  • 【JavaSE】-4-单层循环结构
  • 12、人工智能、机器学习、深度学习的关系
  • webpack external 详解
  • 代码混淆不再愁:一篇掌握核心技巧
  • 华为云IoT与OpenHarmony深度协同,加速设备上鸿即上云【云驻共创】
  • 深入浅出 Linux 中的 ARM IOMMU SMMU I
  • 关于sqlModel 实现查询表单入参空值和模糊匹配一次性查询
  • 数据仓库架构之详解Kappa和Lambda
  • Banana Pi BPI-R3 Mini 开源路由器,也能拍出艺术美感
  • Django高级之-分页器
  • Vue-报错No “exports“ main defined in xx
  • EL-input添加双击或者单击事件