JAVA JVM常见面试题

1.JVM的内存区域是怎么划分的?

2.OOM可能发生在哪些区域上?

根据javadoc的描述,OOM是指JVM的内存不够用了,同时垃圾收集器也无法提供更多的内存。从描述中可以看出,在JVM抛出OutOfMemoryError之前,垃圾收集器一般会出马先尝试回收内存。

从上面分析的Java数据区来看,除了程序计数器不会发生OOM外,哪些区域会发生OOM的情况呢?

第一,堆内存。堆内存不足是最常见的发送OOM的原因之一

如果在堆中没有内存完成对象实例的分配,并且堆无法再扩展时,将抛出OutOfMemoryError异常,抛出的错误信息是“java.lang.OutOfMemoryError:Java heap space”。

当前主流的JVM可以通过-Xmx和-Xms来控制堆内存的大小,发生堆上OOM的可能是存在内存泄露,也可能是堆大小分配不合理。

第二,Java虚拟机栈和本地方法栈,这两个区域的区别不过是虚拟机栈为虚拟机执行Java方法服务,而本地方法栈则为虚拟机使用到的Native方法服务,在内存分配异常上是相同的。

在JVM规范中,对Java虚拟机栈规定了两种异常:

  1. 如果线程请求的栈大于所分配的栈大小,则抛出StackOverFlowError错误,比如进行了一个不会停止的递归调用;

  2. 如果虚拟机栈是可以动态拓展的,拓展时无法申请到足够的内存,则抛出OutOfMemoryError错误。

第三,直接内存。直接内存虽然不是虚拟机运行时数据区的一部分,但既然是内存,就会受到物理内存的限制。

在JDK1.4中引入的NIO使用Native函数库在堆外内存上直接分配内存,但直接内存不足时,也会导致OOM。

第四,元空间。随着Metaspace元数据区的引入,方法区的OOM错误信息也变成了“java.lang.OutOfMemoryError:Metaspace”。

内存区域

是否线程私有

是否可能发生OOM

程序计数器

虚拟机栈

本地方法栈

方法区

直接内存

3.堆内存的结构?

1.所有新生成的对象首先都是放在年轻代的。

2.新生代内存按照8:1:1的比例分为一个eden区和两个Survivor(s0,s1)区。大部分对象在Eden区中生成。回收时先将eden区存活的对象复制到一个survivor0区,然后清空eden区,当这个survivor0区,也存放满了时,则将eden区和survivor0区存活对象复制到另一个survivor1区,然后清空eden和这个survivor0区,此时survivor0区是空的,然后将survivor0区和survivor1区交换,即保持survivor1区为空,如此往复。

3.在年轻代中经历了 N次垃圾回收后仍然存活的对象,就会被放到年老代中。因此,可以认为年老代中存放的都是一些生命周期较长的对象。默认是15次

4.内存比新生代也大很多(大概是2倍),当老年代内存满时触发MajorGC【meɪdʒə(r)】即FullGC,

FullGC发生频率比较低,老年代对象存活时间比较长,存活率比较高。

4.常用的性能监控与问题定位工具有哪些?

在系统的性能分析中,CPU、内存与IO是主要的关注项。很多时候服务出现问题,在这三者上会体现出现,比如CPU飙升,内存不足发生OOM等,这时候需要使用对应的工具,来对性能进行监控,对问题进行定位。对于CPU的监控,首先可以使用top命令来进行查看,下面是使用top查看负载的一个截图:

load average 代表1分钟、5分钟、15分钟的系统平均负载,从这三个数字,可以判断系统负荷是大还是小。

当CPU完全空闲的时候,平均负荷为0;当CPU工作量饱和的时候,平均负荷为1。因此 load average 这三个数值越低,代表系统负荷越小。

那么什么时候能看出系统负荷比较重呢?

从top命令的截图中可以看到这三个值机器的load average非常低。如果这三个值非常高,比如超过了50%或60%,就应当引起注意。

从时间维度上来说,如果发现CPU负荷慢慢升高,也需要警惕。

其他的内存、CPU等性能监控工具的使用,以一张脑图来展示:

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

rk3588S 调试USB摄像头

问题: 客户的 usb 摄像头 接上 板卡上的 USB2.0 的接口是可以的,但是 接上 typec 接口上的 OTGUSB的时候 ,就会出现,无法识别USB的问题。 情况的说明: 先来看一下硬件。 这里的 typec 接口实际上 只用到了 otg USB的 两根线, 也就是 把TYPEC 当做 USB2.0 来用了。(通…

2024-09-27 buildroot C和语言将 中文的GBK编码转换为 UTF-8 的代码, printf 显示出来,使用 iconv 库去实现。

一、GBK 的英文全称是 "Guobiao Kuozhan",意为 "National Standard Extended"。它是对 GB2312 编码的扩展,用于表示更多汉字和符号 GBK(国标扩展汉字编码)是一种用于简体中文和繁体中文字符的编码方式&#x…

起号半个月GMV 1300W+,视频号这个赛道真香!

双减”后,教育的主阵地重回学校和家庭,特别是家庭教育被赋予了更多的期待,家庭无疑要承担起更多教育职责。 同时亲子关系进一步受到考验,家庭教育除了辅导孩子学习外,更牵涉孩子成长的每个方面、每个点滴,掌…

计算机视觉|机器学习中图片特征向量的提取方式:开启图像世界的钥匙

文章目录 什么是特征向量?常见的图片特征向量提取方法1. **手工设计的特征**SIFT(尺度不变特征变换)HOG(方向梯度直方图) 2. **卷积神经网络 (CNN)**3. **预训练模型**4. **自监督学习** 结语 今天我们将一起深入探讨机…

C++:采用模板封装顺序表,栈,队列

1.顺序表&#xff1a; list.hpp #ifndef LIST_HPP #define LIST_HPP #include <iostream>using namespace std;template <class L>class Seqlist { private:L *ptr;L size;L len0;public:void init(L n){//堆区申请空间&#xff08;大小为n&#xff09;this->…

React学习笔记(2.0)

React事件绑定 语法&#xff1a;在对应标签上书写on事件&#xff08;比如onClick,onChange&#xff09;&#xff0c;注意和原生的事件区分&#xff0c;React的事件首字母要大写。 const handleChange(e:any)>{console.log(e);console.log(change事件触发);// e不是原生事件…

IGZO基底无电容DRAM单元前景看好

1.DRAM技术简介 DRAM&#xff08;Dynamic Random Access Memory&#xff0c;动态随机存取存储器&#xff09;是一种用于计算机和其他电子设备中的主存储器类型&#xff0c;其主要由存储单元阵列构成&#xff0c;而每一个存储单元由一个电容器和一个晶体管组成&#xff0c;如图…

python-金币/打分/小理学数列3

一&#xff1a;金币 题目描述 国王将金币作为工资&#xff0c;发放给忠诚的骑士。 第一天&#xff0c;骑士收到一枚金币&#xff1b;之后两天&#xff08;第二天和第三天&#xff09;里&#xff0c;每天收到两枚金币&#xff1b;之后三天&#xff08;第四、五、六天&#xff09…

智慧农业案例 (一)- 自动化机械

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案&#xff0c;帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、领域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&…

【Python基础(一)】

学习分享 一、基本语法1、输出print语句2、常量的写法3、运算符 (/) 与(//)4、字符串5、列表5.1、列表查询元素是否存在5.2、列表查询元素是否存在5.3、身份运算符5.4、列表的增删改查 6、元组6.1、tuple() 7、字典8、函数8.1、值传递8.2、引用传递8.3、函数的传参 二、文件的操…

Java零工市场小程序如何实现一站式服务

零工市场小程序作为一个为自由职业者服务的平台&#xff0c;Java编程语言是其坚实的后盾&#xff0c;为自由职业者提供了良好的服务&#xff0c;提高了用户体验感和工作效率&#xff0c;实现了一站式服务。 首先&#xff0c;用户只需在微信中就可使用&#xff0c;注册完善个人信…

基于RustDesk自建远程桌面服务

最近向日葵越来越难用了&#xff0c;官方好像限制了免费用户的带宽&#xff0c;但是限制的有点过头了&#xff0c;卡的基本没法用。 向日葵的平替todesk对于免费用户又有时长限制&#xff0c;对于经常用的小伙伴不大友好。 咱也不是说非得白嫖&#xff0c;但是向日葵和todesk这…

Leetcode 除自身以外数组的乘积

class Solution {public int[] productExceptSelf(int[] nums) {int length nums.length;//一维数组 answer[]存储最终的结果//首先从左往右记录乘积&#xff0c;暂时存储到一维数组 answer[] 中int[] answer new int[length];//先从左往右, 由于由于第一个元素左边没有元素&…

【漏洞复现】灵当CRM multipleUpload.php接口处存在文件上传漏洞

》》》产品描述《《《 灵当CRM致力于为企业提供客户管理数字化、销售管理自动化、服务管理智能化、项目管理一体化的个性化CRM行业解决方案,构建全生命周期的数字化管理体系,实现可持续的业绩增长! 》》》漏洞描述《《《 灵当CRM系统接口multipleUpload.php文件上传漏洞&#x…

艺术家刘欢近况时隔5年再登《歌手》舞台,国家级嗓音引发热议

在我国&#xff0c;有这样一位艺术家&#xff0c;他自上世纪80年代至今&#xff0c;用一首首脍炙人口的歌曲和他那独特的嗓音陪伴数代人成长。凭借音乐上的造诣和天赋&#xff0c;他被众多网友誉为“音乐教父”&#xff1b;攀登至领域巅峰时&#xff0c;他不忘提携后辈&#xf…

通俗易懂的Latex使用步骤

目录 Latex的安装和基本框架 TeX Live和TeXstudio的安装 Latex基本框架 标题 目录 列表 字体设置 图片 单张图片 多张图片&#xff08;以两张图片为例&#xff09;&#xff1a; 多张图片&#xff08;以三张图片为例&#xff09;&#xff1a; 公式 公式复制神器: …

高性能计算应用优化实践之WRF

WRF&#xff08;Weather Research Forecast&#xff09;模式是由美国国家大气研究中心&#xff08;NCAR&#xff09;、国家环境预报中心&#xff08;NCEP&#xff09;等机构自1997年起联合开发的新一代高分辨率中尺度天气研究预报模式&#xff0c;重点解决分辨率为1&#xff5e…

jinaai/jina-embeddings-v2-base-zh向量模型报错解决

报错信息 OSError: We couldn’t connect to ‘https://huggingface.co’ to load this file, couldn’t find it in the cached files and it looks like jinaai/jina-bert-implementation is not the path to a directory containing a file named configuration_bert.py. 报…

智能新宠:BabyAlpha A2开启家庭机器人新时代

具身智能领域的“疯狂”&#xff0c;已经迈入了全新的阶段&#xff01;让我们一起来看看这段视频&#xff1a;一个人形机器人在前面奔跑&#xff0c;一群机器狗紧随其后&#xff1b;接着是人追赶机器狗&#xff0c;随后机器狗又追逐人……视频最后&#xff0c;那个机器人似乎还…

2025台球展,2025河南台球及配套设施展览会3月举办

阳春三月&#xff0c;年度招商季&#xff0c;壹肆柒中国国际台球产业博览会助力全国台球企业拓市场&#xff1b; 2025中国&#xff08;郑州&#xff09;国际台球产业博览会&#xff08;壹肆柒台球展&#xff09; The 2025 China (Zhengzhou) International Billiards Industry…