垃圾收集
2019-03-19 12:09:23
33
举报
垃圾收集器的详细内容,包括内存分配,垃圾回收等的详细内容
内存空间分布
1.8之前
运行时数据区
程序计数器
虚拟机栈
本地方法栈
堆
1.8之后
运行时数据区
栈
虚拟机栈
特点
异常
StackOverFlowError
OutOfMemoryError
本地方法栈
直接内存
对象分配
对象分配在哪里
栈上分配
为什么要进行栈上分配?
谁可以在栈上分配?
怎么分配
老年代分配
如何分配
虚拟机如何创建对象
何时会创建对象?
内存分配
怎么分配
并发分配同一块空间怎么办?
CAS失败重试
TLAB
初始化
垃圾回收
哪里需要回收?
何时回收?
新生代空间不足
老年代空间不足
System.gc()
如何回收?
怎么回收?
收集器
新生代收集器
Parallel Scavenge收集器
怎么工作?
使用场景
老年代收集器
serial old 收集器
特点
怎么工作?
使用场景
parallel old收集器
特点
怎么工作?
使用场景
CMS 收集器
特点
怎么工作?
缺点
浮动垃圾
concurrent mode failure
空间碎片
垃圾收集算法
标记-整理算法
为什么需要标记-整理
工作流程
缺点
手动回收
System.gc()
怎么打印gc日志?
手动gc和jvm GC差异?
GC分类
minor gc
full gc /major gc