掌桥专利:专业的专利平台
掌桥专利
首页

大数据引擎内存管理方法及装置

文献发布时间:2023-06-19 19:20:08


大数据引擎内存管理方法及装置

技术领域

本发明涉及大数据存储技术领域,尤其涉及一种大数据存储方法、引擎内存管理模型、方法及装置。

背景技术

目前,大数据计算引擎主要用Java或是基于JVM(Java Virtual Machine)的编程语言实现的,例如Apache Hadoop、Apache Spark、Apache Drill、Apache Flink等。Java语言的好处在于程序员不需要太关注底层内存资源的管理,因为JVM提供自动的内存开辟、销毁、回收等机制,大大的方便了软件的开发,使开发人员可以专注于业务逻辑。

但是在大数据应用场景中,大数据计算引擎往往处理的数据量巨大,单纯依靠JVM在内存中缓存和高效处理数据就会出现很多问题。在大数据场景下,JVM内存管理的不足之处:JVM的对象的内存有效利用率较低;垃圾回收(GC,Garbage Collection)耗时长,严重影响交互效率;OutOfMemoryError错误频发,导致JVM崩溃,严重影响系统的正常运行等。

发明内容

本发明提供一种大数据引擎内存管理方法及装置,用以解决现有技术中存在的问题。

本发明提供一种大数据引擎内存管理方法,包括:

初始化网络管理器,以供网络缓存池生成预设数量的内存段;

基于任务执行线程创建缓冲池,并设定所述内存段的申请上限;

接收所述内存段的申请信息,并基于所述申请信息分配所述内存段,且当所述缓冲池中没有可用内存段且所述内存段的申请数量小于所述申请上限,则向所述网络缓存池申请所述内存段;当所述内存段的申请数量大于所述申请上限或所述网络缓存池没有可用内存段,则停止所述任务执行线程;

其中,在大数据引擎内存管理模型上执行所述大数据引擎内存管理方法。

根据本发明提供的一种大数据引擎内存管理方法,所述方法还包括:当所述内存段消费完成后,将所述内存段释放回所述缓冲池。

根据本发明提供的一种大数据引擎内存管理方法,所述方法还包括:当所述内存段的申请数量大于所述申请上限,则将所述缓冲池中的内存段释放回所述网络缓存池。

根据本发明提供的一种大数据引擎内存管理方法,在执行所述初始化网络管理器之前,还包括:将待处理数据写入内存段,所述将待处理数据写入内存段,具体包括:基于待处理数据类型加载对应的序列化器;利用所述序列化器对所述待处理数据进行序列化操作,得到二进制数据;将所述二进制数据写入内存段。

根据本发明提供的一种大数据引擎内存管理方法,所述大数据引擎内存管理模型包括:堆内存区,所述堆内存区包括引擎堆上内存区和任务堆上内存区。

根据本发明提供的一种大数据引擎内存管理方法,所述大数据引擎内存管理模型还包括:堆外内存区,所述堆外内存区包括引擎堆外内存区、任务堆外内存区、网络缓冲内存区、管理内存区、JVM元空间以及JVM执行开销区。

根据本发明提供的一种大数据引擎内存管理方法,所述任务堆上内存区包括:网络缓存池、内存资源管理池以及预留堆内存区。

本发明还提供一种大数据引擎内存管理装置,包括:

初始化模块,用于:初始化网络管理器,以供网络缓存池生成预设数量的内存段;

创建模块,用于:基于任务执行线程创建缓冲池,并设定所述内存段的申请上限;

分配模块,用于:接收所述内存段的申请数量,并基于所述申请信息分配所述内存段,且当所述缓冲池中没有可用内存段且所述申请数量小于所述申请上限,则向所述网络缓存池申请所述内存段;当所述申请数量大于所述申请上限或所述网络缓存池没有可用内存段,则停止所述任务执行线程;其中,在大数据引擎内存管理模型上执行所述大数据引擎内存管理方法。

本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述大数据引擎内存管理方法的步骤。

本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述大数据引擎内存管理方法的步骤。

本发明提供的大数据引擎内存管理方法及装置,通过基于任务执行线程创建输入缓冲池和输出缓冲池,利用上述缓冲池与网络缓存池进行连接,使内存段形成二级缓存处理,同时,输入缓冲池与输出缓冲池的生命周期与任务管理器的产生与销毁保持同步,从而使的缓冲池中内存段不会被执行垃圾回收过程。基于此,减少了系统内存的Full GC(对整个堆上内存区进行扫描并进行内存回收)时间,提高系统运行效率。

附图说明

为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明提供的大数据引擎内存管理方法的流程示意图;

图2是本发明提供的内存段的数据写入示意图;

图3是本发明提供的大数据引擎内存管理模型的结构示意图;

图4是本发明提供的网络传输中内存管理示意图;

图5是本发明提供的大数据引擎内存管理装置的结构示意图;

图6是本发明提供的电子设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是本发明提供的大数据引擎内存管理方法的流程示意图,如图1所示,所述方法包括:

S110,初始化网络管理器,以供网络缓存池生成预设数量的内存段;

S120,基于任务执行线程创建缓冲池,并设定所述内存段的申请上限;

S130,接收所述内存段的申请信息,并基于所述申请信息分配所述内存段,且当所述缓冲池中没有可用内存段且所述内存段的申请数量小于所述申请上限,则向所述网络缓存池申请所述内存段;当所述内存段的申请数量大于所述申请上限或所述网络缓存池没有可用内存段,则停止所述任务执行线程;

其中,在大数据引擎内存管理模型上执行所述大数据引擎内存管理方法。

需要说明的是,任务管理器启动时,对应的初始化网络管理器,该网络管理器会对网络缓存池进行管理,网络缓存池在网络管理器的指示下生成一定数量的内存段,默认数量为2048,内存段的数量代表网络传输中所有可用的内存。

任务执行线程启动时,该线程向网络管理器中注册,然后网络管理器基于任务执行线程创建缓冲池,缓冲池分为输入缓冲池和输出缓冲池,同时分别设定内存段的申请上限。

任务执行过程中,以任务输入为例,当数据接收端接收到数据时,为了将数据拷贝到任务中,任务输入线程会向输入缓冲池中申请内存段,如果输入缓冲池中也没有可用的内存段且申请数量还没有达到输入缓冲池的上限,则向网络缓存池申请内存段,将申请到的内存段交给任务输入线程用于填充数据;当内存段的申请数量大于输入缓冲池的申请上限或网络缓存池中已经没有可用内存段,则停止任务执行线程。

本发明提供的大数据引擎内存管理方法,通过基于任务执行线程创建输入缓冲池和输出缓冲池,利用上述缓冲池与网络缓存池进行连接,使内存段形成二级缓存处理,同时,输入缓冲池与输出缓冲池的生命周期与任务管理器的产生与销毁保持同步,从而使的缓冲池中内存段不会被执行垃圾回收过程。基于此,减少了系统内存的Full GC(对整个堆上内存区进行扫描并进行内存回收)时间,提高系统运行效率。

根据本发明提供的大数据引擎内存管理方法,在本发明中,所述方法还包括:当所述内存段消费完成后,将所述内存段释放回所述缓冲池;当所述内存段的申请数量大于所述申请上限,则将所述缓冲池中的内存段释放回所述网络缓存池。

需要说明的是,当内存段消费完成后,即利用内存段执行完成任务输入或任务输出动作后,将内存段释放回缓冲池,以便于将该内存段再次用于下一个任务执行进程;当内存段的申请数量大于申请上限时,说明对于内存段的需求量已经超过输入缓冲池或输出缓冲池中的申请上限,此时需要向网络缓存池进行再次内存段申请,故为了确保网络缓存池中内存段数量充足,将缓冲池中的内存段释放回网络缓存池。

本发明提供的大数据引擎内存管理方法,通过设定内存段的释放回收机制,即当内存段消费完成时,将内存段释放回缓冲池,当内存段申请数量大于申请上限时,将缓冲池中内存段释放回网络缓存池,基于以上过程,实现了对于内存段的循环利用和合理调配,提高了内存段的复用率和利用率。

根据本发明提供的大数据引擎内存管理方法,在本发明中,在执行所述初始化网络管理器之前,还包括:将待处理数据写入内存段,所述将待处理数据写入内存段,具体包括:

基于待处理数据类型加载对应的序列化器;

利用所述序列化器对所述待处理数据进行序列化操作,得到二进制数据;

将所述二进制数据写入内存段。

需要说明的是,对数据进行序列化处理指的是将数据结构和对象转换为二进制的过程,而因为数据类型的不同会对应有不同的序列化转换器,具体包括以下几种:任意的java基本类型(装箱的)或者String类型;任意Java基本类型的数组(装箱的)或者String数组;任意Hadoop Writable接口的实现类;任意的元组Tuple类型(支持Tuple1 toTuple25);任意的Scala CaseClass类型以及任意POJO类型。

当将待处理数据利用对应的序列化器转换为二进制数据后,将得到的二进制数据写入内存段,进行存储。在本发明中,以内存段作为大数据引擎的最小内存分配单元,默认大小为32KB;为了便于对内存段进行管理,引入内存页的概念,内存页表示内存段之上的数据访问视图,将数据写入抽象为数据输出视图,对应地,将数据读取抽象为数据输入视图。内存段和内存页均由内存管理器进行管理。

在将数据写入内存段之前,需要将数据结构或者对象进行序列化,序列化就是将数据结构和对象转换为二进制的过程。由于数据集对象的类型固定,对于数据集可以只保存一份Schema信息,对于固定大小的类型,可以通过固定的偏移位置进行存取,这样可以节省大量的存储空间。并且,当我们需要访问某个成员变量的时候,并不需要反序列化整个Java对象,可以直接通过偏移量,只反序列化特定的成员变量。对于成员变量较多的对象,能够大大减少Java对象的创建开销和内存数据拷贝的大小。

本发明提供的大数据引擎内存管理方法,通过将数据进行序列化处理存储到内存段中,减少了空间消耗,提高了对象的存储密度。与此同时,通过内存页实现对内存段写入和读取的有序管理,基于此提高数据访问的效率,减少Java对象的创建开销和内存数据拷贝的大小。

根据本发明提供的大数据引擎内存管理方法,在本发明中,所述大数据引擎内存管理模型包括:堆内存区,所述堆内存区包括引擎堆上内存区和任务堆上内存区。

需要说明的是,引擎堆上内存区用于提供大数据计算引擎框架运行使用的内存,而任务堆上内存区用于提供执行用户任务代码时使用的堆上内存。在本发明中,将堆内存区按照实际需求进行了进一步的细化分区,实现对堆内存区的预分配,对内存区的使用进行提前规划。

本发明提供的大数据引擎内存管理方法,通过将堆内存区划分为引擎堆上内存区和任务堆上内存区,实现对堆内存区的预先分配,保证内存用途得到规划,避免内存冲突,使堆内存区的内存最大程度上发挥其存储能力。

根据本发明提供的大数据引擎内存管理方法,在本发明中,所述大数据引擎内存管理模型还包括:堆外内存区,所述堆外内存区包括引擎堆外内存区、任务堆外内存区、网络缓冲内存区、管理内存区、JVM元空间以及JVM执行开销区。

需要说明的是,引擎堆外内存区用于提供大数据引擎框架使用的堆外内存,任务堆外内存区用于提供执行用户任务代码所使用的堆外内存,网络缓冲内存区用于提供网络交换所使用的堆外内存大小,以便网络数据交换使用,管理内存区用于提供大数据引擎管理的堆外内存,可以用于排序、哈希表、缓存中间结果等;JVM本身使用的内存:JVM元空间和JVM执行开销区,JVM执行时自身需要的内存,包括线程堆栈、IO、编译缓存等使用的内存。

本发明提供的大数据引擎内存管理方法,通过将堆区划分为堆内存区和堆外内存区,并将堆外内存区具体划分为引擎堆外内存区、任务堆外内存区、网络缓冲内存区、管理内存区、JVM元空间以及JVM执行开销区,极大地减小了堆内存区,从而减小了JVM的启动时间;与此同时,在JVM出现故障时,有赖于该特殊的内存管理模型,仅堆上内存区会受到影响,对外内存区不受影响亦不会丢失数据,可以用来进行故障恢复。综上,对外内存区的设置可以大大减少大数据场景下垃圾回收的消耗,提高内存利用效率。

根据本发明提供的大数据引擎内存管理方法,在本发明中,所述任务堆上内存区包括:网络缓存池、内存资源管理池以及预留堆内存区。

需要说明的是,当任务进程启动时,任务堆上内存区会分为三部分,分别为网络缓存池、内存资源管理池以及预留堆内存区,其中:

网络缓存池:由一定数量的32KB的内存段构成的Buffer,主要用于网络传输,任务管理器在启动的时候会对其分配内存段,默认是2048个。

内存资源管理池:由很多个内存段组成的超大集合,且该内存资源管理池由内存管理器进行管理。在大数据引擎的算子如sort、shuffle、join中会向这个内存申请内存段,然后将序列化后数据存于其中,使用完之后将内存释放回内存池。

预留堆内存区:预留堆内存区中的内存留给用户代码和任务管理器本身运行的数据结构使用,这些数据结构一般都很小,足够给用户代码使用,从JVM垃圾回收的角度来看,这里属于新生代,也就是说这里是用户代码生成的短对象。

本发明提供的大数据引擎内存管理方法,通过在任务进程启动时,通过将任务堆上内存具体划分为网络缓存池、内存资源管理池以及预留堆内存区,实现了对任务堆上内存区的进一步划分,为在任务进程中的内存段的调配提供结构基础,确保大数据引擎内存管理方法中利用网络缓存池-缓冲池管理机制对内存段管理的顺利进行。

图2是本发明提供的内存段的数据写入示意图,如图2所示,内存段的数据写入过程如下:

图中所示元组(Tuple)由三个元素构成,三个元素分别是整型int、double、对象类型(Person),在Person对象中包含了一个整形变量和一个字符串变量,根据数据类型不同将变量序列化为二进制数据,然后写入内存段。具体为:利用整型序列化器将整型int执行序列化,得到4字节二进制数据,利用双精度序列化器将double执行序列化,得到8字节二进制数据,利用对象类型序列化器将Person执行序列化,得到1字节二进制数据,利用整型序列化器将int执行序列化,得到4字节二进制数据,利用字符串序列化器将字符串执行序列化,得到可变长度字节的序列化数据。

在大数据引擎计算中经常进行聚合(group)、排序(sort)、关联(join)等操作,这些计算需要访问海量数据,下面以排序为例说明如何进行二进制数据的操作。

首先,大数据引擎会向内存管理器申请一批内存段,这些内存段将作为排序的缓存,用来存放排序的数据。排序缓存被分成两块区域:一块区域用来存放所有对象完整的二进制数据。另一块区域用来存放二进制数据的指针以及定长数据类型的序列化后的排序关键字。如果序列化的排序关键字是变长类型,如String,则会取其前缀序列化。

将实际数据和指针加定长变量的关键字分开存放具有以下优点:①交换定长数据块更高效,不用交换真实的数据也不用移动其他的排序关键字和指针。②所有排序key都是连续存储在内存中的,可以大大减少缓存命中问题。

排序的关键是比较大小和交换,先用排序关键字比较大小,这样就可以直接用二进制的排序关键字比较而不需要反序列化出整个对象。因为排序关键字是定长的,如果关键字相同,那就是必须将真实的二进制数据反序列化后,再做比较。比较大小之后,只需要交换排序关键字和指针就可以达到排序的效果,真实数据不需要移动。

本发明提供的大数据引擎内存管理方法,通过基于不同的数据类型选用不同的序列化器,利用对应的序列化器执行对数据的序列化操作,得到对应的二进制数据,基于此,减少了空间消耗,提高了对象的存储密度,同时方便大数据计算中的聚合、排序、关联等操作,提高操作效率。

图3是本发明提供的大数据引擎内存管理模型的结构示意图,如图3所示,所述大数据引擎内存管理模型包括:堆内存区和堆外内存区,堆内存区包括引擎堆上内存区和任务堆上内存区,堆外内存区包括引擎对外内存区、任务堆外内存区、网络缓冲内存区、管理内存区、JVM元空间以及JVM执行开销区。

需要说明的是,在本发明中,大数据引擎内存管理模型是针对于JVM内存空间上堆区的划分,在JVM所管理的内存中,堆区是最大的一块,堆区也是Java GC(GC,GarbageCollection)机制所管理的主要内存区域,堆区由所有线程共享,在虚拟机启动时创建,堆区用来存储对象实例及数组值,可以认为java中所有通过new创建的对象都在此分配。

本发明提供的大数据引擎内存管理方法,通过将堆内存区划分为引擎堆上内存区和任务堆上内存区,基于此实现对堆内存区的预分配,保证内存用途得到规划,避免内存冲突。同时在内存管理模型中引入堆外内存区,在堆外内存区中划分了引擎堆外内存区、任务堆外内存区、网络缓冲内存区、管理内存区等。引入堆外内存区可以极大的减小堆内存区,从而减少JVM的启动时间。堆外内存区在斜侧盘或网络传输的时候是zero-copy,而堆内存区至少需要copy一次。JVM出现故障时,仅堆内存区会受到影响,堆外内存区不会丢失数据,可以用来故障恢复。综上,对外内存区的设置可以大大减少大数据场景下垃圾回收的消耗,提高内存利用效率。

图4是本发明提供的网络传输中内存管理示意图,如图4所示,大数据引擎的任务算子之间在网络层面传输数据,使用的是内存Buffer,内存Buffer的申请和释放都由大数据引擎自己管理,内存Buffer是以内存段为单位的,大数据引擎使用Buffer资源池管理Buffer,包含Buffer的申请、释放、销毁、可用Buffer的通知。每个Task都拥有自己的Buffer资源池,而大数据引擎必须依托于大数据集群,大数据任务运行过程中,集群各节点之间会进行频繁的数据交换,图6中黑色长方形代表内存段,Buffer是对内存段的封装。每个任务都包含输入和输出,输入和输出的数据都存在Buffer中。

在任务管理器启动时,初始化网络管理器,任务管理器中所有与网络相关的东西都由网络管理器管理,其中包括网络缓存池,网络缓存池会生成一定数量(默认是2048)的内存段,内存段的数量代表网络传输中所有可用的内存。

任务执行线程启动时,会向网络管理器注册,网络管理器分别为输入和输出创建一个缓冲池,并设置可供申请的内存段的数量。缓冲池的内存是动态分配的,每当创建或销毁缓冲池时,网络缓存池会计算空闲内存的内存块数量,并平均分配给网络管理器所创建的缓冲池,尽可能的让缓存池利用上内存,因为内存越多,系统可以更轻松的应对瞬间压力。

任务执行过程中,当接收端接收到数据时,为了将数据拷贝到任务中,任务输入线程会向相应的缓冲池申请内存,如果缓冲池中也没有可用的内存段且申请数量还没有达到缓冲池上限,则向网络缓存池申请内存段,将申请到的内存段交给任务输入线程或任务输出线程,用于填充数据。如果缓冲池已申请达到上限或者网络缓存池没有可用内存段,这时候任务暂停读取,上游发送端立即响应停止发送,拓扑进入反压状态。当一个内存段被消费完之后,内存段被释放还给缓冲池,如果缓冲池当前申请的数量超过缓冲池容量,则缓冲池将内存段回收给网络缓存池。

本发明提供的大数据引擎内存管理方法,通过基于任务执行线程创建输入缓冲池和输出缓冲池,利用上述缓冲池与网络缓存池进行连接,使内存段形成二级缓存处理,同时,输入缓冲池与输出缓冲池的生命周期与任务管理器的产生与销毁保持同步,从而使的缓冲池中内存段不会被执行垃圾回收过程。基于此,减少了系统内存的Full GC时间,减轻系统运行压力。

图5是本发明提供的大数据引擎内存管理装置的结构示意图,如图5所示,所述装置包括:

初始化模块510,用于:初始化网络管理器,以供网络缓存池生成预设数量的内存段;

创建模块520,用于:基于任务执行线程创建缓冲池,并设定所述内存段的申请上限;

分配模块530,用于:接收所述内存段的申请数量,并基于所述申请信息分配所述内存段,且当所述缓冲池中没有可用内存段且所述申请数量小于所述申请上限,则向所述网络缓存池申请所述内存段;当所述申请数量大于所述申请上限或所述网络缓存池没有可用内存段,则停止所述任务执行线程;其中,在大数据引擎内存管理模型上执行所述大数据引擎内存管理方法。

本发明提供的大数据引擎内存管理装置,通过基于任务执行线程创建输入缓冲池和输出缓冲池,利用上述缓冲池与网络缓存池进行连接,使内存段形成二级缓存处理,同时,输入缓冲池与输出缓冲池的生命周期与任务管理器的产生与销毁保持同步,从而使的缓冲池中内存段不会被执行垃圾回收过程。基于此,减少了系统内存的Full GC(对整个堆上内存区进行扫描并进行内存回收)时间,提高系统运行效率。

根据本发明提供的一种大数据引擎内存管理装置,在本发明中,所述装置500还包括释放模块540,所述释放模块540用于当所述内存段消费完成后,将所述内存段释放回所述缓冲池。

本发明提供的大数据引擎内存管理装置,通过设定内存段的释放回收机制,即当内存段消费完成时,将内存段释放回缓冲池,基于以上过程,实现了对于内存段的循环利用和合理调配,提高了内存段的复用率和利用率。

根据本发明提供的一种大数据引擎内存管理装置,在本发明中,所述装置500还包括判断模块550,所述判断模块550用于当所述内存段的申请数量大于所述申请上限,则将所述缓冲池中的内存段释放回所述网络缓存池。

本发明提供的大数据引擎内存管理装置,通过设定内存段的释放回收机制,当内存段申请数量大于申请上限时,将缓冲池中内存段释放回网络缓存池,基于以上过程,实现了对于内存段的循环利用和合理调配,提高了内存段的复用率和利用率。

根据本发明提供的一种大数据引擎内存管理装置,在本发明中,所述装置500还包括写入模块560,所述写入模块560用于在执行所述初始化网络管理器之前,还包括:将待处理数据写入内存段,所述将待处理数据写入内存段,具体用于:基于待处理数据类型加载对应的序列化器;利用所述序列化器对所述待处理数据进行序列化操作,得到二进制数据;将所述二进制数据写入内存段。

本发明提供的大数据引擎内存管理装置,通过将数据进行序列化处理存储到内存段中,减少了空间消耗,提高了对象的存储密度。与此同时,通过内存页实现对内存段写入和读取的有序管理,基于此提高数据访问的效率,减少Java对象的创建开销和内存数据拷贝的大小。

根据本发明提供的一种大数据引擎内存管理装置,在本发明中,所述装置500运行在大数据引擎内存管理模型上,所述大数据引擎内存管理模型包括:堆内存区,所述堆内存区包括引擎堆上内存区和任务堆上内存区。

本发明提供的大数据引擎内存管理装置,通过将堆内存区划分为引擎堆上内存区和任务堆上内存区,实现对堆内存区的预先分配,保证内存用途得到规划,避免内存冲突,使堆内存区的内存最大程度上发挥其存储能力。

根据本发明提供的一种大数据引擎内存管理装置,在本发明中,所述装置500运行在大数据引擎内存管理模型上,所述大数据引擎内存管理模型还包括:堆外内存区,所述堆外内存区包括引擎堆外内存区、任务堆外内存区、网络缓冲内存区、管理内存区、JVM元空间以及JVM执行开销区。

本发明提供的大数据引擎内存管理装置,通过将堆区划分为堆内存区和堆外内存区,并将堆外内存区具体划分为引擎堆外内存区、任务堆外内存区、网络缓冲内存区、管理内存区、JVM元空间以及JVM执行开销区,极大地减小了堆内存区,从而减小了JVM的启动时间;与此同时,在JVM出现故障时,有赖于该特殊的内存管理模型,仅堆上内存区会受到影响,对外内存区不受影响亦不会丢失数据,可以用来进行故障恢复。综上,对外内存区的设置可以大大减少大数据场景下垃圾回收的消耗,提高内存利用效率。

根据本发明提供的一种大数据引擎内存管理装置,在本发明中,所述装置500运行在大数据引擎内存管理模型上,所述大数据引擎内存管理模型上的所述任务堆上内存区包括:网络缓存池、内存资源管理池以及预留堆内存区。

本发明提供的大数据引擎内存管理装置,通过在任务进程启动时,通过将任务堆上内存具体划分为网络缓存池、内存资源管理池以及预留堆内存区,实现了对任务堆上内存区的进一步划分,为在任务进程中的内存段的调配提供结构基础,确保大数据引擎内存管理方法中利用网络缓存池-缓冲池管理机制对内存段管理的顺利进行。

图6示例了一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行大数据引擎内存管理方法,该方法包括:初始化网络管理器,以供网络缓存池生成预设数量的内存段;基于任务执行线程创建缓冲池,并设定所述内存段的申请上限;接收所述内存段的申请信息,并基于所述申请信息分配所述内存段,且当所述缓冲池中没有可用内存段且所述内存段的申请数量小于所述申请上限,则向所述网络缓存池申请所述内存段;当所述内存段的申请数量大于所述申请上限或所述网络缓存池没有可用内存段,则停止所述任务执行线程;其中,在大数据引擎内存管理模型上执行所述大数据引擎内存管理方法。

此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的大数据引擎内存管理方法,该方法包括:初始化网络管理器,以供网络缓存池生成预设数量的内存段;基于任务执行线程创建缓冲池,并设定所述内存段的申请上限;接收所述内存段的申请信息,并基于所述申请信息分配所述内存段,且当所述缓冲池中没有可用内存段且所述内存段的申请数量小于所述申请上限,则向所述网络缓存池申请所述内存段;当所述内存段的申请数量大于所述申请上限或所述网络缓存池没有可用内存段,则停止所述任务执行线程;其中,在大数据引擎内存管理模型上执行所述大数据引擎内存管理方法。

又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的大数据引擎内存管理方法,该方法包括:初始化网络管理器,以供网络缓存池生成预设数量的内存段;基于任务执行线程创建缓冲池,并设定所述内存段的申请上限;接收所述内存段的申请信息,并基于所述申请信息分配所述内存段,且当所述缓冲池中没有可用内存段且所述内存段的申请数量小于所述申请上限,则向所述网络缓存池申请所述内存段;当所述内存段的申请数量大于所述申请上限或所述网络缓存池没有可用内存段,则停止所述任务执行线程;其中,在大数据引擎内存管理模型上执行所述大数据引擎内存管理方法。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 一种内存管理方法、内存管理装置及终端设备
  • 一种非易失性内存储器的进程管理方法与装置
  • 一种数据处理、内存管理方法、装置、设备及介质
  • 一种大数据计算引擎内存管理方法
  • 一种周期性大数据处理的内存管理方法及装置
技术分类

06120115871147