jvm虚拟机面试题

jvm虚拟机面试题_第1张图片

JVM组成

JVM是什么?

是Java程序的运行环境,它的好处就是可以让Java代码一次编写,到处运行,就是在不同的操作系统中都可以使用这一套代码;还有她会有自动的内存管理,和垃圾回收机制

什么是程序计数器

它是线程私有的,每个线程都有一份,里边保存的是字节码的行号,用来记录正在执行的字节码的地址。


Java堆?

jvm虚拟机面试题_第2张图片


什么是虚拟机栈?

jvm虚拟机面试题_第3张图片


解释一下方法区?

jvm虚拟机面试题_第4张图片


介绍一下运行时常量池?

jvm虚拟机面试题_第5张图片


直接内存?

1它不属于jvm内存结构,不由jvm管理,它是虚拟机的系统内存

2常见NIO操作,用于数据缓冲区,分配回收成本高,但是读写性能很高,不受jvm内存回收管理

=======================================================================

类加载器

什么是类加载器?

因为jvm只会运行二进制文件,类加载器就是将字节码文件加载到jvm中,从而让Java程序能够启动起来。


类加载器都有哪些?

jvm虚拟机面试题_第6张图片


什么是双亲委派模型?

加载一个类的时候,先委托上一级的加载器进行加载,如果上级加载器也有上级,就继续向上委托,如上级没被加载的话,子加载器就会加载该类。


JVM为什么采用双亲委派机制?

可以避免一个类被重复加载保证了唯一性

保护了类库api不会被修改


======================================================================

垃圾回收机制

对象什么时候可以被垃圾回收器回收?

如果一个或多个对象没有任何引用指向它了,这就是垃圾,定位垃圾的话,就会被垃圾回收器回收

(定位垃圾的方式有两种:引用计数法和可达性分析算法)


jvm垃圾回收算法?

 1 标记清除算法,根据可达性分析算法得出的垃圾进行标记,然后对其进行垃圾回收(会出现内存的碎片化,内存不连贯),这个是用的比较少的

 2 标记整理算法 这个和标记清除算法差不多,对象移动内存位置,因为要整理,所以它效率会有些影响(老年代的垃圾回收器一般用这种)

3 复制算法(这个了解的不太多)


JVM有哪些垃圾回收器?

是有四种垃圾回收器的分别是:串行垃圾回收期,并行垃圾回收期,CMS垃圾回收器,G1垃圾回收器

串行垃圾回收期:使用单线程进行垃圾回收,堆内存比较小才会使用,一般我们个人电脑会使用

并行垃圾回收期:jvm虚拟机面试题_第7张图片

CMS垃圾回收器:

G1(one)垃圾回收器:

应用于新生代和老年代,jdk9以后默认使用G1

采用的是复制算法

响应时间和吞吐量都还不错

jvm虚拟机面试题_第8张图片

======================================================================

jvm实践

说一下JVM调优的工具?

jconsole (J kang搜) :监控jvm的内存,线程,类

V(sou)VM:监控线程和内存


CPU飙高的排查方案:

可以通过top命令,查看CPU的情况,就可以查看哪一个进程占用的cpu较高

在使用ps命令查看进程中的线程信息,然后用jstack命令查看那些线程出现问题。

你可能感兴趣的:(jvm)