垃圾回收机制
分代收集理论
复制算法(Copying)
实现简单、运行高效
内存复制、没有内存碎片
利用率只有一半
标记-清除算法(Mark-Sweep)
执行效率不稳定
内存碎片导致提前GC
标记-整理算法(Mark-Compact)
对象移动
引用更新
用户线程暂停
没有内存碎片
JVM中常见的垃圾收集器
单线程垃圾收集器
多线程并行垃圾收集器
多线程并发垃圾收集器
Serial/Serial Old
ParNew
Parallel Scavenge(ParallerGC)/Parallel Old
CMS垃圾回收器工作示意图
Stop The World现象
G1垃圾回收器
面试题
简述JVM内存结构
什么情况下内存栈溢出?
描述new一个对象的流程
Java对象会不会分配在栈中?
如果判断一个对象是否被回收,有哪些算法,实际虚拟机使用得最多的是什么?
GC收集算法有哪些?他们的特点是什么?
JVM中一次完整的GC流程是怎样的?
对象如何晋级到老年代?
Java中的几种引用关系,他们的区别是什么?
final、finally、finalize的区别?
String s = new String(“xxx”);创建了几个对象?
对象的创建
虚拟机中对象的创建过程
检查加载
分配内存
内存空间初始化
设置
对象初始化
判断对象的存活
引用计数算法
可达性分析
Finalize方法
四大引用
强引用
软引用 SoftReference
弱引用 WeakReference
虚引用 PhantomReference