前言
本章内容来自B站黑马程序员java大厂面试题
博主学习笔记,如果有不对的地方,海涵。
题目上的【*】代表出现频率
如果这篇文章对你有帮助,可以点点关注,点点赞,谢谢你!
1. JVM组成
1.1什么是程序计数器?【****】
1.2 你能给我详细的介绍Java堆吗?【****】
年轻代被划分为三部分,Eden区和两个大小严格相同的Survivor区,根据JVM的策略,在经过几次垃圾收集后,任然存活于Survivor的对象将被移动到老年代区间。
老年代主要保存生命周期长的对象,一般是一些老的对象
1.3 什么是虚拟机栈【****】
深入问题
总结
1.4 能不能解释一下方法区?【***】
常量池
常量池是 *.class 文件中的,当该类被加载,它的常量池信息就会放入运行时常量池,并把里面的符号地址变为真实地址
1.5 你听过直接内存吗?【***】
2. 类加载器
2.1什么是类加载器,类加载器有哪些【***】
进阶问题:
什么是双亲委派模型?【****】
JVM为什么采用双亲委派机制?
2.2 说一下类装载的执行过程?【***】
3. 垃圾回收
3.1 对象什么时候可以被垃圾器回收【****】
引用计数法
循环引用会失效:
可达性分析算法
3.2 JVM 垃圾回收算法有哪些?【****】
标记清除算法
标记整理算法
复制算法
总结
3.3 说一下JVM中的分代回收【****】
3.4 说一下JVM有哪些垃圾回收器?【****】
串行垃圾搜集器
并行垃圾收集器
CMS(并发)垃圾收集器
G1:详细聊一下G1垃圾回收器【****】
新生代回收
年轻代垃圾回收+并发标记
混合垃圾回收
多次执行