java怎么缓存行填充_为什么java的Exchanger.Slot缓存行填充像这样?
当我在
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缓存行填充像这样?相关推荐
- 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目
王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...
- java 取栈顶元素_《Java实战之内存模型》详解篇
内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行 JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JVM的高效稳定运行 不同的JV ...
- java byte char io流_吃透Java IO:字节流、字符流、缓冲流
前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...
- java使用缓冲区读取文件_在Java中使用Google的协议缓冲区
java使用缓冲区读取文件 最近发布了 有效的Java第三版 ,我一直对确定此类Java开发书籍的更新感兴趣,该书籍的最新版本仅通过Java 6进行了介绍 . 在此版本中,显然存在与Java 7 , ...
- java 传绝对路径无效_【Java并发005】原理层面:volatile关键字全解析
一.前言 在Java 5之前,volatile是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果. 在Java 5之后,volatile关键字才得以重获生机. volatile关键字虽 ...
- java中井号字符串_深入Java基础(二)——字符串
这段时间在准备找一份java实习工作,所以来把基础知识整理归纳一下 文章结构: 1.equals和== 2.字符串的基本知识以及字符串的源码解读: 3.字符串的注意点以及使用推荐: 一.equals和 ...
- java课后习题七解析_《Java基础入门》_课后习题解析.doc
<Java基础入门>_课后习题解析 <Java基础入门>课后习题 Java开发入门 一.填空题 1.Java的三大体系分别是_JavaSE_____._JavaEE_____. ...
- java课后习题及答案_《java基础入门》课后习题及答案.doc
<java基础入门>课后习题及答案.doc <Java 基础入门>课后习题及答案博学谷--让 IT 教学更简单,让 IT 学习更有效<Java 基础入门> 课后习题 ...
- java代码杨辉三角_用java实现杨辉三角的示例代码
之前有学弟问过我一道java的面试题,题目不算难.用java实现杨辉三角.我花了点时间整理了一下,发现挺有意思的,于是想写下来分享一下.在写代码之前,我们先理清下面两个问题. 什么是杨辉三角 杨辉三角 ...
最新文章
- 数据化管理在餐饮业中的应用
- python3安装pip3-Python3中安装pip3
- ASP.NET MVC5微信公众平台整合开发实战教程
- 算法竞赛入门经典(第二版) | 例题4-4 信息解码 (紫皮书牛啤!)(UVa213,Message Decoding)
- 马尔可夫链蒙特卡罗法(Markov Chain Monte Carlo,MCMC)
- css通配选择符用什么表示,css3选择符使用个人理解。
- VB用记录集填充表格函数
- centos 安装mysql-proxy_详解在Centos 5.2下安装最新Mysql Proxy LUA教程
- 在access中一列称为_ACCESS考试_笔试
- HTML学生网页设计作业成品~化妆品官方网站设计与实现(HTML+CSS+JS)共8个页面
- 彻底与流氓软件“2345好压全家桶”说再见【忠告:不要安装2345系列的任何东西--否则你会后悔的】
- 鸿蒙系统主题如何自定义,自定义流式布局
- Java项目如何优雅的对接口入参进行校验-看法外狂徒张三浏览18网站失败
- Android开发指南-二维图形
- python爬虫实战——猫眼电影案例
- 览器野史 UserAgent列传
- 缺陷管理工具bugfree快速安装配置
- 软件开发人员的作战手册 - 让程序员活的久一点
- 离线下载conda包并安装
- 前端通过代码实现F11全屏效果