V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ljzxloaf  ›  全部回复第 6 页 / 共 12 页
回复总数  234
1  2  3  4  5  6  7  8  9  10 ... 12  
2021-05-13 19:59:09 +08:00
回复了 fatyoung 创建的主题 程序员 Java 内存模型中的工作内存跟主内存的物理概念是什么
@ljzxloaf #12 推荐阅读一下《计算机体系结构:量化研究方法》第五章,虽然翻译比较古老,但是应该也能理解
2021-05-13 19:54:35 +08:00
回复了 fatyoung 创建的主题 程序员 Java 内存模型中的工作内存跟主内存的物理概念是什么
2021-05-13 19:53:48 +08:00
回复了 fatyoung 创建的主题 程序员 Java 内存模型中的工作内存跟主内存的物理概念是什么
主内存和工作内存这概念就是误人子弟,我找了半天发现只有一个出处,就是周志明的那本 jvm 书。搜索“jmm work memory”或者“jmm main memory”都没搜到有用的结果。有时候这些过时的概念真的让人费解,比如分布式领域的“CAP”理论就是典型的例子。

了解 CPU 的人都知道,CPU 有个 l1 缓存,l1 缓存是每个核的本地缓存,那么就会出现一个对共享变量访问顺序的问题(或者叫一致性问题)。打个比方,CPU0 先修改了共享变量 X,CPU1 应该什么时候感知到这个修改,如果需要立即感知的话,CPU0 在修改的时候就需要把 CPU1 的本地 X 缓存( l1 )先清理掉,但是这样势必会导致 CPU 整体执行效率的下降,而如果不需要保证这点,那 CPU 效率就会提升很多。有人会觉得这种顺序肯定是要保证的吧,其实不一定的,比如在分布式存储上很多都是保证不了这一点,不还是有很多应用吗?单机和分布式是类似的,而多 CPU 已经是分布式架构了。
如果真的要强行类比的话,主内存好比是 PC 存储结构中的内存( L2 、L3 缓存也算),工作内存就好比是 L1 缓存(一些寄存器也算)。

为啥说是强行类比呢?因为有更好的类比方式。JVM 规范之于 java 应用来说就如同 ISA 之于 os 上的应用,不同的 ISA 对于多核环境下对共享内存的访问一致性有不同的规则,有的是完全不管顺序,有的可能会保证全局顺序,更多的是介于二者之间的(详情请看论文 1 section 7 );而 JVM 是跨平台的,不可能跟着 ISA 的规则走,那样的话同样的代码运行在不同的平台结果就会不一样,所以得制定一个统一的规则。目前描述这种偏序关系广泛采用的方式是 happens-before,java 也是采用的这种(好像一开始规定了一些乱七八糟的规范,但是我没找到周志明书上写的那些内容出处,如果有找到出处的同学麻烦 @我一下)。



CPU 缓存的概念性理解
http://www.puppetmastertrading.com/images/hwViewForSwHackers.pdf
Intel 乱序执行的规范
http://www.cs.cmu.edu/~410-f10/doc/Intel_Reordering_318147.pdf
Java 同步规范
https://docs.oracle.com/javase/specs/jls/se8/html/jls-17.html
2021-04-26 16:16:19 +08:00
回复了 nexmoe 创建的主题 生活 多年关于失眠的经验
听英语听力
2021-04-02 16:09:03 +08:00
回复了 clecho 创建的主题 问与答 喜马拉雅有哪些音频节目推荐吗?
捕蛇者说
2021-04-02 16:08:12 +08:00
回复了 zhoudaiyu 创建的主题 生活 今年年底就 29 岁了,现在连女朋友都没有,非常焦虑。
@YIFZ #107 说出你的故事
2021-04-02 16:05:58 +08:00
回复了 zhoudaiyu 创建的主题 生活 今年年底就 29 岁了,现在连女朋友都没有,非常焦虑。
2021-04-01 09:43:52 +08:00
回复了 zw1one 创建的主题 生活 女朋友想在一线买房,我想在老家省会买房,如何处理?
2021-03-29 11:35:43 +08:00
回复了 liqiansama 创建的主题 成都 成都互联网行业,,,哎
现在热帖都这么敷衍了?
2021-03-27 21:39:05 +08:00
回复了 145431 创建的主题 生活 结束北漂,搬家东西太多,长途物流哪家强?
闲鱼
2021-03-19 10:20:46 +08:00
回复了 LeroyMooney 创建的主题 程序员 新来的外包同事,这代码,我???
pojo 不都这样吗?如果不是 pojo,他之前可能是写 c/c++的
2021-03-19 01:24:25 +08:00
回复了 hpencilb 创建的主题 程序员 GitHub 手工耿
个人做的东西没有多大用是正常的,否则你让那些专门搞平台搞工具搞基础架构的吃啥,在鼓捣的过程中自我获得了提升才是最重要的
某些人对中药成见是不是太深了
2021-03-14 19:56:31 +08:00
回复了 fiypig 创建的主题 随想 老铁们,我相亲回来了
刚谈吹了一个相亲对象,不过时间不长,不到一个月,还没付出太多感情。同意 48l 的看法,相亲就要快进快出,多多试错,一个月足够看出一个人对你什么感觉了。千万不要做舔狗 https://i.v2ex.co/92IL9xOI.jpeg
2021-02-24 15:16:05 +08:00
回复了 Joker123456789 创建的主题 Java 从 应对高并发的角度出发, NIO 有必要和多线程一起用吗?
别让 cpu 空闲就行,一般线程数=逻辑核心数(超线程数);但是现在一般不可能让某个服务单独使用一台物理服务器,所以要根据不同的虚拟技术去获取正确的核心数。比如 jdk 在 1.8u131 之前,在 docker 环境下从 Runtime 获取核心数获取到的都是物理机的核心数,如果根据这个值去设置,会增加不必要的线程切换,在并发非常高的情况下会严重影响性能
1  2  3  4  5  6  7  8  9  10 ... 12  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1357 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 17:50 · PVG 01:50 · LAX 09:50 · JFK 12:50
Developed with CodeLauncher
♥ Do have faith in what you're doing.