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相关的命令工具?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/671402.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超级计算机精度理论值公式

峰值计算 FLOPS在高性能计算机集群(超算)上可以使用如下公式计算: 细分到处理器上,以单个 Intel Xeon Gold 6258R 举例,该处理器基于Cascade Lake架构,每个计算单元有2个FMA(fused multiply-add)&#x…

第78天:WAF攻防-菜刀冰蝎哥斯拉流量通讯特征绕过检测反制感知

目录 案例一: 菜刀-流量&绕过&特征&检测 菜刀的流量特征 案例二:冰蝎-流量&绕过&特征&检测 冰蝎使用教程 冰蝎的流量特征 案例三: 哥斯拉-流量&绕过&特征&检测 哥斯拉使用教程 哥斯拉的流量特征…

调用第三方接口——支付宝付款

沙箱环境是支付宝开放平台为开发者提供的用于接口开发及主要功能联调的模拟环境。 参考 登录 - 支付宝 在沙箱环境下,已经分配好了用于模拟测试的应用信息、商家信息、买家信息等 小程序文档 - 支付宝文档中心 内网穿透(支付宝付款需要在公网进行检查…

RAG进阶(二): RAG 融合(rag fusion)

在上一篇博客中,我们学习了多重查询(Multi Query)技术,Multi Query的基本思想是当用户输入查询语句(自然语言)时,我们让大模型(LLM)基于用户的问题再生成多个查询语句,这些生成的查询语句是对用户查询语句的补充,它们是…

如何使git提交的时候忽略一些特殊文件?

认识.gitignore文件 在生成远程仓库的时候我们会看到这样一个选项: 这个.gitignore文件有啥用呢? .gotignore文件是Git版本控制系统中的一个特殊文件。用来指定哪些文件或者目录不被Git追踪或者提交到版本库中。也就意味着,如果我们有一些文…

国产最强多模态大模型Step Fun-1V,究竟有多好用?

前言: 2023年是大模型的元年,随着ChatGPT的爆火,将大模型带入了公众的视野 ,国内也随之掀起了百模大战的浪潮。在这股浪潮的推动下,诸多科技公司,乃至大厂都争相推出自己的大模型产品,希望能够…

Flutter开发Dart中的队列(Queue)

文章目录 Dart中的队列(Queue)基本操作示例队列的类型队列的应用总结 Dart中的队列(Queue) 队列是一种抽象的数据结构,遵循“先进先出”(FIFO)的原则。这意味着最早添加的元素将首先被移除。队…

Java基础教程 - 5 数组

更好的阅读体验:点这里 ( www.doubibiji.com ) 更好的阅读体验:点这里 ( www.doubibiji.com ) 更好的阅读体验:点这里 ( www.doubibiji.com ) 5 数组 前面我们保存数据…

正则将段落分割成句子

这里分割段落不区分中英文标点,你可以根据需求改 分割后标点跟随句子后面 def split_sentences_keep_delimiter(text):pattern r[^。!!??::;;,,][。!!??::;&#xff…

与Apollo共创生态:让智驾技术为各行业发展赋能

目录 一、引言 二、Apollo七周年大会主要内容回顾 2.1活动回顾链接 2.2Apollo项目介绍 2.2.1Apollo项目发展介绍 2.2.2实验用车传感器介绍 2.2.3硬件连接概述 2.2.4软件概述 2.3Apollo X 企业自动驾驶解决方案介绍 2.3.1Apollo X 企业自动驾驶解决方案优势 2.3.2 Ap…

LIUNX系统编程:进程池的实现

1.什么是进程池 每一个可执行程序,在被执行前都要转化为进程,操作系统都要为其创建PCB,地址空间,页表,构建映射关系,进程池就是创建进程时,创建很多个进程,如果要执行程序&#xff…

认识ansible 了解常用模块

ansible是什么? Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。是自动化运维工具&#xff0…