概述
Java的虚拟机的面试内容主要包括三部分:GC、类加载机制、内存。
关联文章:
- 《JVM(一) — Class 文件结构》
- 《JVM(二) — 字节码指令》
- 《JVM(三) — Java虚拟机运行时内存结构》
- 《JVM(四) — 垃圾回收机制》
- 《JVM(五) — 类加载机制》
- 《JVM(六) — JVM面试问题》
- 《JVM — 字节码文件分析》
GC
- 什么时候一个对象会被GC?
- 为什么要在这种时候对象才会被GC?
- GC策略都有哪些分类?
- 这些策略分别都有什么优劣势?都适用于什么场景?
- 给你举个实际的场景,让你选择一个GC策略?
- 你如果选出来了,继续问你,为什么要选择这个策略?
类加载机制
- Java的类加载器都有哪些?
- 每个类加载器都加载哪些类?
- 这些类加载之间的父子关系是怎样的?
- 什么是双亲委派模型?
- 为什么Java的类加载器要使用双亲委派模型?
- 如何自定义自己的类加载器,自己的类加载器和Java自带的类加载器关系如何处理?
内存
- JVM内存分为哪几部分,这些部分分别都存储哪些数据?
- 一个对象从创建到销毁都是怎么在这些部分里存活和转移的?
- 内存的哪些部分会参与GC的回收?
- Java的内存模型是怎么设计的?
- Java的内存模型为什么要这么设计?
- 结合内存模型的设计谈谈volatile关键字的作用?