[发明专利]Java虚拟机的内存泄漏处理方法及装置在审
| 申请号: | 202310426258.7 | 申请日: | 2023-04-19 |
| 公开(公告)号: | CN116257325A | 公开(公告)日: | 2023-06-13 |
| 发明(设计)人: | 肖宝粮;叶静涛 | 申请(专利权)人: | 湖南快乐阳光互动娱乐传媒有限公司 |
| 主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F9/50 |
| 代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 刘翠香 |
| 地址: | 410003 湖南省*** | 国省代码: | 湖南;43 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | java 虚拟机 内存 泄漏 处理 方法 装置 | ||
1.一种Java虚拟机的内存泄漏处理方法,其特征在于,所述方法包括:
判断Java虚拟机是否发生内存泄漏;
在确定所述Java虚拟机发生内存泄漏的情况下,基于堆内内存中对象的内存净增长率确定出引发内存泄漏的目标对象;
采用舱壁模式对所述目标对象进行隔离,以限制所述目标对象可使用的最大堆内内存容量;
在所述目标对象使用的堆内内存达到所述最大堆内内存容量的情况下,将所述目标对象转移至堆外内存。
2.根据权利要求1所述的方法,其特征在于,在将所述目标对象转移至堆外内存后,还包括:
基于可逆压缩算法对所述目标对象进行压缩;
在接收到调用所述目标对象的指令时,将压缩后的目标对象解压至所述堆外内存,以便解压后的目标对象提供服务,在完成服务后,基于所述可逆压缩算法对所述目标对象进行压缩,将压缩后的目标对象存储至所述堆外内存。
3.根据权利要求1或2所述的方法,其特征在于,所述基于堆内内存中对象的内存净增长率确定出引发内存泄漏的目标对象,包括:
确定出所述堆内内存中各对象的年龄;
比较所述堆内内存中对象的年龄和预设的年龄阈值,将年龄大于所述年龄阈值的对象确定为超龄对象;
确定出所述超龄对象的内存净增长率;
比较所述超龄对象的内存净增长率和预设的增长率阈值,将内存净增长率大于所述增长率阈值的超龄对象确定为目标对象。
4.根据权利要求1或2所述的方法,其特征在于,所述判断Java虚拟机是否发生内存泄漏,包括:
按照预设周期获取所述Java虚拟机中新生代堆空间的使用率;
根据多次获取到的所述新生代堆空间的使用率,确定出所述新生代堆空间的使用增长率;如果在预设时间内所述新生代堆空间的使用增长率大于预设的第一阈值,则确定所述Java虚拟机发生内存泄漏。
5.根据权利要求1或2所述的方法,其特征在于,所述判断Java虚拟机是否发生内存泄漏,包括:
按照预设周期获取所述Java虚拟机中老年代堆空间的使用率;
根据多次获取到的所述老年代堆空间的使用率,确定出所述老年代堆空间的使用增长率;如果在预设时间内所述老年代堆空间的使用增长率大于预设的第二阈值,则确定所述Java虚拟机发生内存泄漏。
6.根据权利要求2所述的方法,其特征在于,还包括:
在解压后的目标对象使用的堆外内存达到设定的最大堆外内存容量的情况下,触发操作系统回收所述目标对象使用的堆外内存。
7.一种Java虚拟机的内存泄漏处理装置,其特征在于,所述装置包括:
判断单元,用于判断Java虚拟机是否发生内存泄漏;
目标对象确定单元,用于在确定所述Java虚拟机发生内存泄漏的情况下,基于堆内内存中对象的内存净增长率确定出引发内存泄漏的目标对象;
隔离单元,用于采用舱壁模式对所述目标对象进行隔离,以限制所述目标对象可使用的最大堆内内存容量;
第一处理单元,用于在所述目标对象使用的堆内内存达到所述最大堆内内存容量的情况下,将所述目标对象转移至堆外内存。
8.根据权利要求7所述的装置,其特征在于,还包括:
第二处理单元,用于在所述第一处理单元将所述目标对象转移至堆外内存后,基于可逆压缩算法对所述目标对象进行压缩;在接收到调用所述目标对象的指令时,将压缩后的目标对象解压至所述堆外内存,以便解压后的目标对象提供服务,在完成服务后,基于所述可逆压缩算法对所述目标对象进行压缩,将压缩后的目标对象存储至所述堆外内存。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南快乐阳光互动娱乐传媒有限公司,未经湖南快乐阳光互动娱乐传媒有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310426258.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种用于灵活操控无衍射表面波的可重构超表面
- 下一篇:一种猪舍消毒装置





