一句话java

  • JVM
  1. java虚拟机:程序计数器,虚拟机栈(栈针),本地方法栈,堆(对象分配),运行时常量池。
  2. 类加载:(字节码)验证-准备-解析-初始化-使用-卸载;类和类加载器唯一确定类;类加载的双亲委派-委派父类加载的的层级加载模型。
  3. 对象:检查-分配内存-内存初始化-设置-对象初始化;分配:指针碰撞和空闲列表;定位:句柄和直接指针(java使用);存活:引用计数器和可达性分析(java使用);引用:强引用;软引用(OOM);弱引用(GC)虚引用。
  4. 垃圾回收:算法:标记清除,复制算法,标记整理算法,分代收集算法G1,ZGC;回收器:并行和串行;CMS老年代标记清除算法(产生碎片),ParNew 新生代复制算法。老年代GC其他都为标记整理算法。
  • JMM
  1. 内存模型:对象,本地内存,主内存的共享内存模型。
  2. as-if-serial:串行处理结果的正确性;happens-before:一个操作对另外一个操作的可见性。
  3. 重排:内存屏障:loadload,loadstore,storestore,storeload(全功能),临界区(加锁)。
  4. volatile的内存语义:写时本地内存刷新至主内存,内存屏障storestore,storeload,使用CPU的lock指令;读时本地内存失效从主内存读取,loadload,loadstore。
  5. 锁的内存语义:释放锁时本地内存刷新至主内存,获取锁时本地内存失效从主内存获取数据,synchronizeds关键字CPU指令monitortext和monitorexit。
  6. final的内存语义:final域写入和对象引用使用不能重排,读final域和读对象引用不能重排。
  7. 锁的四种状态:无锁,偏向锁,轻量级锁(CAS),重量级锁;乐观锁和悲观锁。
  • 池化技术:连接池;线程池
  1. 核心参数:核心数,最大数,核心存活时间,阻塞队列,工厂类,饱和策略(抛异常,当前线程,FIFO,丢弃)。
  • AQS和锁
  1. AQS是通过先入先出的等待队列实现阻塞锁和同步器的框架;该框架volatile int state变量来保存锁的状态;通过模板方tryAcquire(), tryRelease(),tryAcquireShared(),tryReleaseShared()实现独占或共享锁及同步器
  2. 公平锁和非公平锁:每个线程抢占锁的顺序为先后调用lock方法的顺序依次获取锁为公平锁,反之为非公平锁。
  3. 锁:lock范式,可重入锁,读写锁,信号量,回环栅栏,门闩。
  • CAS和线程安全类
  1. CAS(Compare And Swap)java虚拟机调用处理器CAS指令保证这是一个原子操作。
  2. ABA问题:版本戳,CAS改进:longAdder分段迁移CAS。
  3. ConcurrentHashMap:用table+链表+红黑树的形式存储数据。当key值相等的元素形成的链表中元素个数超过8个的时候链表转红黑树, 当key值相等的元素形成的链表中元素个数低于6个的时候红黑树转链表;Map的默认大小是16,每次扩容翻倍,负载因子为0.75(数组超过0.75的负载之后进行扩容);ConcurrentHashMap主要利用CAS方法保证了线程的安全性。
  4. Collections.synchronizedList(new ArrayList<>());Collections.synchronizedSet(new TreeSet<>());
  • 流式编程
  1. 并行流:基于forkjoin分而治之和工作觅取框架实现。
  • 其他
  1. 深拷贝和浅拷贝:只拷贝基本类型;拷贝基本类型和引用类型。
  2. yield (让出),await(等待),notify(唤醒),sleep(暂停),join(插入)
  3. 进程是系统分配资源的最小单位;线程是CPU调度的最小单位;协程属于线程,由用户调度。
  4. 死锁:两个及以上进程因资源竞争或彼此通信而造成的阻塞现象;简单死锁:执行顺序;动态死锁:内在排序;活锁(相互谦让)随机休眠。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值