`
aiwori
  • 浏览: 8710 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
文章分类
社区版块
存档分类
最新评论

java学习

阅读更多

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隐式重入;

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics