
JVM 知识有⼀一条清晰的主线,那就是类的⽣生命周期。
类加载相关的知识主要描述怎么将 class ⽂文件加载到内存,转换成特定的数据结构,⽣生成
Class 对象。加载完成后,就是对象实例例的内存分配和内存布局。紧接着是类中的⽅方法开
始执⾏行行,字节码执⾏行行的⽅方式,主内存和⼯工作内存之间的交互等等。最后就是对象的回收了,怎么回收?有哪些回收器器?都有什什么异同?
最后就是综合性质的知识,怎么通过 jvm 知识对系统进⾏行行调优等
1. Jvm 包括那⼏几⼤大部分
2. 什什么情况下会发⽣生栈内存溢出
3. JVM 的内存结构, Eden 和 Survivor ⽐比例例
4. JVM 内存为什什么要分成新⽣生代,⽼老老年年代,持久代。新⽣生代中为什什么要分为 Eden 和Survivor
5. JVM 中⼀一次完整的 GC 流程是怎样的,对象如何晋升到⽼老老年年代
6. Jvm 什什么情况下会回收⽅方法区
7. 你知道哪⼏几种垃圾收集器器,各⾃自的优缺点,包括原理理,流程,优缺点
8. 详细介绍下 CMS 垃圾回收器器
9. 垃圾回收算法的实现原理理
10. 分析问题时,⽤用过哪些 jdk ⾃自带的命令⾏行行
11. 简单介绍下 class ⽂文件的结构
12. 有通过 Java 字节码分析问题吗?怎么通过 jdk ⾃自带命令查看字节码?说⼏几个常⻅见的指令?
13. 当出现了了内存溢出,你怎么排错
14. JVM 内存模型的相关知识了了解多少,⽐比如重排序, 内存屏障 , happen-before,主内存,工作内存等
15. 简单说说你了了解的类加载器器,可以打破双亲委派么,怎么打破
16. 线程 有哪些实现⽅方式? Java 的线程是怎么实现的
17. 线程有哪些调度⽅方式? Java 是怎么调度的?设置优先级靠谱吗
18. 类加载包括哪些流程,每个流程都主要进⾏行行哪些⼯工作?
19. 运⾏行行时栈帧结构时怎么样的?
20. 虚拟机⽅方法调⽤用的是在什什么阶段确定调⽤用⽅方法的版本的? 重载 ( overload )和重写( override )分别是在什什么阶段实现的?
21. Java 是基于栈还是基于寄存器器的?两者有什什么区别?
22. 你们线上应⽤用的 JVM 参数有哪些
23. g1 和 cms 区别,吞吐量量优先和响应优先的垃圾收集器器选择
24. 怎么打出线程栈信息
25. 请解释如下 jvm 参数的含义:
26. -server -Xms512m -Xmx512m -Xss1024K
27. -XX:PermSize=256m -XX:MaxPermSize=512m
28. XX:MaxTenuringThreshold=20 XX:CMSInitiatingOccupancyFraction=80
29. XX:+UseCMSInitiatingOccupancyOnly。
30. 当 new ⼀一个对象时,会发⽣生哪些操作?
31. 同时起两个线程,⼀一个线程 OOM 挂了了,另⼀一个线程会受到影响吗?