【JVM】10道不得不会的JVM面试题

2022-04-07  本文已影响0人  JavaPub

我是JavaPub,专注于面试、副业,技术人的成长记录。

以下是 JVM 面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答建议收藏,经常温习查阅

评论区见

@[toc]

JVM

基于JDK8

1. 说一说JVM的主要组成部分

点击放大看,一图胜千文
[图片上传失败...(image-289aa1-1649310158544)]

2. 说一下 JVM 的作用?

首先通过编译器把 Java 代码转换成字节码,类加载器(ClassLoader)再把字节码加载到内存中,将其放在运行时数据区(Runtime data area)的方法区内,而字节码文件只是 JVM 的一套指令集规范,并不能直接交给底层操作系统去执行,因此需要特定的命令解析器执行引擎(Execution Engine),将字节码翻译成底层系统指令,再交由 CPU 去执行,而这个过程中需要调用其他语言的本地库接口(Native Interface)来实现整个程序的功能。

3. 说一下堆栈的区别?

物理地址

堆的物理地址分配对象是不连续的。因此性能慢些。在GC的时候也要考虑到不连续的分配,所以有各种算法。比如,标记-消除,复制,标记-压缩,分代(即新生代使用复制算法,老年代使用标记——压缩)

栈使用的是数据结构中的栈,先进后出的原则,物理地址分配是连续的。所以性能快。

内存分别

堆因为是不连续的,所以分配的内存是在运行期确认的,因此大小不固定。一般堆大小远远大于栈。

栈是连续的,所以分配的内存大小要在编译期就确认,大小是固定的。

存放的内容

堆存放的是对象的实例和数组。因此该区更关注的是数据的存储

栈存放:局部变量,操作数栈,返回结果。该区更关注的是程序方法的执行。

PS:

静态变量放在方法区
静态的对象还是放在堆。
程序的可见度

堆对于整个应用程序都是共享、可见的。

栈只对于线程是可见的。所以也是线程私有。他的生命周期和线程相同。

4. Java内存泄漏

内存泄漏是指不再被使用的对象或者变量一直被占据在内存中。

严格来说,只有对象不会再被程序用到了,但是GC又不能回收他们的情况,才叫内存泄漏。

理论上来说,Java是有GC垃圾回收机制的,也就是说,不再被使用的对象,会被GC自动回收掉,自动从内存中清除。

但是,即使这样,Java也还是存在着内存泄漏的情况,java导致内存泄露的原因很明确:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景。

5. JVM 有哪些垃圾回收算法?

6. 说一下 JVM 有哪些垃圾回收器?

[图片上传失败...(image-38a1b2-1649310158544)]
[图片上传失败...(image-37a72e-1649310158544)]

7. 说一下类加载的执行过程?

[图片上传失败...(image-c29271-1649310158544)]


8. 什么是双亲委派模型?为什么要使用双亲委派模型?

什么是双亲委派模型

为什么要使用双亲委派模型

可以防止内存中出现多份同样的字节码,如果没有双亲委派模型而是由各个类加载器自行加载的话,如果用户编写了一个java.lang.Object的同名类并放在ClassPath中,多个类加载器都去加载这个类到内存中,系统中将会出现多个不同的Object类,那么类之间的比较结果及类的唯一性将无法保证,而且如果不使用这种双亲委派模型将会给虚拟机的安全带来隐患。所以,要让类对象进行比较有意义,前提是他们要被同一个类加载器加载。

9. CMS垃圾清理的过程

[图片上传失败...(image-5f02eb-1649310158544)]
CMS整个过程比之前的收集器要复杂,整个过程分为4个主要阶段,即初始标记阶段、并发标记阶段、重新标记阶段和并发清除阶段。(涉及STW的阶段主要是:初始标记 和 重新标记 stop-the-world)

10. 常用的 JVM 调优的参数都有哪些?

[图片上传失败...(image-2d2a29-1649310158544)]

[图片上传失败...(image-996e87-1649310158544)]

JVM 调优-这个问题单独一篇


系列文章

【Java基础】10道不得不会的Java基础面试题

【Java并发】10道不得不会的Java并发基础面试题

【MySQL】10道不得不会的MySQL基础面试题

【ElasticSearch】10道不得不会的ElasticSearch面试题

【JVM】10道不得不会的JVM面试题

上一篇 下一篇

猜你喜欢

热点阅读