1、介绍下 Java 内存区域(运⾏时数据区)
(1)线程私有:程序计数器、虚拟机栈、本地方法栈
(2)线程共享:堆、方法区(元空间)、直接内存

2、说⼀下Java对象的创建过程
(1)类加载检查
(2)分配内存
(3)初始化零值
(4)设置对象头
(5)执行init方法
3、对象的访问定位有哪两种⽅式?
(1)句柄
(2)直接指针
4、简单聊聊 JVM 内存分配与回收

5、说⼀下堆内存中对象的分配的基本策略

(1)对象优先在 eden 区分配
(2)⼤对象直接进⼊⽼年代
(3)⻓期存活的对象将进⼊⽼年代
(4)动态对象年龄判定
(5)主要进⾏ gc 的区域
6、如何判断对象是否死亡?(两种⽅法)
(1)引用计数法
(2)可达性分析算法
7、简单的介绍⼀下强引⽤,软引⽤,弱引⽤,虚引⽤
8、如何判断⼀个常量是废弃常量?
9、如何判断⼀个类是⽆⽤的类?
(1)该类所有的实例都已经被回收,也就是 Java 堆中不存在该类的任何实例。
(2)加载该类的 ClassLoader 已经被回收。
(3)该类对应的 java.lang.Class 对象没有在任何地⽅被引⽤,⽆法在任何地⽅通过反射访问该类 的⽅法。
10、垃圾收集有哪些算法,各⾃的特点?
(1)标记-清除算法
(2)复制算法
(3)标记-整理算法
(4)分代收集算法
11、HotSpot 为什么要分为新⽣代和⽼年代?
提升GC效率
12、常⻅的垃圾回收器有那些?

浙公网安备 33010602011771号