Java面试被问到GC相关问题如何回答?
前言
众所周知,Java在运行时将内存划分为五个主要部分:程序计数器、虚拟机栈、本地方法栈、堆以及方法区。值得注意的是,程序计数器、虚拟机栈和本地方法栈这三个区域的内存管理相对简单,它们的生命周期与线程同步,即随线程的创建而分配,随线程的结束而释放,因此这部分内存并不涉及垃圾回收。我们真正需要关注的是堆和方法区这两部分的内存垃圾收集问题。在这个过程中,垃圾回收(GC)技术便扮演了至关重要的角色。
对于垃圾回收概念,它一出现常常伴随着一连串的问题:
-
GC具体做了什么?
-
哪些内存需要回收?
-
什么时候回收?
-
怎么回收?
-
垃圾回收算法&垃圾回收器有哪些?
-
…
如果你是一个新手,这些问题扑面而来的时候你肯定会一脸懵逼,不知道该怎么办。本着遇到问题就要解决问题的原则,今天小编为大家带来了一份Github爆火的GC面试小册,虽然它的体系结构与其他“GC书”一样,大致分为算法篇与实现篇两部分。但细节之处却是与大众不同,大家看了就知道,差距不止一点点。
在算法篇中,详细解释GC算法_G1GC 的原理。在实现篇中,结合实用JVM,聚焦了算法篇中没有详细讲解的实现部分。需要的小伙伴点击文末小卡片即可`
Java学习包传送门
不多BB,来看主要内容
算法篇
目录一览
内容一览
- G1GC堆结构
- 并发标记
- GC预测转移时间
- G1GC新生代区域
- GC执行的时机
实战篇
目录一览
内容一览
- 准备工作
- 对象管理功能
- G1GC堆结构
- 内存分配流程
- 线程生命周期
- GC线程并行执行的流程
- 并发GC安全点
- HotSpotVM的执行流程
- JT编译器的写屏障
最后
如果对上边这份GC小册感兴趣,只需要点击文末小卡片即可`
Java学习包传送门