一种用于java动态数组的内存预警方法技术

技术编号:40004309 阅读:22 留言:0更新日期:2024-01-09 04:34
本公开提供了一种用于java动态数组的内存预警方法,涉及计算机软件技术领域,可用于单机环境,也可应用于分布式系统或云平台环境。该方法基于前端页面配置的内存阈值等参数,在服务器启动JVM时加载Java代理,在其中设定内存监控预警注入点;在java动态数组新增对象时按需自动获取JVM内存总量、可用内存量及已使用量并判断是否需要扩展空间,如是,则将扩展空间后JVM剩余的内存量与配置的内存阈值进行比较;如果达到设置的所述内存阈值,则形成内存溢出信息,并进行预警反馈。该方法能够根据管理者的需求在内存溢出前对内存监控阈值进行动态调节,及时地发现可能发生内存溢出的问题,并提高了内存溢出问题处理的效率。

【技术实现步骤摘要】

本公开涉及计算机软件,特别是涉及一种用于java动态数组的内存预警方法


技术介绍

1、在java技术发展历程中,内存溢出的问题一直存在,尤其是在分布式系统和云平台中,由于系统复杂性带来的内存管理难题,内存溢出问题更加突出。据有关安全小组称,操作系统中超过50%的安全漏洞都是由内存溢出引起的。

2、例如,堆内存溢出是常见的内存溢出情况之一。堆内存的作用是存放数组和对象实例,即通过指令创建新的对象,例如java动态数组arraylist或引用类型等。当动态数组的容量不足以容纳新添加的对象时,动态数组需要自动扩展空间,但是如果动态数组的容量超过了jvm的内存限制,就会出现内存溢出的情况,从而导致应用程序执行失败,甚至会引发平台崩溃等严重后果。

3、目前当出现内存溢出时可以通过重启jvm,释放未被回收的空间;也可以通过追溯溢出时日志,分析溢出的原因等方式来处理。但这些方式都只能是内存溢出事件发生后才能采用的措施,无法依据管理者的需求对现有内存使用情况进行监控,更无法对内存监控阈值进行动态调节,并对可能出现的内存溢出情况进行事前有效预警。另本文档来自技高网...

【技术保护点】

1.一种用于java动态数组的内存预警方法,其运行于服务器节点上,其特征在于:

2.根据权利要求1所述的用于java动态数组的内存预警方法,其特征在于,所述内存阈值的设置包括多级内存阈值及相应的预警等级,所述预警显示包括图形化显示所述JVM剩余的内存量达到哪级内存阈值及相应的预警等级,以提示对所述内存阈值的设置进行调整并更新本地数据库。

3.根据权利要求1所述的用于java动态数组的内存预警方法,其特征在于,所述形成内存溢出信息,将其写入日志,具体包括:创建常驻进程,收集内存操作日志,当发生内存溢出时,确定发生内存溢出的相关服务器及线程信息,并将其进行预警显示。<...

【技术特征摘要】

1.一种用于java动态数组的内存预警方法,其运行于服务器节点上,其特征在于:

2.根据权利要求1所述的用于java动态数组的内存预警方法,其特征在于,所述内存阈值的设置包括多级内存阈值及相应的预警等级,所述预警显示包括图形化显示所述jvm剩余的内存量达到哪级内存阈值及相应的预警等级,以提示对所述内存阈值的设置进行调整并更新本地数据库。

3.根据权利要求1所述的用于java动态数组的内存预警方法,其特征在于,所述形成内存溢出信息,将其写入日志,具体包括:创建常驻进程,收集内存操作日志,当发生内存溢出时,确定发生内存溢出的相关服务器及线程信息,并将其进行预警显示。

4.根据权利要求1所述的用于java动态数组的内存预警方法,其特征在于,所述计算所述每一对象的内存占用量,具体包括:计算所述每一对象的对象头空间、实例数据空间、补齐填充空间,所述对象头空间为固定字节数,所述实例数据空间为所述每一对象对应的实例类型占用的空间,所述补齐填充空间为将所述每一对象按照8字节对齐并去掉对象头空间、实例数据空间后剩余的空间。

5.根据权利要求1所述的用于java动态数组的内存预警方法,其特征在于,所述扩展空间,具体包括:为java动态数组创建的新的连续内存区域,其空间为java动态数组扩展前占用的内存区域空间的1.5倍,并将java动态数组存储的所述每一对象复制到所述新的连续内存区域。

6.一种用于jav...

【专利技术属性】
技术研发人员:高洋张帅刘欣昱贾峰
申请(专利权)人:本溪钢铁集团信息自动化有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1