当我在

java中阅读’虚假共享’机制时,我在java.util.concurrent.Exchanger.Slot中找到以下代码

/**

* A Slot is an AtomicReference with heuristic padding to lessen

* cache effects of this heavily CAS'ed location. While the

* padding adds noticeable space, all slots are created only on

* demand, and there will be more than one of them only when it

* would improve throughput more than enough to outweigh using

* extra space.

*/

private static final class Slot extends AtomicReference {

// Improve likelihood of isolation on <= 64 byte cache lines

long q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, qa, qb, qc, qd, qe;

}

这很奇怪.为什么长数是15(q0-qe),

所以我可以计算出对象的大小应该是:

15 * 8(长)8(父值的长值)16(64位jvm的对象头指针)= 144字节.

要么:

15 * 8(长)8(父的长值)8(32位jvm的对象头指针)= 136字节.

当我读到Disruptor’s implemention:时

public long p1, p2, p3, p4, p5, p6, p7; // cache line padding

private volatile long cursor = INITIAL_CURSOR_VALUE;

public long p8, p9, p10, p11, p12, p13, p14; // cache line padding

大小应为7 * 8 8 7 * 8 8(对象头操作大小为32位jvm)= 128 = 64 * 2.

由于大多数cpu的默认缓存行大小为64字节,因此discruptor的impl可以避免’False sharing’.

所以我的问题是在课堂上填充的数量

java.util.concurrent.Exchanger.Slot是对还是错?

java怎么缓存行填充_为什么java的Exchanger.Slot缓存行填充像这样?相关推荐

  1. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  2. java 取栈顶元素_《Java实战之内存模型》详解篇

    内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行 JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JVM的高效稳定运行 不同的JV ...

  3. java byte char io流_吃透Java IO:字节流、字符流、缓冲流

    前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...

  4. java使用缓冲区读取文件_在Java中使用Google的协议缓冲区

    java使用缓冲区读取文件 最近发布了 有效的Java第三版 ,我一直对确定此类Java开发书籍的更新感兴趣,该书籍的最新版本仅通过Java 6进行了介绍 . 在此版本中,显然存在与Java 7 , ...

  5. java 传绝对路径无效_【Java并发005】原理层面:volatile关键字全解析

    一.前言 在Java 5之前,volatile是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果. 在Java 5之后,volatile关键字才得以重获生机. volatile关键字虽 ...

  6. java中井号字符串_深入Java基础(二)——字符串

    这段时间在准备找一份java实习工作,所以来把基础知识整理归纳一下 文章结构: 1.equals和== 2.字符串的基本知识以及字符串的源码解读: 3.字符串的注意点以及使用推荐: 一.equals和 ...

  7. java课后习题七解析_《Java基础入门》_课后习题解析.doc

    <Java基础入门>_课后习题解析 <Java基础入门>课后习题 Java开发入门 一.填空题 1.Java的三大体系分别是_JavaSE_____._JavaEE_____. ...

  8. java课后习题及答案_《java基础入门》课后习题及答案.doc

    <java基础入门>课后习题及答案.doc <Java 基础入门>课后习题及答案博学谷--让 IT 教学更简单,让 IT 学习更有效<Java 基础入门> 课后习题 ...

  9. java代码杨辉三角_用java实现杨辉三角的示例代码

    之前有学弟问过我一道java的面试题,题目不算难.用java实现杨辉三角.我花了点时间整理了一下,发现挺有意思的,于是想写下来分享一下.在写代码之前,我们先理清下面两个问题. 什么是杨辉三角 杨辉三角 ...

最新文章

  1. 数据化管理在餐饮业中的应用
  2. python3安装pip3-Python3中安装pip3
  3. ASP.NET MVC5微信公众平台整合开发实战教程
  4. 算法竞赛入门经典(第二版) | 例题4-4 信息解码 (紫皮书牛啤!)(UVa213,Message Decoding)
  5. 马尔可夫链蒙特卡罗法(Markov Chain Monte Carlo,MCMC)
  6. css通配选择符用什么表示,css3选择符使用个人理解。
  7. VB用记录集填充表格函数
  8. centos 安装mysql-proxy_详解在Centos 5.2下安装最新Mysql Proxy LUA教程
  9. 在access中一列称为_ACCESS考试_笔试
  10. HTML学生网页设计作业成品~化妆品官方网站设计与实现(HTML+CSS+JS)共8个页面
  11. 彻底与流氓软件“2345好压全家桶”说再见【忠告:不要安装2345系列的任何东西--否则你会后悔的】
  12. 鸿蒙系统主题如何自定义,自定义流式布局
  13. Java项目如何优雅的对接口入参进行校验-看法外狂徒张三浏览18网站失败
  14. Android开发指南-二维图形
  15. python爬虫实战——猫眼电影案例
  16. 览器野史 UserAgent列传
  17. 缺陷管理工具bugfree快速安装配置
  18. 软件开发人员的作战手册 - 让程序员活的久一点
  19. 离线下载conda包并安装
  20. 前端通过代码实现F11全屏效果

热门文章

  1. python中复制、浅层拷贝、深层拷贝的区别
  2. 好程序员Web前端分享程序的三大结构(二)while循环
  3. STM32速度---网页讲解
  4. Java多线程相关的常用接口
  5. zabbix配置邮箱报警
  6. 【Coursera课程笔记】Web智能和大数据Week3_MapReduce
  7. 第二部分:浅析 Linux 初始化 init 系统:upstart
  8. rocksdb和leveldb的bloom filter比较
  9. 51单片机(STC89C52RC) lcd1602实验小结
  10. CentOS 5.3 已经发布!