规格
追踪 HashMap.put() 的完整链路:计算 hashCode(青色)、扰动函数 h^(h>>>16)(紫色闪光)、桶索引计算 (n-1)&hash(黄色)、链表尾插(蓝色),以及 8 个节点触发树化,链表转换为红黑树。
相关动画
通过四条可滑动指针(position、limit、capacity、mark)可视化 NIO ByteBuffer 状态机。动态演示 allocate、write、flip、get、clear、compact 操作——每步操作都会改变指针位置和缓冲区颜色状态。
展示 ConcurrentHashMap 如何进行无锁协助扩容。旧数组满载时,每个槽位被标记为 ForwardingNode(红色)。多个线程各自认领不同的 stride 段,通过 CAS 并发迁移节点到两倍大小的新数组,直到全部槽位完成迁移,新数组正式上线。
以分屏形式展示 DirectByteBuffer 的完整生命周期。左侧为 JVM 堆(橙色),右侧为堆外内存(深蓝)。allocateDirect() 在堆中建立引用并桥接到 Native Memory。当引用失去强引用时,幽灵般的 Cleaner(PhantomReference)出现并回收堆外内存,整个过程无需 GC 介入。