1.内存划分
新生代(eden、survivor1,survivor2)98%的对象朝生夕死,在eden、surviror1分配,如果仍然存活会转移到s2,每一次MinorGC年龄加1,到达阈值后转移到老年代
老年代 分配大对象和长期存活对象;
永久代,-方法区;
CMS收集器,有停顿,标记-清除算法;
2.线程
volatile 原理:缓存一致性协议;
作用:保持多线程之间可见性;保证顺序性;适用单线程写多线程读;
java实现原子操作
循环 CAS(处理器CMPXCHG指令); 有ABA问题,采用版本号解决;
锁机制;
java对象头
hashcode,分代年龄;锁标志;
偏向锁,同一线程多次获取,判断对象头里面的偏向锁线程ID;
synchronized用的锁存在java对象头里面;
Lock
同步器 AQS 内置一个队列,将等待的线程作为结点加入同步队列;通过CAS设置同步状态;获取了同步状态就是获取了锁;
condition,同object的wait,notfiy方法;支持多个等待队列,
读写锁用一个二进制变量记录多个状态;
重入锁,同synchronized隐式重入;
飞祥 2025-03-31
飞祥 2025-03-31
飞祥 2025-03-31
飞祥 2025-03-31
冰432 2025-03-31
黄蜂 2025-03-30
藏家282 2025-03-30
星辰大海本海 2025-03-30
小小猪 2025-03-30
许老头 2025-03-30