Future Code

个人博客

Jvm的内存布局和垃圾回收机制

内存布局 运行时数据区 程序计数器:用来控制代码运行行数。 Java 虚拟机栈:每个线程运行方法(A调用B)时,先把A方法放入到栈底,然后加载B方法,B方法放在A方法栈帧上,执行完B方法,弹出栈,随后A弹出栈。对应着一个栈帧出栈入栈的过程。 Java堆:是Java虚拟机管理的最大的内存区,是所有线程可共享的,对象实例在这里被分配内存,是垃圾收集器(GC)管理的主要区域。 方法区:保存......
Jvm

Hashtable和ConcurrentHashMap的线程安全问题

ConcurrentHashMap的线程安全问题 分段锁思想:每个线程获得的是每个存储单元的锁,每个存储单元下又有很多table,但是每个单元下的table共用同一把锁(Jdk1.8改进了)!当A线程操作0号单元时,获得的0号锁与2号存储单元无关,因此B线程可以操作2号存储单元,提高了代码效率。 在Jdk1.8中,采用更加细化分配锁的方式,性能更能提升。 123456789101......

HashMap原理

HashMap

HashMap底层原理 特点 快速存储 快速查找 时间复杂度O(1) 可伸缩 数据结构 HashMap 默认是16长度。 hash冲突:不同的对象算出来的数组下标相同。 存储结构为:数组、链表、红黑树(Jdk1.8),当解决hash冲突的单向列表长度到达8时,采用红黑树存储。 hash算法:任何对象都有hashcode,hash值=hashCode^(hashCode>>&......