[发明专利]一种JVM内存管理方法、装置、设备及可读存储介质在审
申请号: | 202011224748.1 | 申请日: | 2020-11-05 |
公开(公告)号: | CN112433809A | 公开(公告)日: | 2021-03-02 |
发明(设计)人: | 田琳 | 申请(专利权)人: | 北京浪潮数据技术有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F9/50 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 王云晓 |
地址: | 100085 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 jvm 内存 管理 方法 装置 设备 可读 存储 介质 | ||
本申请公开了一种JVM内存管理方法、装置、设备及可读存储介质。本申请公开的方法包括:若到达待清除对象的清除条件,则基于虚引用对象标记待清除对象;确定JVM的系统类型,并根据系统类型调用相应动态库,以获取虚引用对象和待清除对象的内存地址;删除虚引用对象和待清除对象,以释放内存地址。本申请依照清除条件清除虚引用对象和待清除对象,可及时回收JVM内存,保障有较多JVM内存可用,从而避免垃圾回收启动,也就是尽可能不让垃圾回收启动,因此可以降低垃圾回收对Java对象创建的影响,提高了JVM的处理性能。相应地,本申请提供的一种JVM内存管理装置、设备及可读存储介质,也同样具有上述技术效果。
技术领域
本申请涉及计算机技术领域,特别涉及一种JVM内存管理方法、装置、设备及可读存储介质。
背景技术
由于Java语言的特性及系统间解耦的双重要求,JVM(Java Virtual Machine,Java虚拟机)在接收到报文后会通过JVM内的包装类进行数据封装。在该场景下,JVM就会承受大于原报文大小的对象缓存,如基础数据类型(int、long、byte等)到包装类型(Integer、Long、Byte)的增长(增加对象头大小,占用24byte),又如对原报文的接收封装类,同样也会造成引用对象头的成倍增长。
若Java对象在短时间内创建比较频繁,就很容易造成JVM内存不够用,故JVM的GC(Garbage Collection,垃圾回收)也会变的十分频繁。因为JVM内存不够用时,垃圾回收就会启动。而垃圾回收会占用CPU资源,影响Java对象的创建,因此导致JVM的处理性能降低。
因此,如何避免JVM频繁进行垃圾回收,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种JVM内存管理方法、装置、设备及可读存储介质,以避免JVM频繁进行垃圾回收。其具体方案如下:
第一方面,本申请提供了一种JVM内存管理方法,包括:
若到达待清除对象的清除条件,则基于虚引用对象标记所述待清除对象;
确定所述JVM的系统类型,并根据所述系统类型调用相应动态库,以获取所述虚引用对象和所述待清除对象的内存地址;
删除所述虚引用对象和所述待清除对象,以释放所述内存地址。
优选地,所述释放所述内存地址之后,还包括:
调用所述JVM中的内存整理线程整理内存碎片。
优选地,所述基于虚引用对象标记所述待清除对象之前,还包括:
构造能够接收任意类型对象的所述虚引用对象。
优选地,所述释放所述内存地址之后,还包括:
将所述待清除对象添加至引用队列。
优选地,所述内存地址包括:内存起始地址和偏移量。
优选地,所述根据所述系统类型调用相应动态库,包括:
若所述系统类型为Windows,则利用JNI或JNA调用dll库。
优选地,所述根据所述系统类型调用相应动态库,包括:
若所述系统类型为Linux,则利用JNI或JNA调用so库。
优选地,所述清除条件由用户根据程序运行逻辑预设。
第二方面,本申请提供了一种JVM内存管理装置,包括:
标记模块,用于若到达待清除对象的清除条件,则基于虚引用对象标记所述待清除对象;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京浪潮数据技术有限公司,未经北京浪潮数据技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011224748.1/2.html,转载请声明来源钻瓜专利网。