- 博客(5)
- 收藏
- 关注
原创 深入刨析volatile及内存屏障
指令重排序的意义:JVM能根据处理器特性(CPU多级缓存、多核处理器等)适当的对机器指令进行重排序,使机器指令能更符合CPU的执行特性,最大限度的发挥机器性能。java语言规范规定JVM线程内部维持顺序化语义。即只要程序的最终结果与它顺序化情况的结果相等,那么指令的执行顺序可以与代码顺序不一致,此过程叫指令的重排序。不同硬件实现内存屏障的方式不同,Java内存模型屏蔽了这种底层硬件平台的差异,由JVM来为不同的平台生成相应的机器码。在编译器与CPU处理器中都能执行指令重排优化操作。
2022-11-02 22:53:31 1444 1
原创 深入理解CAS原子操作
CAS是Compare And Swap的缩写,比较与交换,通常指的是这样一种原子操作:针对一个变量,首先比较它的内存值和某个期望值是否相同,如果相同,就给它赋一个新值。}以上伪代码描述了一个由比较和赋值两阶段组成的符合操作。CAS可以看作是他们合并后的整体---一个不可分割的原子操作,并且其原子性是直接在硬件层面得到保障的。CAS可以看作是乐观锁(对比数据库的悲观、乐观锁)的一种实现方式,Java原子类中的递增操作就是通过CAS自旋实现的。
2022-11-02 00:11:14 1345 1
原创 为Java开疆拓土的ZGC深度剖析
ZGC(The Z Garbage Collector)是JDK11中推出的一款追求极致低延迟的垃圾收集器,设计目标包括如下:1、停顿时间不超过10ms,JDK16已经达到不超过1ms。2、停顿时间不会随着堆的大小,或者活跃对象的大小而增加。3、支持8MB~4TB级别的堆,JDK15后已经可以支持16TB。这么去想,如果使用ZGC来做JAVA项目,像游戏系统、对STW敏感的证券系统都可以用Java来做(目前都是C或者C++的市场),所以ZGC的出现就是为了抢占其他语言的市场。
2022-10-12 00:05:31 545 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人