java虚拟机面试题及答案整理

KLQ 2020-06-05 11:11:47 java常见问答 3944

下面要给大家带来的是和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最大内存限制是多少?

答案:

java虚拟机面试题及答案

7、JVM内存模型是什么?

答案:java内存模型又可以叫做是JMM,JMM决定一个线程对共享变量的写入何时对另一个线程可见。

从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系。

线程之间的共享变量存储在主内存当中,每个线程都有一个私有的本地内存,本地内存中存储了该线程以读/写共享变量的副本。

本地内存是JMM的一个抽象概念,它不是真实存在的。

它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。

8、哪些对象可作为ROOT对象?

答案:虚拟机栈中的引用对象、方法区中类静态属性引用的对象、方法区中常量引用对象、本地方法栈中JNI引用对象。

9、JVM分区都有哪些?

答案:程序计数器(Program Count Register)、本地方法栈(Native Stack)、方法区(Methon Area)、栈(Stack)、堆(Heap)。

10、讲以下类的加载过程

答案:

java虚拟机面试题及答案

具体的大家可以参考以下以下的文章-JVM类加载机制,什么是类的加载?

你还想了解更多的面试题吗?请继续关注奇Q工具网来了解吧,更多Java面试题可以分享给你。

推荐阅读:

后端开发面试问什么?java开发技术面试题大全

java面试题2019最新答案详解

java面试题大汇总以及java面试题大全带答案