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