JVM笔记

on 2025-01-20
  1. 新生代如果只有一个Eden+一个Survivor可以吗?
    • 不行,如果只有一个Survivor也能实现复制算法但是会大大浪费内存
  2. Young GC和 Full GC的触发条件
    • Young GC:
      • eden区分配满
    • Full GC:
      • 老年代空间不足
      • 空间分配担保失败
      • 永久代空间不足
      • System.gc()
  3. STW
    • 执行垃圾回收算法时,所有java线程刮起,native代码可以执行但不能与jvm交互
  4. 垃圾回收算法
    1. 标记清除算法,内存碎片
    2. 标记复制算法,浪费空间
    3. 标记整理算法,慢
  5. jvm如何判断对象是否存活
    1. 可达性分析算法 (STW时间长、 内存消耗大)
    2. 应用计数法(循环引用会导致内存泄漏)
    3. 三色标记法(初始标记、并发标记、重新标记)
  6. GC Roots
    1. Class
    2. Thread
  7. 强引用、软引用、弱引用、虚引用
  8. 新生代标记复制算法,老年代标记整理
  9. CMS
    1. 老年代垃圾回收器,标记清除算法,并发标记并发清理
    2. 三色标记法,然后清除
    3. 高并发低停顿、抢占线程用户线程变慢、浮动垃圾、内存碎片