面试题2


volatile关键字

java虚拟机提供的轻量级的同步机制

  • 保证可见性
  • 不保证原子性
  • 禁止指令重排序

CAS是什么?CPU并发原语(原语执行必须是连续的)(CompareAndSwap)

比较当前工作内存中的值和主内存中的值,如果相同则执行规定操作,否则继续比较直到主内存和工作内存中的值一致
功能是判断内存某个位置的值是否为预期值,如果是则更改为最新值。原子操作
CAS的执行依赖于Unsafe的方法
image
缺点:

  • 循环时间长开销大
  • 只能保证一个变量的共享操作
  • ABA问题

java锁

公平锁和非公平锁

公平锁:指多个线程按照申请锁的顺序来获取锁
非公平锁:指多个线程获取锁的顺序并不按照申请锁的顺序,在高并发的情形下,有可能会造成优先级反转和饥饿效应
非公平锁的优点在于吞吐量比公平锁大

可重入锁(递归锁)

线程可以进入任何一个他已经拥有的锁所同步着的代码块
防止死锁

自旋锁

尝试获取锁的线程不会立即阻塞,二是采用循环的方式去获取锁。 好处是减少上下文线程切换的消耗, 缺点是循环会消耗CPU

独占锁(写锁)/共享锁(读锁)/互斥锁

ReentreenkReadWriteLock()

CountDownLatch/CyclicBarrier/Semaphore

阻塞队列

image
image

synchronized和Lock有什么区别?

image

线程池

  • 线程池的使用及优势
    image
  • 线程池三个常用方式
    • Executor.newFixedThreadPool()//执行长期的任务,性能好很多
      image
    • Executor.newSingleThreadPool()//一个任务一个任务执行的场景
      image
    • Executor.newCachedThreadPool()//执行很多短期异步的小程序和负载较轻的服务器
      image
  • 线程池的七大参数
    image
    image
  • 线程池的工作流程
    image
  • 线程池配置合理线程数
    • CPU密集型:CPU核数+1
    • IO密集型:CPU核数2
      CPU核数
      1-阻塞系数
  • 死锁编码及定位分析
    jps命令定位进程号
    jstack找到死锁查看

GC Roots

java中可以作为GC Roots的对象
image

jvm调优和参数配置

  • XX参数
    • Boolean类型
      +开启;-关闭
    • KV设置类型
      jinfo -flag 查看当前运行程序的配置
    • Xms等价于-XX:InitialHeapSize初始大小内存,默认为物理内存1/64
    • Xmx等价于-XX:MaxHeapSize最大分配内存,默认为物理内存1/4
    • Xss等价于-XX:ThreadStackSize设置单个线程栈大小,默认为512k~1024k
    • Xmn设置年轻代大小
    • -XX:+PrintGCDetails输出详细GC收集日志信息
      java -XX:+PrintFlagsInitial:查看jvm初始化参数
      java -XX:+PrintFlagsFinal:查看jvm修改更新后的参数(=代表没修改,:=代表修改了)
      java -XX:+PrintCommandLineFlags:查看默认垃圾回收器

强、软、弱、虚引用

  • 强引用:GC不会回收
  • 弱引用:内存够不回收,内存不够回收
  • 弱引用:都会回收
  • 虚引用:必须和引用队列联合使用,get()方法总为null

OOM

image

垃圾回收器

  • Serial(串行)启用时会暂停所有用户线程
  • Parallel(并行)多个垃圾回收期并行工作,用户线程也是暂停的
  • CMS(Concurrent Mark Sweep:并发标记清除)(并发)用户线程和垃圾收集器线程同时执行(可能交替执行)不需要停顿用户线程
    image
    优点:并发收集停顿低
    缺点:并发执行,对CPU压力大;采用的标记清除算法会产生大量碎片
  • G1
    特点:
    image
    原理:Region区域化垃圾收集器(避免全内存扫描)
    与CMS相比优势:

    • 不会产生内存碎片
    • 可以精确控制停顿
  • (ZGC)

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/276271.html

(0)
上一篇 2022年7月22日
下一篇 2022年7月22日

相关推荐

发表回复

登录后才能评论