下面要给大家带来的是和java虚拟机相关的面试题,那么常见的java虚拟机面试题都有哪些呢?下面就让我们一起来了解一下和它有关的最新的面试题吧!
面试题:
1、JVM垃圾回收机制,什么时候触发MinorGC等操作?
答案:在eden区内存不能够为一个新对象分配内存的时候,就会触发Minor GC。
Minor GC也被叫做是新生代GC,它主要指的就是发生在PSYoungGen的垃圾收集动作。
PSYoungGen主要包括了3个区域,分别是eden区、from(From Survivor)区和to(To Survivor)区。
2、虚拟机是怎样执行方法里面的字节码指令的?
答案:解释执行(通过解释器执行) 、编译执行(通过即时编译器产生本地代码)。
3、讲一下虚拟机和物理机的区别
答案:虚拟机:执行引擎是自己实现的,所以,能够自行制定指令集和执行引擎的结构体系,除此之外,还可以执行那些不被硬件直接支持的指令集格式;物理机:执行引擎是直接建立在处理器、硬件、指令集和操作系统层面的。
4、讲一下java虚拟机调用字节码指令有哪些?
答案:(1)invokestatic调用静态方法(2)invokespecial调用实例构造器方法、私有方法和父类方法(3)invokevirtual:调用所有的虚方法(4)invokeinterface调用接口方法。
5、JVM加载class文件的原理是什么?
答案:在JVM当中,类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader是一个重要的Java运行时系统组件,Java ClassLoader负责在运行的时候查找和装入类文件的类。
java当中的所有类,都要由类加载器装载到JVM当中才可以运行。
类加载器自身也是一个类,类加载器的工作就是将class文件从硬盘读取到内存当中。
在写程序的时候,基本上不要关心类的加载。
类装载方式,有以下的2种方式:
(1)隐式装载
程序在运行过程当中,在碰到通过new等方式生成对象的时候,隐式调用类装载器加载对应的类到jvm中,
(2)显式装载
通过class.forname()等方法,显式加载需要的类,隐式加载和显式加载的区别:两者本质是一样的。
java类的加载是动态的,它不会说一次性就把所有的类全部加载之后,再来运行,而是保证程序运行的基础类完全加载到jvm当中,至于其他的类,那么,就只会在需要的时候才加载。
6、jvm最大内存限制是多少?
答案:
7、JVM内存模型是什么?
答案:java内存模型又可以叫做是JMM,JMM决定一个线程对共享变量的写入何时对另一个线程可见。
从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系。
线程之间的共享变量存储在主内存当中,每个线程都有一个私有的本地内存,本地内存中存储了该线程以读/写共享变量的副本。
本地内存是JMM的一个抽象概念,它不是真实存在的。
它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。
8、哪些对象可作为ROOT对象?
答案:虚拟机栈中的引用对象、方法区中类静态属性引用的对象、方法区中常量引用对象、本地方法栈中JNI引用对象。
9、JVM分区都有哪些?
答案:程序计数器(Program Count Register)、本地方法栈(Native Stack)、方法区(Methon Area)、栈(Stack)、堆(Heap)。
10、讲以下类的加载过程
答案:
具体的大家可以参考以下以下的文章-JVM类加载机制,什么是类的加载?
你还想了解更多的面试题吗?请继续关注奇Q工具网来了解吧,更多Java面试题可以分享给你。
推荐阅读: