01 Mind Map
02 Question&Answer
Q1: 什么是HotSpot VM?
A:热点虚拟机,当前主流,最后由Oracle公司收购。
Q2:Java内存结构是怎样的(图片) ?
A:
class字节码文件 ->
类加载器 ->
本地方法栈 ->
Java虚拟机栈 ->
Java 堆(class对象) ->
方法区 ->
执行引擎 ->
垃圾回收器 ->
寄存器
Q3: Java 堆里面分为几个区域,分别为什么?
A:新生代(Eden、From、To)、老年代。
Q4: Java虚拟机栈里面包含什么?
A:对象引用(地址指针)、8种基本类型、方法出口等。
Q5: 本地虚拟机栈与Java虚拟机栈区别是什么?
A:执行方法考虑。
Q6: 方法区存放的是什么?
A:已被虚拟机加载的类信息,如常量、静态变量、即时编译后的代码数据等。
Q7: 什么是直接内存,与堆有什么关系?
A:堆外内存,堆总DirectByteBuffer作为这块内存的引用。
Q8: 什么是程序计数器,有什么特点?
A:线程的信号指示器,唯一没有定义OutOfMemoryError。
Q9: 什么是执行引擎,作用是什么?
A:负责执行Java字节码,编译成机器码才能执行。
Q10: System.gc()与finalize方法,调用后的效果以及什么时候被调用?
Q11: Java堆中的划分,分别名字为什么?各占比例多少?
A:(8:1:1)1->2。
Q12: 如何判断对象是否存活,原理是什么?
A:两种方法,第一种舍弃,第二种GCRoots。
Q13: 垃圾回收机制里用到的算法有哪些,分别用在哪个区域时间,举例子?
A:标志清除算法、复制算法、分代算法、标志压缩算法等。
Q14: GC类型有哪几种,什么时候触?发效率如何?
A:两种,从堆区域考虑。
Q15: JVM参数配置有哪些
A:垃圾收集器、堆初始值、堆最大值、新生代比例、新生代与老年代比例等。
Q16: tomcat调优建议,至少4条?
A:从垃圾收集器、堆设置、老年代比例等多方面考虑。
Q17: 垃圾收集器有哪些?
A:串行收集器、并行收集器、GMS、G1等。
Q18: 内存溢出与内存泄漏产生的原因?
A:溢出?泄漏?名字即可看出。
Q19: 字节码技术的优势及应用场景?
A:可以动态修改java字节码。
Q20: 常见的字节码操作库有那些?
Q21: 类加载器的流程是怎样的?
Q22: 热部署与热加载的区别,什么情况下使用?