CN117742894A - 一种jvm垃圾回收方法、装置、设备及介质 - Google Patents
一种jvm垃圾回收方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN117742894A CN117742894A CN202311787133.3A CN202311787133A CN117742894A CN 117742894 A CN117742894 A CN 117742894A CN 202311787133 A CN202311787133 A CN 202311787133A CN 117742894 A CN117742894 A CN 117742894A
- Authority
- CN
- China
- Prior art keywords
- jvm
- space
- garbage collection
- preset
- objects
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000004064 recycling Methods 0.000 title claims abstract description 43
- 238000004590 computer program Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 10
- 238000011084 recovery Methods 0.000 claims description 6
- 230000010076 replication Effects 0.000 claims description 5
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Memory System (AREA)
Abstract
本发明公开了一种JVM垃圾回收方法、装置、设备及介质,涉及计算机技术领域,包括:获取JVM的内存运行状态参数,并判断内存运行状态参数是否达到预设阈值;如果内存运行状态参数达到预设阈值,则通过JVM触发垃圾回收程序,并将JVM堆内存划分为控制空间和数据空间;在控制空间中分配在控制路径下创建的对象,并在控制空间中基于预设分代回收算法进行垃圾回收;在数据空间中分配在数据路径下创建的对象,并在数据空间中基于预设区域回收算法进行垃圾回收。本发明通过将JVM堆划分为控制空间和数据空间,然后对不同空间的堆基于更合适的垃圾回收算法进行垃圾回收,从而能够减少传统分代JVM垃圾回收的开销,提高内存管理的性能。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种JVM垃圾回收方法、装置、设备及介质。
背景技术
当前,JVM(Java Virtual Machine,Java虚拟机)是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。大多数大数据***是用托管语言编写的,比如Java、C#或Scala等语言,这些大数据***为了处理输入数据而创建大量的对象从而遭受严重的内存压力,进而分配和释放大量的数据对象,由于其中很多对象不符合GC(Garbage Collector,垃圾回收器)所采用的启发式算法而给现有的垃圾回收器带来了严重的压力。
发明内容
有鉴于此,本发明的目的在于提供一种JVM垃圾回收方法、装置、设备及介质,能够大大减少传统分代JVM垃圾回收的开销,提高内存管理的性能。其具体方案如下:
第一方面,本发明公开了一种JVM垃圾回收方法,包括:
获取JVM的内存运行状态参数,并判断所述内存运行状态参数是否达到预设阈值;
如果所述内存运行状态参数达到所述预设阈值,则通过JVM触发相应的垃圾回收程序,并将JVM堆内存划分为控制空间和数据空间;
在所述控制空间中分配在控制路径下创建的对象,并在所述控制空间中基于预设分代回收算法进行垃圾回收;
在所述数据空间中分配在数据路径下创建的对象,并在所述数据空间中基于预设区域回收算法进行垃圾回收。
可选的,所述将JVM堆内存划分为控制空间和数据空间,包括:
当JVM启动时,根据JVM堆内存的存储空间大小确定出相应的虚拟地址空间;
将所述虚拟地址空间划分为控制空间和数据空间。
可选的,所述在所述控制空间中基于预设分代回收算法进行垃圾回收,包括:
将所述控制空间划分为新生代和老年代;所述新生代表示存放生命周期比较短的对象的空间,所述老年代表示存放生命周期比较长的对象的空间;
对于所述新生代的对象,利用预设复制算法进行垃圾回收;
对于所述老年代的对象,利用预设标记整理算法进行垃圾回收。
可选的,所述在所述数据空间中基于预设区域回收算法进行垃圾回收,包括:
在每一个Epoch的开始阶段时,在所述数据空间中创建相应的区域;其中,所述Epoch表示数据转换代码块的执行过程,所述区域包含在所述Epoch内创建的所有对象;
从GC Roots开始对所述区域中的所有对象进行遍历,并确定出未被遍历到的对象;所述GC Roots表示正在运行的程序中的基本对象;
将未被遍历到的所述对象判定为不可达对象,并将所述不可达对象标记为垃圾以进行垃圾回收。
可选的,所述JVM垃圾回收方法,还包括:
为所述区域中的每个所述对象添加预设字节的字段以记录所述对象的区域信息;
相应的,在所述数据空间中分配在数据路径下创建的对象的过程中,还包括:
将所述对象的所述字段更新为对应的目标区域信息。
可选的,所述为所述区域中的每个所述对象添加预设字节的字段以记录所述对象的区域信息,包括:
对于所述区域中的每个所述对象,在所述对象的头部空间中添加预设字节的字段以记录所述对象的区域信息。
可选的,所述将所述对象的所述字段更新为对应的目标区域信息,包括:
将所述对象的所述字段更新为对应的目标区域标识号。
第二方面,本发明公开了一种JVM垃圾回收装置,包括:
参数获取模块,用于获取JVM的内存运行状态参数;
判断模块,用于判断所述内存运行状态参数是否达到预设阈值;
堆内存划分模块,用于在所述内存运行状态参数达到所述预设阈值时,则通过JVM触发相应的垃圾回收程序,并将JVM堆内存划分为控制空间和数据空间;
第一垃圾回收模块,用于在所述控制空间中分配在控制路径下创建的对象,并在所述控制空间中基于预设分代回收算法进行垃圾回收;
第二垃圾回收模块,用于在所述数据空间中分配在数据路径下创建的对象,并在所述数据空间中基于预设区域回收算法进行垃圾回收。
第三方面,本发明公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的JVM垃圾回收方法的步骤。
第四方面,本发明公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的JVM垃圾回收方法的步骤。
可见,本发明提供了一种JVM垃圾回收方法,包括:获取JVM的内存运行状态参数,并判断所述内存运行状态参数是否达到预设阈值;如果所述内存运行状态参数达到所述预设阈值,则通过JVM触发相应的垃圾回收程序,并将JVM堆内存划分为控制空间和数据空间;在所述控制空间中分配在控制路径下创建的对象,并在所述控制空间中基于预设分代回收算法进行垃圾回收;在所述数据空间中分配在数据路径下创建的对象,并在所述数据空间中基于预设区域回收算法进行垃圾回收。由此可知,本发明通过将JVM堆划分为控制空间和数据空间,然后对控制空间和数据空间的堆分别基于预设分代回收算法和基于预设区域回收算法进行垃圾回收,从而能够减少传统分代JVM垃圾回收的开销,提高内存管理的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明公开的一种JVM垃圾回收方法流程图;
图2为本发明公开的一种具体的控制空间垃圾回收示意图;
图3为本发明公开的一种具体的数据空间垃圾回收示意图;
图4为本发明公开的一种具体的目标对象管理跟踪示意图;
图5为本发明公开的一种具体的JVM垃圾回收方法流程图;
图6为本发明公开的一种JVM垃圾回收装置结构示意图;
图7为本发明公开的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
当前,一些大数据***为了处理输入数据而创建大量的对象从而遭受严重的内存压力,进而分配和释放大量的数据对象,由于其中很多对象不符合GC所采用的启发式算法而给现有的垃圾回收器带来了严重的压力。为此,本发明提供了一种JVM垃圾回收方案,能够大大减少传统分代JVM垃圾回收的开销,提高内存管理的性能。
本发明实施例公开了一种JVM垃圾回收方法,参见图1所示,该方法包括:
步骤S11:获取JVM的内存运行状态参数,并判断所述内存运行状态参数是否达到预设阈值。
可以理解的是,实时获取JVM的内存运行状态参数,并基于所述内存运行状态参数确定是否触发垃圾回收,即判断所述内存运行状态参数是否达到预设阈值。
步骤S12:如果所述内存运行状态参数达到所述预设阈值,则通过JVM触发相应的垃圾回收程序,并将JVM堆内存划分为控制空间和数据空间。
本实施例中,在所述内存运行状态参数达到所述预设阈值则通过JVM触发相应的垃圾回收程序,然后在垃圾回收程序运行时,JVM堆内存被划分为控制空间和数据空间。需要指出的是,大数据***的数据特征在于典型的数据处理框架通常在控制路径和数据路径之间有明确的逻辑区别。其中,控制路径进行集群管理和调度,建立节点间的通信通道,与用户交互解析查询并返回结果;数据路径主要由数据操作函数组成。而且两种路径有着不同的堆内存使用模式,其中,在控制路径下创建的对象满足两个假设:第一、最近分配的对象也很可能很快变得无法访问;第二、大多数对象寿命都很短;并且对于数据路径来说,第一、在数据路径下创建的对象不满足上述两个假设;第二、创建大量的对象;第三、在同一代创建的对象的生命周期也基本上一样。有鉴于此,基于典型的数据密集型***在控制路径和数据路径之间具有明显的区别,将JVM堆划分为控制空间和数据空间,然后对不同空间的堆分别基于不同的垃圾回收算法进行垃圾回收,从而使GC算法能够启发式地适应大数据***的对象特征,实现对大数据***中的大量对象的高效处理,并保留托管语言的好处。
本实施例中,JVM堆具体的划分过程可以包括:当JVM启动时,根据JVM堆内存的存储空间大小确定出相应的虚拟地址空间;将所述虚拟地址空间划分为控制空间和数据空间。可以理解的是,当JVM启动时,控制操作***根据用户指定的JVM堆的大小保留一个虚拟地址空间,然后将所述虚拟地址空间划分为控制空间和数据空间,控制空间和数据空间之间的划分比例由用户通过JVM参数指定。控制操作***提交少量内存,如果初始空间用完,内存将会增加。
步骤S13:在所述控制空间中分配在控制路径下创建的对象,并在所述控制空间中基于预设分代回收算法进行垃圾回收。
本实施例中,将JVM堆内存划分为控制空间和数据空间之后,在所述控制空间中分配在控制路径下创建的对象,并在所述控制空间中基于预设分代回收算法进行垃圾回收。可以理解的是,在控制路径中创建的对象在控制空间中分配,并且在控制空间中基于分代的算法(预设分代回收算法)进行内存管理。
本实施例中,所述在所述控制空间中基于预设分代回收算法进行垃圾回收,参见图2所示,具体可以包括:将所述控制空间划分为新生代和老年代;所述新生代表示存放生命周期比较短的对象的空间,所述老年代表示存放生命周期比较长的对象的空间;对于所述新生代的对象,利用预设复制算法进行垃圾回收;对于所述老年代的对象,利用预设标记整理算法进行垃圾回收。可以理解的是,预设分代回收算法是将控制空间划分为新生代和老年代,然后针对新生代的对象,采取灵活比例的复制算法,只需要复制少量存活对象就可以完成垃圾回收;并且针对老年代的对象,采取标记整理算法进行垃圾回收。需要指出的是,所有数据刚被分配时都会被标记为新生代对象,在垃圾回收过程中会将所有能够从老年代对象访问到的新生代对象标记为老年代,并回收剩余的新生代对象。
步骤S14:在所述数据空间中分配在数据路径下创建的对象,并在所述数据空间中基于预设区域回收算法进行垃圾回收。
本实施例中,将JVM堆内存划分为控制空间和数据空间之后,在所述数据空间中分配在数据路径下创建的对象,并在所述数据空间中基于预设区域回收算法进行垃圾回收。可以理解的是,在数据路径中创建的对象在数据空间中分配,并在数据空间中基于区域的算法(预设区域回收算法)进行内存管理。
本实施例中,所述在所述数据空间中基于预设区域回收算法进行垃圾回收,参见图3所示,具体可以包括:在每一个Epoch的开始阶段时,在所述数据空间中创建相应的区域;其中,所述Epoch表示数据转换代码块的执行过程,所述区域包含在所述Epoch内创建的所有对象;从GC Roots开始对所述区域中的所有对象进行遍历,并确定出未被遍历到的对象;所述GC Roots表示正在运行的程序中的基本对象;将未被遍历到的所述对象判定为不可达对象,并将所述不可达对象标记为垃圾以进行垃圾回收。可以理解的是,在一个Epoch开始,就会在数据空间中创建一个区域,该区域包含一个页面列表,该区域大小可以由JVM参数指定,也就是说,针对数据空间,在每一个Epoch的开始阶段时,在数据空间中进行区域的创建和回收从而完成垃圾回收,该区域包含了在一个Epoch内创建的所有对象,将每个区域看作节点,两个区域之间的引用关系看作路径。从GC Roots开始,对区域中的对象进行遍历,如果某个对象没有被遍历到,则说明该对象不可达,不可达则是垃圾,对其进行垃圾标记,然后进行垃圾回收,并且在每一个Epoch的结束阶段也进行区域的创建和回收从而完成垃圾回收。
需要指出的是,从GC Roots往下查找其引用对象,所述引用对象可以包括:虚拟机栈(栈帧中的本地变量表)中引用的对象、方法区中类静态属性引用的对象、方法区中常量引用的对象以及本地方法栈中引用的对象。并且,在使用基于区域的算法对数据空间进行垃圾回收时需要管理和跟踪数据空间中的对象,即为所述区域中的每个所述对象添加预设字节的字段以记录所述对象的区域信息,然后在所述数据空间中分配在数据路径下创建的对象的过程中,将所述对象的所述字段更新为对应的目标区域信息。其中,所述为所述区域中的每个所述对象添加预设字节的字段以记录所述对象的区域信息,具体可以包括:对于所述区域中的每个所述对象,在所述对象的头部空间中添加预设字节的字段以记录所述对象的区域信息,以及所述将所述对象的所述字段更新为对应的目标区域信息,具体可以包括:将所述对象的所述字段更新为对应的目标区域标识号。例如,参见图4所示,在每个对象的头部空间中添加一个4字节的字段以记录对象的区域信息,在对象分配时,其字段被更新为对应的区域ID((Identity Document,身份标识号)。需要指出的是,控制空间使用特殊ID,并且,可以通过修改写屏障代码以检测和记录数据空间内的对象。
可见,本发明实施例中,获取JVM的内存运行状态参数,并判断所述内存运行状态参数是否达到预设阈值;如果所述内存运行状态参数达到所述预设阈值,则通过JVM触发相应的垃圾回收程序,并将JVM堆内存划分为控制空间和数据空间;在所述控制空间中分配在控制路径下创建的对象,并在所述控制空间中基于预设分代回收算法进行垃圾回收;在所述数据空间中分配在数据路径下创建的对象,并在所述数据空间中基于预设区域回收算法进行垃圾回收。由此可知,本发明通过将JVM堆划分为控制空间和数据空间,然后对控制空间和数据空间的堆分别基于预设分代回收算法和基于预设区域回收算法进行垃圾回收,也就是说,将JVM堆划分为控制空间和数据空间,然后针对不同空间的堆,利用不同的垃圾回收算法分别进行垃圾回收,从而能够减少传统分代JVM垃圾回收的开销,提高内存管理的性能。
例如,参见图5所示,当内存运行状态参数达到预设阈值时,则通过JVM触发垃圾回收程序,在垃圾回收程序运行的过程中,JVM堆被划分为控制空间和数据空间,在控制路径中创建的对象在控制空间中分配,并在控制空间中基于分代的算法进行内存管理,在数据路径中创建的对象在数据空间中分配,并在数据空间中基于区域的算法进行内存管理。
相应的,本发明实施例还公开了一种JVM垃圾回收装置,参见图6所示,该装置包括:
参数获取模块11,用于获取JVM的内存运行状态参数;
判断模块12,用于判断所述内存运行状态参数是否达到预设阈值;
堆内存划分模块13,用于在所述内存运行状态参数达到所述预设阈值时,则通过JVM触发相应的垃圾回收程序,并将JVM堆内存划分为控制空间和数据空间;
第一垃圾回收模块14,用于在所述控制空间中分配在控制路径下创建的对象,并在所述控制空间中基于预设分代回收算法进行垃圾回收;
第二垃圾回收模块15,用于在所述数据空间中分配在数据路径下创建的对象,并在所述数据空间中基于预设区域回收算法进行垃圾回收。
由上可见,本发明实施例中通过将JVM堆划分为控制空间和数据空间,然后对控制空间和数据空间的堆分别基于预设分代回收算法和基于预设区域回收算法进行垃圾回收,从而能够减少传统分代JVM垃圾回收的开销,提高内存管理的性能。
在一些具体的实施例中,所述堆内存划分模块13,具体可以包括:
虚拟地址空间确定子模块,用于当JVM启动时,根据JVM堆内存的存储空间大小确定出相应的虚拟地址空间;
第一空间划分子模块,用于将所述虚拟地址空间划分为控制空间和数据空间。
在一些具体的实施例中,所述第一垃圾回收模块14,具体可以包括:
第二空间划分子模块,用于将所述控制空间划分为新生代和老年代;所述新生代表示存放生命周期比较短的对象的空间,所述老年代表示存放生命周期比较长的对象的空间;
新生代回收子模块,用于对于所述新生代的对象,利用预设复制算法进行垃圾回收;
老年代回收子模块,用于对于所述老年代的对象,利用预设标记整理算法进行垃圾回收。
在一些具体的实施例中,所述第二垃圾回收模块15,具体可以包括:
区域创建子模块,用于在每一个Epoch的开始阶段时,在所述数据空间中创建相应的区域;其中,所述Epoch表示数据转换代码块的执行过程,所述区域包含在所述Epoch内创建的所有对象;
对象遍历子模块,用于从GC Roots开始对所述区域中的所有对象进行遍历,并确定出未被遍历到的对象;所述GC Roots表示正在运行的程序中的基本对象;
不可达对象回收子模块,用于将未被遍历到的所述对象判定为不可达对象,并将所述不可达对象标记为垃圾以进行垃圾回收。
在一些具体的实施例中,所述第二垃圾回收模块15,具体还可以包括:
字段添加子模块,用于为所述区域中的每个所述对象添加预设字节的字段以记录所述对象的区域信息;
在一些具体的实施例中,所述第二垃圾回收模块15,具体还可以包括:
字段更新子模块,用于在所述数据空间中分配在数据路径下创建的对象的过程中,将所述对象的所述字段更新为对应的目标区域信息。
在一些具体的实施例中,所述字段添加子模块,具体可以包括:
字段添加单元,用于对于所述区域中的每个所述对象,在所述对象的头部空间中添加预设字节的字段以记录所述对象的区域信息。
在一些具体的实施例中,所述字段更新子模块,具体可以包括:
字段更新单元,用于将所述对象的所述字段更新为对应的目标区域标识号。
进一步的,本发明实施例还提供了一种电子设备。图7是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本发明的使用范围的任何限制。
图7为本发明实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的JVM垃圾回收方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本发明技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作***221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
其中,操作***221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的JVM垃圾回收方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的JVM垃圾回收方法步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种JVM垃圾回收方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种JVM垃圾回收方法,其特征在于,包括:
获取JVM的内存运行状态参数,并判断所述内存运行状态参数是否达到预设阈值;
如果所述内存运行状态参数达到所述预设阈值,则通过JVM触发相应的垃圾回收程序,并将JVM堆内存划分为控制空间和数据空间;
在所述控制空间中分配在控制路径下创建的对象,并在所述控制空间中基于预设分代回收算法进行垃圾回收;
在所述数据空间中分配在数据路径下创建的对象,并在所述数据空间中基于预设区域回收算法进行垃圾回收。
2.根据权利要求1所述的JVM垃圾回收方法,其特征在于,所述将JVM堆内存划分为控制空间和数据空间,包括:
当JVM启动时,根据JVM堆内存的存储空间大小确定出相应的虚拟地址空间;
将所述虚拟地址空间划分为控制空间和数据空间。
3.根据权利要求1所述的JVM垃圾回收方法,其特征在于,所述在所述控制空间中基于预设分代回收算法进行垃圾回收,包括:
将所述控制空间划分为新生代和老年代;所述新生代表示存放生命周期比较短的对象的空间,所述老年代表示存放生命周期比较长的对象的空间;
对于所述新生代的对象,利用预设复制算法进行垃圾回收;
对于所述老年代的对象,利用预设标记整理算法进行垃圾回收。
4.根据权利要求1至3任一项所述的JVM垃圾回收方法,其特征在于,所述在所述数据空间中基于预设区域回收算法进行垃圾回收,包括:
在每一个Epoch的开始阶段时,在所述数据空间中创建相应的区域;其中,所述Epoch表示数据转换代码块的执行过程,所述区域包含在所述Epoch内创建的所有对象;
从GC Roots开始对所述区域中的所有对象进行遍历,并确定出未被遍历到的对象;所述GC Roots表示正在运行的程序中的基本对象;
将未被遍历到的所述对象判定为不可达对象,并将所述不可达对象标记为垃圾以进行垃圾回收。
5.根据权利要求4所述的JVM垃圾回收方法,其特征在于,还包括:
为所述区域中的每个所述对象添加预设字节的字段以记录所述对象的区域信息;
相应的,在所述数据空间中分配在数据路径下创建的对象的过程中,还包括:
将所述对象的所述字段更新为对应的目标区域信息。
6.根据权利要求5所述的JVM垃圾回收方法,其特征在于,所述为所述区域中的每个所述对象添加预设字节的字段以记录所述对象的区域信息,包括:
对于所述区域中的每个所述对象,在所述对象的头部空间中添加预设字节的字段以记录所述对象的区域信息。
7.根据权利要求5所述的JVM垃圾回收方法,其特征在于,所述将所述对象的所述字段更新为对应的目标区域信息,包括:
将所述对象的所述字段更新为对应的目标区域标识号。
8.一种JVM垃圾回收装置,其特征在于,包括:
参数获取模块,用于获取JVM的内存运行状态参数;
判断模块,用于判断所述内存运行状态参数是否达到预设阈值;
堆内存划分模块,用于在所述内存运行状态参数达到所述预设阈值时,则通过JVM触发相应的垃圾回收程序,并将JVM堆内存划分为控制空间和数据空间;
第一垃圾回收模块,用于在所述控制空间中分配在控制路径下创建的对象,并在所述控制空间中基于预设分代回收算法进行垃圾回收;
第二垃圾回收模块,用于在所述数据空间中分配在数据路径下创建的对象,并在所述数据空间中基于预设区域回收算法进行垃圾回收。
9.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至7任一项所述的JVM垃圾回收方法的步骤。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的JVM垃圾回收方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311787133.3A CN117742894A (zh) | 2023-12-22 | 2023-12-22 | 一种jvm垃圾回收方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311787133.3A CN117742894A (zh) | 2023-12-22 | 2023-12-22 | 一种jvm垃圾回收方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117742894A true CN117742894A (zh) | 2024-03-22 |
Family
ID=90254422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311787133.3A Pending CN117742894A (zh) | 2023-12-22 | 2023-12-22 | 一种jvm垃圾回收方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117742894A (zh) |
-
2023
- 2023-12-22 CN CN202311787133.3A patent/CN117742894A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7310718B1 (en) | Method for enabling comprehensive profiling of garbage-collected memory systems | |
EP0993634B1 (en) | Method and apparatus for managing hashed objects | |
US9116798B2 (en) | Optimized memory management for class metadata | |
US6493730B1 (en) | Efficient object faulting with generational garbage collection | |
CN1321377C (zh) | 智能卡存储环境的控制方法 | |
US10909029B2 (en) | Managing memory in a computer system | |
WO2006124142A2 (en) | Implementation for collecting unmanaged memory | |
US7822938B2 (en) | System and method for performing garbage collection based on unmanaged memory allocations | |
US10761936B2 (en) | Versioned records management using restart era | |
US20090228537A1 (en) | Object Allocation System and Method | |
US11474832B2 (en) | Intelligently determining a virtual machine configuration during runtime based on garbage collection characteristics | |
CN113742058A (zh) | 管理堆外内存的方法和装置 | |
CN117742894A (zh) | 一种jvm垃圾回收方法、装置、设备及介质 | |
CN114880138A (zh) | 一种基于共享内存池的高性能数据模型访问方法和装置 | |
US20210397549A1 (en) | Efficient continuation stack storage in languages with a garbage collector | |
KR20140009422A (ko) | 메모리 관리를 위한 동시 마킹 및 동시 스위핑을 이용한 보존적인 불용 정보 수집 | |
US20080034022A1 (en) | System and method for updating references when incrementally compacting a heap | |
CN112100022A (zh) | 一种安卓***上监测Java对象内存泄漏时即时记录对象分配点的方法 | |
Tasneem et al. | Android memory optimization | |
US7269705B1 (en) | Memory space management for object-based memory system | |
US12019541B2 (en) | Lazy compaction in garbage collection | |
CN117009439B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113836051B (zh) | 一种元数据空间回收方法、装置、设备及存储介质 | |
Lindgren | Atom garbage collection | |
CN118227514A (zh) | 一种内存管理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |