很多人没有合适的资料来回顾整个JVM知识体系,或者有的初学者可能不知道该从哪里开始复习。整理一些常见的JVM面试题,希望对大家有帮助。
JVM常见面试题
问:JM内存分哪几个区,每个区的作用是什么?
方法区
1.有时候也成为永久代,在该区内少发生垃级回收,但是开代表开发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载
2.方法区主费用来存储已被虚拟机加载的类的信息常量、静态变量和即时编译器编译后的代码等数锯
3.该区域是被线程共享的
4.方法区里有一个运行时常量池,用于存放静态编产生的字面量和符号引用,该常量池具有劢态性,也就是说常量开一定是编详时确定,运行时生成的常量也会存在这个常量池中
虚拟机栈
1.虚拟机栈也就是我们门平常所称的栈内存它为java方法表服务,每个方法在执行的时候都会创建1个栈帧,用于存储局部变量表、操作数钱、励态链接和方法出口等信息
2.虚拟机栈是线程私有的,它的生命周不线程相同
3.局部变量表里存储的是基本数据类型、retumAddress类型(指向一条字节码指令的地址)和对象引用,这个对象引用有可能是指向对时象起始地址的一个指针,也有可能是代表对象的句柄或者不对象相关联的位置,局部变量所需的内存空间在编译器间确定
4.操作数栈的作用主费用来存储运算结果以及运算的操作数,它川同于局部变量表通过索引来访问,而是压栈和出栈的方式
5.每个钱制都包含一个指向运行时常量池中该栈所属方法的引用,持有这个引用是为了支持方法调用过程中的动态连接功态链接就是将常量池中的符号引用在运行期转化为直接引用
JVM面试题:
JVM三大性能调优参数,JVM几个重要的参数
JVM调优
JVM内存管理,JVM的常见的垃圾收集器,G1垃圾收集器。GC调优,Minor GC,Full GC触发条件
Java内存模型
Java垃圾回收机制
描述JVM中一次Full gc过程
Java中都有哪些引用类型?
JVM中类加载机制,类加载过程,什么是双亲委派模型?,类加载器有哪些
如何判断是否有内存泄露?定位Full GC发生的原因,有哪些方式?