jvm面试题30问

什么是JVM的跨平台?

什么是JVM的语言无关性?

什么是JVM的解释执行

什么是JIT?


JIT:在Java编程语言和环境中,即时编译器(JIT compiler,just-in-time compiler)是一个把Java的字节码(包括需要被解释的指令的程序)转换成可以直接发送给处理器的指令的程序。

对象一定是在堆中创建吗?

几乎所有的对象都是在堆中创建,但这不是绝对。
热点代码 指的是在程序运行时被频繁执行的代码段。
对象逃逸 是指当我们在某个方法里创建了一个对象,这个对象除了被这个方法引用,还在方法体之外被其它的变量引用。

讲一讲JVM的10种垃圾回收器

什么是垃圾回收中的STW?

STW(stop the world)

会造成用户的卡顿!用户体验非常差!

什么是可达性分析算法?

可达性的链路分析

做完可达性分析之后,可达的对象就是存活的对象,反之,没有可达的对象就是垃圾,完成JVM中存活对象和垃圾对象的判断!

如果不使用可达性分析的话,使用引用计数法,循环引用的对象计数不为0。

JVM中的垃圾回收算法

JVM从诞生到现在只有三种垃圾回收算法,分别是:复制算法、标记清除算法和标记整理算法。

复制算法:将可用的内存一分为二,交换复制。效率比较高,适合于新生代。空间利用率只有50%。

标记清除算法:根据可达性分析进行标记,红色不可回收,灰色可回收。效率可以,但是垃圾回收之后内存不连续,存在内存碎片,大对象无法分配。

标记整理算法:在标记清除算法的基础上把存活对象移动到堆空间的一端,从而完成空间的整理。空间利用率可以,但效率比较低。

三种算法各有所长,又各有所短。

JVM的分代模型

新生代和老年代,在不同的代里面采用不同的垃圾回收算法

**为什么要进行分代?**因为对象的生命周期不一样,有的对象朝生夕死,但是有的对象生命周期比较长,如果堆内存不分代,所有对象存在相同的区域,那么垃圾回收的时候就会变的很复杂。分代后,垃圾回收就可以按区域的不同,采用不同的回收算法,保证整体垃圾回收的高效性。

CMS垃圾回收器

CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。

垃圾回收依赖于可达性分析算法

GC Roots数量很少,一般不会很多,可以在初始标记的时候全暂停。
CMS垃圾回收器的特点

优点:进行垃圾回收的时候,部分工作可以并发,暂停时间比较短;

缺点:业务线程和垃圾回收线程同时运行,cpu核心数小于4的时候,CMS垃圾回收器的效率是比较低的;并发清理会出现一种情况,业务线程可以会产生新垃圾(浮动垃圾),本次垃圾回收是处理不了的;并发清理标记清除算法,会产生内存碎片,空间不连续,大对象无法分配。

G1垃圾回收器

为了实现暂停时间的可预测,使用化整为零的思想,将堆空间分成大小相等的一些独立区域,每个区域叫做region。

JVM的运行时数据区有哪些?


什么是堆内存?堆内存包含哪些部分?

为了提高复制算法的空间利用率,Eden占80%。(绝大数对象都是朝生夕死)

对象一般要经过15次垃圾回收,才能进入老年代。

不同的代采用不同的垃圾回收算法。

什么是内存溢出?

什么是内存泄漏?与内存溢出有什么关系?

对象头包括哪些部分?


给定一个具体的类,请分析对象的内存占用


对象的整个占用大小应该是8字节的整数倍。

最终实际占用:40个字节。

常用的JVM启动参数有哪些?


设置堆空间的最大值(-Xmx)应该要考虑哪些因素?


Java8默认使用的垃圾回收器是什么?

什么是并行垃圾收集?

什么是STW?什么是安全点,什么是安全区域?

STW STOP THE WORLD



如果CPU使用率突然飙升,你会怎么排查?




CMS、G1垃圾回收器中的三色标记你了解吗




类加载与类加载器



什么是双亲委派机制?它有什么作用?

G1收集器有哪些特点


哪些手段来排除OOM的问题?

使用过那些JVM相关的命令工具?









相关推荐
头茬韭菜11 分钟前
3.9 成本预警 — 退出钩子、$5 阈值对话框与多通道成本通知
java·大数据·jvm·ai
重庆小透明20 分钟前
今日收获(一些个人思考)
java·spring·大模型·springai·prompt注入
Edward1111111141 分钟前
一AI名词
java·开发语言·数据库·学习
栈溢出了1 小时前
Redis repl_backlog 学习笔记
java·开发语言·redis·学习
并不喜欢吃鱼1 小时前
从零开始 C++----- 十五.一文吃透 C++ 异常:try-catch、栈展开、自定义异常、异常安全 noexcept 底层全剖析
java·开发语言·jvm
智码看视界1 小时前
Day19 Spring Boot启动优化:启动时间从8秒降到2秒
java·spring boot·后端·启动优化
北京阿法龙科技有限公司2 小时前
AR智能眼镜安防应用核心指标:识别距离筑牢防线
java·开发语言·ar
殘殤血2 小时前
Tomcat的事件监听机制:观察者模式 _
java·观察者模式·tomcat
汤姆yu2 小时前
面向具身智能的物理视频模拟器:蚂蚁灵波LingBot-Video开源模型全解析
java·大数据·人工智能·gpt·开源·大模型·音视频
SQL-First布道者2 小时前
Spring JDBC Ultra 十边型战士
java·spring boot·后端·mysql·spring·mybatis