TechLog
文章动画项目关于
TechLog
© 2026 TechLog蜀ICP备18025341号-1
内部原理

ConcurrentHashMap 协助扩容

规格

时长
7.00s
帧率
30
总帧数
210
复杂度
复杂

展示 ConcurrentHashMap 如何进行无锁协助扩容。旧数组满载时,每个槽位被标记为 ForwardingNode(红色)。多个线程各自认领不同的 stride 段,通过 CAS 并发迁移节点到两倍大小的新数组,直到全部槽位完成迁移,新数组正式上线。

JavaCollectionsConcurrentHashMapConcurrencyResize

相关动画

ByteBuffer 四指针联动状态机
内部原理

ByteBuffer 四指针联动状态机

通过四条可滑动指针(position、limit、capacity、mark)可视化 NIO ByteBuffer 状态机。动态演示 allocate、write、flip、get、clear、compact 操作——每步操作都会改变指针位置和缓冲区颜色状态。

JavaNIOByteBufferBufferIO
查看详情
DirectByteBuffer 堆外内存生命周期
内部原理

DirectByteBuffer 堆外内存生命周期

以分屏形式展示 DirectByteBuffer 的完整生命周期。左侧为 JVM 堆(橙色),右侧为堆外内存(深蓝)。allocateDirect() 在堆中建立引用并桥接到 Native Memory。当引用失去强引用时,幽灵般的 Cleaner(PhantomReference)出现并回收堆外内存,整个过程无需 GC 介入。

JavaNIODirectByteBufferOff-HeapCleanerPhantomReference
查看详情
HashMap put() — 从 hashCode 到桶定位
内部原理

HashMap put() — 从 hashCode 到桶定位

追踪 HashMap.put() 的完整链路:计算 hashCode(青色)、扰动函数 h^(h>>>16)(紫色闪光)、桶索引计算 (n-1)&hash(黄色)、链表尾插(蓝色),以及 8 个节点触发树化,链表转换为红黑树。

JavaCollectionsHashMapHashData Structure
查看详情