自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 JAVA对象内存布局

padding对齐是为了对象大小为8的倍数,避免内存的伪共享。

2023-02-16 10:15:17 109

原创 CAS自旋锁

此时内存中的m=4 ,程序读取m后做m++操作,此时m变成了5。CAS比较和交换,此时比较期望的旧数据与内存的数据是否相等,相等,交换内存中的数据,将内存中的数据设置为5,如果此时不相等,说明在我执行m++的过程中,内存中的数据被修改过,重新拉取内存中的数据,重复执行CAS自旋。我们看上图的右半部分,在我左边的程序执行m++的过程中,我右边的程序同样在操作内存中的m,首先将m改成3,然后将m改成5,最后再将m改成4,右边操作做完了之后,左边的程序此时CAS比较期望的旧数据与内存中的数据,m都是等于4。

2023-02-09 15:44:01 160

原创 总线锁与缓存锁

Shared:共享,当前缓存行与主存数据一致,该数据在其他CPU中也存在,不能随意修改,需要先广播通知其他CPU,将其他CPU中的数据标记为Invalid失效状态,才能修改。Exclusive:独享,当前缓存行与主存数据一致,该数据只存在一个CPU中,可以自由读写,而不需要通知其他CPU。Modified:修改,当前缓存行的数据已被修改,但是没有被写回到主存中。Invalid:失效,当前缓存行数据已失效。

2023-02-09 15:08:54 729

原创 JVM 三色标记

当黑色A指向白色D的时候,并且灰色B指向白色D的引用消失的时候,就会存在漏标的现象。因为此时A是黑色的,不会再扫描了,扫描灰色B的时候找不到白色D,导致D对象扫描不到,从而产生漏标。Rset表存储其他Region区域对象到本对象的引用信息,是的垃圾收集器不需要扫描整个堆内存就能找到垃圾,只需要扫描Rset表即可。当A引用指向其他对象时,将A重新标记为灰色,下次扫描时,重新扫描A的成员遍历。当B-> D的引用消失时,将D推送到GC堆栈,保证还能被GC扫描到。灰色:自身被标记,但是成员变量还没完全被标记。

2023-02-02 16:24:11 218 1

原创 JVM 垃圾收集器

Serival:年轻代,单线程GC清理,存在STW问题(stop the world)其他线程等待GC的清理。4、并发清理(Concurrent Sweep):执行业务线程同时清理标记的GC,这个过程会产生垃圾--浮动垃圾。1、初始标记(InitialMark):单线程标记,标记GC Root直接相关联的对象,存在STW。3、重新标记(Remark):步骤二会产生新的GC,Remark暂停业务线程,标记GC,存在STW。ServivalOld:老年代,单线程GC清理,存在STW问题,采用标记压缩算法。

2023-02-02 15:24:55 113

原创 JVM -- 垃圾回收机制

垃圾回收

2023-02-02 11:53:31 116

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除