【对线面试官】垃圾回收机制 - 图1

【对线面试官】垃圾回收机制 - 图2

【对线面试官】垃圾回收机制 - 图3

【对线面试官】垃圾回收机制 - 图4

【对线面试官】垃圾回收机制 - 图5

【对线面试官】垃圾回收机制 - 图6

【对线面试官】垃圾回收机制 - 图7

【对线面试官】垃圾回收机制 - 图8

【对线面试官】垃圾回收机制 - 图9

【对线面试官】垃圾回收机制 - 图10

【对线面试官】垃圾回收机制 - 图11

【对线面试官】垃圾回收机制 - 图12

【对线面试官】垃圾回收机制 - 图13

【对线面试官】垃圾回收机制 - 图14

【对线面试官】垃圾回收机制 - 图15

【对线面试官】垃圾回收机制 - 图16

【对线面试官】垃圾回收机制 - 图17

【对线面试官】垃圾回收机制 - 图18

【对线面试官】垃圾回收机制 - 图19

【对线面试官】垃圾回收机制 - 图20

【对线面试官】垃圾回收机制 - 图21

【对线面试官】垃圾回收机制 - 图22

【对线面试官】垃圾回收机制 - 图23

【对线面试官】垃圾回收机制 - 图24

【对线面试官】垃圾回收机制 - 图25

【对线面试官】垃圾回收机制 - 图26

【对线面试官】垃圾回收机制 - 图27

【对线面试官】垃圾回收机制 - 图28

【对线面试官】垃圾回收机制 - 图29

【对线面试官】垃圾回收机制 - 图30

今日总结

什么是垃圾:只要对象不再被使用,那即是垃圾

如何判断为垃圾:可达性分析算法和引用计算算法,JVM使用的是可达性分析算法

什么是GC Roots:GC Roots是一组必须活跃的引用,跟GC Roots无关联的引用即是垃圾,可被回收

常见的垃圾回收算法:标记清除、标记复制、标记整理

为什么需要分代:大部分对象都死得早,只有少部分对象会存活很长时间。在堆内存上都会在物理或逻辑上进行分代,为了使「stop the word」持续的时间尽可能短以及提高并发式GC所能应付的内存分配速率。

Monor GC:当Eden区满了则触发,从GC Roots往下遍历,年轻代GC不关心老年代对象

什么是card table【卡表】:空间换时间(类似bitmap),能够避免扫描老年代的所有对应进而顺利进行Monor GC (案例:老年代对象持有年轻代对象引用)

堆内存占比:年轻代占堆内存1/3,老年代占堆内存2/3。Eden区占年轻代8/10,Survivor区占年轻代2/10(其中From 和To 各站1/10)

《对线面试官》系列目前已经连载29篇啦,这是一个讲人话面试系列