JVM堆内存解析

news2025/3/1 16:09:48

一、JVM堆内存介绍

Java大多数对象都是存放在堆中,堆内存是完全自动化管理,根据垃圾回收机制不同,Java堆有不同的结构,下面是我们一台生产环境服务器JVM堆内存空间分配情况,JVM只设置了-Xms2048M -Xmx2048M。

1、JVM堆内存为什么要分代

分代目的主要是优化GC的性能,做了分代后在GC时不用对整个堆内存进行扫描,因为Java很多对象是朝生夕死,这部分可以单独放在一个区便于及时回收掉。

2、新生代

伊甸区(Eden):新创建的对象先被分配在Eden区存放。

幸存区1、幸存区2:当Eden区满的时候进行Minor GC,如果对象还存活的,会被移到幸存区,以后每次GC时对象的年龄会加1,当年龄加到一定程度就会被移到老年代,幸存区分成两个区,每次只使用一个区,当一个区块填满了后会将还活着对象复制到另一个区。

新生代采用复制算法进行垃圾回收,垃圾回收进行的比较频繁,每次执行Minor GC耗时比较短(监测两周数据,每天执行28次Minor GC,每次耗时10毫秒)

3、老年代

老年代对象比较稳定,当有新生代对象移到老年代,如果空间不够时会触发MajorGC,采用标记清除法,即扫描内存区块后标记出存活的对象,然后将未标记的进行回收,MajorGC耗时比较长(监测两周数据,只有启动的时候执行了4次MajorGC,每次耗时200毫秒)。

二、监测堆内存区空间变化

1、使用jstat监测堆内存空间使用情况

使用Shell脚本每隔一分钟获取一次内存占用数据并写入数据库。

2、内存空间使用数据分析

从图中可以看出

1、YGC和EU(伊甸区内存使用大小)的关系,当EU占满了,触发了YGC,然后EU下降。

2、S0和S1空间使用相互切换,当S0空的时候,新生代幸存对象放在S1,当S1空的时候,新生代幸存对象放在S0。

3、老年代的占用空间和FGC

跟踪了从7月13号~7月19号  OU从83M增长为107M,远远达不到分配的1365.5M,另外每周都有系统发布JVM会重启,所以都没有发生过FGC,新系统上线时要特别关注FGC的情况,最常见的是当异常情况下把表的数据全部加载到内存,这种极易造成堆内存快速增长,然后频繁FGC,甚至发生OOM。

三、Java对象在堆中分配的流程图

注:网上找的图片

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

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

相关文章

cnpm windows系统安装后查看版本cnpm -v报错Error: Cannot find module ‘node:util‘

1、报错截图 2、原因 在网上查了一些资料,有的说配置环境变量就可以,但经过配置后发现还是会报错。又查到说是由于cnpm和npm的版本不一致导致的,最后尝试成功解决!!! 2、解决办法 1、先卸载掉之前安装的c…

【Git企业开发】第四节.Git的分支管理策略和bug分支

文章目录 前言一、Git的分支管理策略 1.1 Fast forward 模式和--no-ff 模式 1.2 企业分支管理策略二、bug分支三、删除临时分支四、总结总结 前言 一、Git的分支管理策略 1.1 Fast forward 模式和--no-ff 模式 通常合并分支时,如果可能,Git 会…

leetcode82删除排序链表中的重复元素

删除链表重复元素 题目描述 思路分析 思路1&#xff1a;采用一次遍历&#xff0c;内部循环判定是否相等 具体分析一下指针移动 外部循环判定卡住的位置 c语言代码&#xff1a; #include <stdio.h> #include <stdlib.h>struct ListNode {int val;struct ListNode …

Paper reading: segment anything in high quality NIPS2023

最近发展起来的SAM模型&#xff0c;表示分割模型的一个大的跃进&#xff0c;尤其是在零样本的能力和灵活提升方面。尽管利用1.1bollion的mask&#xff0c;SAM在掩码预测方面已经存在很大的问题&#xff0c;尤其是目标有着复杂结构的时候。 我们提出一个HA-SAM。 设计学习一个…

2023腾讯云双11优惠价格表发布:轻量云服务器和CVM云服务器的优惠价格

双十一购物狂欢节即将来临&#xff0c;作为IT行业的从业者或企业用户&#xff0c;我们也可以享受到腾讯云在这个节日里带来的超值优惠。近日&#xff0c;腾讯云发布了2023年双十一优惠价格表&#xff0c;其中包括了轻量云服务器和CVM云服务器的各项优惠价格。本文将为您详细介绍…

labelme安装后无法启动

问题 labelme安装后无法启动&#xff0c;输入labelme后出现了如下错误信息&#xff1a; labelme : 无法将“labelme”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果包括路径&#xff0c;请确保路径正确&#xff0c;然后再试一次。 所…

2023年10月文章一览

2023年10月编程人总共更新了6篇文章&#xff1a; 1.2023年9月文章一览 2.Programming abstractions in C阅读笔记&#xff1a;p161-p165 3.Programming abstractions in C阅读笔记&#xff1a;p166-p175 4.Programming abstractions in C阅读笔记&#xff1a;p176-p178 5.…

冒泡与捕获事件

一.冒泡与捕获 1.概念。 冒泡事件&#xff1a;微软公司提出的&#xff0c;事件由子元素传递到父元素的过程叫做冒泡&#xff08;false&#xff09;。 捕获事件&#xff1a;网景公司提出的&#xff0c;事件由父元素传递到子元素的过程叫做事件捕获&#xff08;ture&#xff09…

晃电的原因以及如何治理?

安科瑞 须静燕 晃电的定义 国标GB/T 30137-2013 中定义:工频电压方均根值突然降至额定值的90%~10%&#xff0c;持续时间为10ms~ 1min后恢复正常的现象 晃电的原因 短路故障 绝缘闪络 大功率电机启动 雷击浪涌 进线失电时备自投或快切 晃电的危害 对公共用户影响较小 …

如何看待阿里云99元服务器新老用户同享?

如何看待阿里云99元服务器老用户可买&#xff1f;阿里云急了&#xff0c;阿里云老用户与狗的营销策略要被打破了吗&#xff1f;并且续费不涨价&#xff0c;依旧是99元&#xff0c;阿里云急了&#xff1f; 2023阿里云服务器优惠活动来了&#xff0c;以前一直是腾讯云比阿里云优…

2023年十大地推网推拉新接单平台,都是一手单和官方渠道

2023年做拉新推广的地推人员&#xff0c;一定不要错过这十个接单平台&#xff0c;助你轻松找到一手单&#xff0c;这10个平台分别是&#xff1a; &#xff08;主推&#xff1a;聚量推客&#xff09; 我们也拿到了一手邀请码&#xff1a;000000 1&#xff1a;聚量推客 “聚量推…

jsoncpp fatal error C1083: 无法打开编译器生成的文件

使用jsoncpp库的时候&#xff0c;在Debug模式下正常&#xff0c;但是release却报错&#xff0c;开始以为是开发项目设置问题&#xff0c;于是网络搜索&#xff0c;发现是jsoncpp的编译选项问题。 修改生成静态库文件的工程的属性&#xff1a;路径为&#xff1a;菜单&#xff0…

霍尔效应测试系统

霍尔效应是电磁效应的一种&#xff0c;这一现象是美国物理学家霍尔&#xff08;E.H.Hall&#xff0c;1855—1938&#xff09;于1879年在研究金属的导电机制时发现的。当电流垂直于外磁场通过半导体时&#xff0c;载流子发生偏转&#xff0c;垂直于电流和磁场的方向会产生一附加…

pytorch复现_IOU

定义了一个compute_iou函数&#xff0c;用于计算两个矩形框&#xff08;boxA和boxB&#xff09;之间的交并比&#xff08;IOU&#xff0c;Intersection over Union&#xff09;。IOU是一种常用的度量&#xff0c;用于评估两个矩形框的重叠程度。 在代码中&#xff0c;函数的输入…

网络安全漏洞管理与修复: 深入研究漏洞管理流程,包括漏洞扫描、评估、修复和验证。

网络安全是当今数字时代的重要议题&#xff0c;随着技术的不断发展&#xff0c;网络攻击和漏洞问题也日益复杂。在这篇文章中&#xff0c;我们将深入研究网络安全漏洞管理与修复的流程&#xff0c;包括漏洞扫描、评估、修复和验证。通过理解和实施这一流程&#xff0c;组织可以…

2023-10-31 LeetCode每日一题(每棵子树内缺失的最小基因值)

2023-10-31每日一题 一、题目编号 2003. 每棵子树内缺失的最小基因值二、题目链接 点击跳转到题目位置 三、题目描述 有一棵根节点为 0 的 家族树 &#xff0c;总共包含 n 个节点&#xff0c;节点编号为 0 到 n - 1 。给你一个下标从 0 开始的整数数组 parents &#xff0…

Vue:实现输入vue组件名称,就可以从网页上加载出组件

作者:CSDN @ _乐多_ 本文记录了使用动态组件实现在网页上输入vue组件名称,就可以从网页上直接加载组件的功能的代码。 实现效果如下所示, 在许多Vue.js应用中,我们有大量的组件,但并不是每个组件都需要在应用初始化时加载。动态加载组件的好处包括: 减小初始加载时间:…

[已解决]Mysql想删掉一个表里所有的数据,直接删总是卡住

问题 产生"假锁" Mysql想删掉一个表里所有的数据&#xff0c;直接删总是卡住 思路 产生"假锁"原因 MySQL如果频繁的修改一个表的数据&#xff0c;那么这么表会被锁死。造成假死现象。在网上试过很多种解决方法,重启mysql服务,重连数据库都没有用。 温馨…

谷歌野心真不小!斥巨资扩张在人工智能界的战略地位,Anthropic公司成为跳板

原创 | 文 BFT机器人 近日&#xff0c;谷歌宣布对Anthropic进行重大投资&#xff0c;此举突显了谷歌这家科技巨头对人工智能 (AI) 的不断深化的承诺。此次&#xff0c;谷歌20亿美元的注资不仅增强了自身在快速发展的人工智能领域的立足点&#xff0c;而且标志着该行业动态的深…