G06F9/48
1.一种内存优化的队列方法,其特征在于,包括以下步骤:
在线程间通信的业务开始时,向队列进行节点申请,得到所述队列分配的 环形节点;所述环形节点为对所述队列的节点进行数组存储得到的、具有环形 链接结构的队列节点数组的节点;
根据所述环形节点对应的内存空间节点,取用内存空间,并对所述内存空 间进行内容写入;所述内存空间为根据预先申请的空间建立的由发送端和接收 端共用的内存区域;所述内存空间节点为在所述内存空间划分形成的、由所述 环形节点通过指针指向的节点;
在所述写入完成时,向所述队列提交所述内存空间节点;由所述队列将所 述内存空间节点压栈进入所述队列的尾指针部分。
2.根据权利要求1所述的内存优化的队列方法,其特征在于,还包括步骤:
由队列管理模块对所述队列的节点进行数组存储,得到环形链接结构的队 列节点数组;所述队列节点数组包含有各所述环形节点。
3.根据权利要求1或2所述的内存优化的队列方法,其特征在于,还包括 步骤:
由内存管理模块根据保护空间的内容,对所述内存空间进行跟踪维护;所 述保护空间为所述队列对所述内存空间节点添加的保护信息;所述保护空间包 括标志位信息。
4.一种内存优化的队列方法,其特征在于,包括以下步骤:
在进行线程间通信的内容读取时,从队列的尾指针部分出栈获取内存空间 节点;所述内存空间节点为在所述内存空间划分形成的、由环形节点通过指针 指向的节点;所述环形节点为对所述队列的节点进行数组存储得到的、具有环 形链接结构的队列节点数组的节点;
根据所述内存空间节点,读取写入相应内存空间的内容;所述内存空间为 根据预先申请的空间建立的由发送端和接收端共用的内存区域;
在所述读取完成时,向所述队列返还所述内存空间节点;由所述队列对所 述内存空间节点进行回收。
5.根据权利要求4所述的内存优化的队列方法,其特征在于,还包括步骤:
由队列管理模块对所述队列的节点进行数组存储,得到环形链接结构的队 列节点数组;所述队列节点数组包含有各所述环形节点。
6.根据权利要求4或5所述的内存优化的队列方法,其特征在于,还包括 步骤:
在所述队列对所述内存空间节点进行回收时,由内存管理模块对所述内存 空间节点进行尾部的标志位是否发生变化的检测;并在所述检测的结果为是时, 确定所述内存空间存在内存越界。
7.一种内存优化的队列系统,其特征在于,包括:
发送端申请模块,用于在线程间通信的业务开始时,向队列进行节点申请, 得到所述队列分配的环形节点;所述环形节点为对所述队列的节点进行数组存 储得到的、具有环形链接结构的队列节点数组的节点;
发送端写入模块,用于根据所述环形节点对应的内存空间节点,取用内存 空间,并对所述内存空间进行内容写入;所述内存空间为根据预先申请的空间 建立的由发送端和接收端共用的内存区域;所述内存空间节点为在所述内存空 间划分形成的、由所述环形节点通过指针指向的节点;
发送端提交模块,用于在所述写入完成时,向所述队列提交所述内存空间 节点;由所述队列将所述内存空间节点压栈进入所述队列的尾指针部分。
8.根据权利要求7所述的内存优化的队列系统,其特征在于,还包括:
队列管理模块,用于对所述队列的节点进行数组存储,得到环形链接结构 的队列节点数组;所述队列节点数组包含有各所述环形节点;
内存管理模块,用于根据保护空间的内容,对所述内存空间进行跟踪维护; 所述保护空间为所述队列对所述内存空间节点添加的保护信息;所述保护空间 包括标志位信息。
9.一种内存优化的队列系统,其特征在于,包括:
接收端获取模块,用于在进行线程间通信的内容读取时,从队列的尾指针 部分出栈获取内存空间节点;所述内存空间节点为在所述内存空间划分形成的、 由环形节点通过指针指向的节点;所述环形节点为对所述队列的节点进行数组 存储得到的、具有环形链接结构的队列节点数组的节点;
接收端读取模块,用于根据所述内存空间节点,读取写入相应内存空间的 内容;所述内存空间为根据预先申请的空间建立的由发送端和接收端共用的内 存区域;
接收端返还模块,用于在所述读取完成时,向所述队列返还所述内存空间 节点;由所述队列对所述内存空间节点进行回收。
10.根据权利要求9所述的内存优化的队列系统,其特征在于,还包括:
队列管理模块,用于对所述队列的节点进行数组存储,得到环形链接结构 的队列节点数组;所述队列节点数组包含有各所述环形节点;
内存管理模块,用于在所述队列对所述内存空间节点进行回收时,对所述 内存空间节点进行尾部的标志位是否发生变化的检测;并在所述检测的结果为 是时,确定所述内存空间存在内存越界。
本发明涉及线程间进行收发包通信的软件领域,特别是涉及一种内存优化 的队列方法和系统。
对于线程间通信,常见的是收发双方各自有本地的数据内存空间,通过公 共的消息队列进行交互。在消息队列的压栈、出栈过程,收发双方会对队列空 间进行读写的内存拷贝动作。在这种场景下,相同数据会在发送端、队列、接 收端有多份重复,期间伴随着内存的申请、释放,以及相应的拷贝动作。
在软件系统中,内存是重要的资源,内存使用过大将导致整体运行速度变 慢,甚至无法正常运行。内存的申请、释放动作,将导致大量的内存碎片,降 低内存的有效使用率及管理效率。内存拷贝动作,是常规队列中性能消耗较重 要的方面。大量拷贝,将影响队列的整体性能。常规的内存操作,界限自由, 存在越界访问的风险。内存越界,将导致程序崩溃。
传统技术中至少存在如下问题:对于线程间通信,常规的队列在内存使用 存在性能损耗,包括重复数据、内存碎片、拷贝操作的性能消耗。
基于此,有必要针对传统队列在内存使用中存在性能损耗的问题,提供一 种内存优化的队列方法和系统。
为了实现上述目的,本发明技术方案的实施例为:
一方面,提供了一种内存优化的队列方法,包括以下步骤:
在线程间通信的业务开始时,向队列进行节点申请,得到队列分配的环形 节点;环形节点为对队列的节点进行数组存储得到的、具有环形链接结构的队 列节点数组的节点;
根据环形节点对应的内存空间节点,取用内存空间,并对内存空间进行内 容写入;内存空间为根据预先申请的空间建立的由发送端和接收端共用的内存 区域;内存空间节点为在内存空间划分形成的、由环形节点通过指针指向的节 点;
在写入完成时,向队列提交内存空间节点;由队列将内存空间节点压栈进 入队列的尾指针部分。
一方面,还提供了一种内存优化的队列方法,包括以下步骤:
在进行线程间通信的内容读取时,从队列的尾指针部分出栈获取内存空间 节点;内存空间节点为在内存空间划分形成的、由环形节点通过指针指向的节 点;环形节点为对队列的节点进行数组存储得到的、具有环形链接结构的队列 节点数组的节点;
根据内存空间节点,读取写入相应内存空间的内容;内存空间为根据预先 申请的空间建立的由发送端和接收端共用的内存区域;
在读取完成时,向队列返还内存空间节点;由队列对内存空间节点进行回 收。
另一方面,提供了一种内存优化的队列系统,包括:
发送端申请模块,用于在线程间通信的业务开始时,向队列进行节点申请, 得到队列分配的环形节点;环形节点为对队列的节点进行数组存储得到的、具 有环形链接结构的队列节点数组的节点;
发送端写入模块,用于根据环形节点对应的内存空间节点,取用内存空间, 并对内存空间进行内容写入;内存空间为根据预先申请的空间建立的由发送端 和接收端共用的内存区域;内存空间节点为在内存空间划分形成的、由环形节 点通过指针指向的节点;
发送端提交模块,用于在写入完成时,向队列提交内存空间节点;由队列 将内存空间节点压栈进入队列的尾指针部分。
另一方面,还提供了一种内存优化的队列系统,包括:
接收端获取模块,用于在进行线程间通信的内容读取时,从队列的尾指针 部分出栈获取内存空间节点;内存空间节点为在内存空间划分形成的、由环形 节点通过指针指向的节点;环形节点为对队列的节点进行数组存储得到的、具 有环形链接结构的队列节点数组的节点;
接收端读取模块,用于根据内存空间节点,读取写入相应内存空间的内容; 内存空间为根据预先申请的空间建立的由发送端和接收端共用的内存区域;
接收端返还模块,用于在读取完成时,向队列返还内存空间节点;由队列 对内存空间节点进行回收。
上述技术方案具有如下有益效果:
本发明内存优化的队列方法和系统,提出了一种对于线程间收发使用的数 据基于统一内存管理的模型,通过约定发送者、接收者使用统一的内存空间, 降低数据内容重复的内存消耗;通过降低内存使用量,减少内存的无效的申请、 释放,避免其带来的性能损耗及内存碎片;通过共用内存,避免数据在多份内 存空间传递时带来的内存拷贝,提高程序运行效率;节省数据重复的多份内存 空间拷贝,减少内存空间的申请、释放的性能消耗,以及避免常规队列中频繁 的内存拷贝操作的性能消耗;通过此发明,可提高队列性能表现,降低程序内 存占用量。
图1为本发明从发送端角度实现的内存优化的队列方法实施例1的流程示 意图;
图2为本发明从接收端角度实现的内存优化的队列方法实施例1的流程示 意图;
图3为本发明内存优化的队列方法一具体实施例中队列架构示意图;
图4为本发明从发送端角度实现的内存优化的队列系统实施例1的结构示 意图;
图5为本发明从接收端角度实现的内存优化的队列系统实施例1的结构示 意图;
图6为本发明内存优化的队列系统一具体实施例的结构示意图。
为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。 附图中给出了本发明的首选实施例。但是,本发明可以以许多不同的形式来实 现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本 发明的公开内容更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术 领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术 语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的 术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
本发明从发送端角度实现的内存优化的队列方法实施例1:
为了解决传统队列在内存使用中存在性能损耗的问题,本发明提供了一种 从发送端角度实现的内存优化的队列方法实施例1;图1为本发明从发送端角度 实现的内存优化的队列方法实施例1的流程示意图;如图1所示,可以包括步 骤:
步骤S110:在线程间通信的业务开始时,向队列进行节点申请,得到队列 分配的环形节点;环形节点为对队列的节点进行数组存储得到的、具有环形链 接结构的队列节点数组的节点;
步骤S120:根据环形节点对应的内存空间节点,取用内存空间,并对内存 空间进行内容写入;内存空间为根据预先申请的空间建立的由发送端和接收端 共用的内存区域;内存空间节点为在内存空间划分形成的、由环形节点通过指 针指向的节点;
步骤S130:在写入完成时,向队列提交内存空间节点;由队列将内存空间 节点压栈进入队列的尾指针部分。
具体而言,本发明内存优化的队列方法的目的在于避免数据重复导致的内 存空间的不合理消耗,避免多份内存使用过程的申请、释放的性能消耗,避免 收发过程的拷贝动作的性能消耗。通过本发明,可提高队列性能表现,降低程 序内存占用量。
在一个具体的实施例中,本发明从发送端角度实现的内存优化的队列方法 实施例1,还可以包括步骤:
由队列管理模块对队列的节点进行数组存储,得到环形链接结构的队列节 点数组;队列节点数组包含有各环形节点。
在一个具体的实施例中,本发明从发送端角度实现的内存优化的队列方法 实施例1,还可以包括步骤:
由内存管理模块根据保护空间的内容,对内存空间进行跟踪维护;保护空 间为队列对内存空间节点添加的保护信息;保护空间包括标志位信息。
具体而言,本发明首先需要实现队列节点的环形管理,即队列节点使用数 组存储,并首尾相连,形成环形节点。在队列使用过程,头、尾指针将相应移 动,在某场景下,将出现尾指针在经过环形后处于头指针前面的位置。
内存使用统一的内存空间,并划分不同节点。内存空间节点尾部带有一定 长度的保护空间,其内容有所限定和监控,在回收过程检查其内容是否合法, 能有效判断是否存在内存越界。即在每个内存空间节点尾部有特殊标志位,被 修改代表被破坏,以此做限定;监控是由内存管理模块通过定时任务扫描来检 测的;检测出是否存在内存越界的作用是可以保护内存。另外,内存空间节点 大小固定,所以使用者结构体的大小会有所约束。
在一个具体的示例中,队列节点(环形节点)通过指针管理对应的内存空 间节点。因为在使用过程内存空间节点将有随机的申请、释放的顺序,所以其 指向并不固定。
内存空间节点包含3种状态,分别为:
Idle:即空闲态。没有进入队列,并且没有被发送者或接收者使用的节点处 于此状态;
Queued:即进入队列状态;处于队列头尾指针之间,属于线程间交互范围 的节点,处于此状态;
Tackd:即被取用态;发送者或者接收者要写入、读取信息时,处于其对数 据的访问过程,要从队列中获取内存空间进行存取。由发送者或接收者管理的 节点,处于被取用态。
本发明从发送端实现的内存优化的队列方法实施例1,通过约定发送者、接 收者使用统一的内存空间,降低数据内容重复的内存消耗;通过降低内存使用 量,减少内存的无效的申请、释放,避免其带来的性能损耗及内存碎片;通过 共用内存,避免数据在多份内存空间传递时带来的内存拷贝,提高程序运行效 率;通过添加保护空间,避免内存使用越界,提高程序稳定性。
本发明从接收端角度实现的内存优化的队列方法实施例1:
为了解决传统队列在内存使用中存在性能损耗的问题,本发明还提供了一 种从接收端角度实现的内存优化的队列方法实施例1;图2为本发明从接收端角 度实现的内存优化的队列方法实施例1的流程示意图;如图2所示,可以包括 以下步骤:
步骤S210:在进行线程间通信的内容读取时,从队列的尾指针部分出栈获 取内存空间节点;内存空间节点为在内存空间划分形成的、由环形节点通过指 针指向的节点;环形节点为对队列的节点进行数组存储得到的、具有环形链接 结构的队列节点数组的节点;
步骤S220:根据内存空间节点,读取写入相应内存空间的内容;内存空间 为根据预先申请的空间建立的由发送端和接收端共用的内存区域;
步骤S230:在读取完成时,向队列返还内存空间节点;由队列对内存空间 节点进行回收。
在一个具体的实施例中,本发明从接收端角度实现的内存优化的队列方法 实施例1,还可以包括步骤:
由队列管理模块对队列的节点进行数组存储,得到环形链接结构的队列节 点数组;队列节点数组包含有各环形节点。
在一个具体的实施例中,本发明从接收端角度实现的内存优化的队列方法 实施例1,还可以包括步骤:
在队列对内存空间节点进行回收时,由内存管理模块对内存空间节点进行 尾部的标志位是否发生变化的检测;并在检测的结果为是时,确定内存空间存 在内存越界。
具体而言,本发明的目的是提供一种内存优化的队列方法,通过统一的内 存管理,提高内存使用有效率及程序运行效率。优化内容可以包括以下方面: 约定发送者、接收者使用统一的内存空间;发送者获取写入权后,管理划分的 内存;完成写入后,通知队列接手管理;接收者获取读取权后,管理划分的内 存;完成读取后,通知队列接手管理;队列创建内存空间并在读写过程负责跟 踪维护;内存空间每个节点带有保护空间,有效避免内存越界问题;
本发明内存优化的队列方法一具体实施例:
基于以上分别从发送端和接收端实现的内存优化的队列方法的技术方案, 同时为了解决传统队列在内存使用中存在性能损耗的问题,本发明特以从发送 端和接收端完成线程通信为例,详细阐述本发明的技术方案:
为了实现本发明的队列方法,首先需要实现内存空间节点及队列节点的有 效管理的方法和流程。图3为本发明内存优化的队列方法一具体实施例中队列 架构示意图;如图3所示,队列使用上可以包括以下流程:
初始化时,建立队列节点数组,并形成链接环形结构,其中队列的节点包 含队列管理信息如位置信息、头指针、尾指针、内存空间节点状态等,包含各 节点空间及其内存指针。建立内存空间,划分节点并建立起保护空间信息,即 预先申请一片空间,建立内存管理区域;在申请的内存中进行划分,在特定位 置建立保护信息。通过指针指向建立各环形节点与内存空间节点的一一对应关 系,其中,环形节点包含指向内存空间节点的指针。
在发送者业务初时,由发送者向队列申请节点。队列分配环形节点后,由 发送者根据该环形节点对应的内存空间节点管理内存空间并进行写入内容的操 作。
在发送者完成赋值(写入内容中的一种)后,向队列提交该内存空间节点。 提交之后,此内存空间节点由队列管理,并由队列中环形节点管理。将该节点 压栈进入队列尾指针部分。
接收者读取时,从队列出栈获取内存空间节点。获取该节点后,此部分内 存空间由接收者管理。接收者读取后并进行相应业务流程。
业务流程结束后,向接收者队列返还该节点。此节点由队列回收,并进入 Idle状态。
本发明内存优化的队列方法一具体实施例,提出了一种对于线程间收发使 用的数据基于统一内存管理的模型,可节省数据重复的多份内存空间拷贝,减 少内存空间的申请、释放的性能消耗,以及避免常规队列中频繁的内存拷贝操 作;队列包含内存保护操作,可有效避免内存越界的风险。
本发明从发送端角度实现的内存优化的队列系统实施例1:
基于上述方法的技术方案,同时为了解决传统队列在内存使用中存在性能 损耗的问题,本发明还提供了一种从发送端角度实现的内存优化的队列系统实 施例1;图4为本发明从发送端角度实现的内存优化的队列系统实施例1的结构 示意图;如图4所示,可以包括:
发送端申请模块410,用于在线程间通信的业务开始时,向队列进行节点申 请,得到队列分配的环形节点;环形节点为对队列的节点进行数组存储得到的、 具有环形链接结构的队列节点数组的节点;
发送端写入模块420,用于根据环形节点对应的内存空间节点,取用内存空 间,并对内存空间进行内容写入;内存空间为根据预先申请的空间建立的由发 送端和接收端共用的内存区域;内存空间节点为在内存空间划分形成的、由环 形节点通过指针指向的节点;
发送端提交模块430,用于在写入完成时,向队列提交内存空间节点;由队 列将内存空间节点压栈进入队列的尾指针部分。
在一个具体的实施例中,从发送端角度实现的内存优化的队列系统实施例1 还可以包括:
队列管理模块440,用于对队列的节点进行数组存储,得到环形链接结构的 队列节点数组;队列节点数组包含有各环形节点;
内存管理模块450,用于根据保护空间的内容,对内存空间进行跟踪维护; 保护空间为队列对内存空间节点添加的保护信息;保护空间包括标志位信息。
本发明从接收端角度实现的内存优化的队列系统实施例1:
基于上述方法的技术方案,同时为了解决传统队列在内存使用中存在性能 损耗的问题,本发明还提供了一种从接收端角度实现的内存优化的队列系统实 施例1;图5为本发明从接收端角度实现的内存优化的队列系统实施例1的结构 示意图;如图5所示,可以包括:
接收端获取模块510,用于在进行线程间通信的内容读取时,从队列的尾指 针部分出栈获取内存空间节点;内存空间节点为在内存空间划分形成的、由环 形节点通过指针指向的节点;环形节点为对队列的节点进行数组存储得到的、 具有环形链接结构的队列节点数组的节点;
接收端读取模块520,用于根据内存空间节点,读取写入相应内存空间的内 容;内存空间为根据预先申请的空间建立的由发送端和接收端共用的内存区域;
接收端返还模块530,用于在读取完成时,向队列返还内存空间节点;由队 列对内存空间节点进行回收。
在一个具体的实施例中,本发明从接收端角度实现的内存优化的队列系统 实施例1还可以包括:
队列管理模块540,用于对队列的节点进行数组存储,得到环形链接结构的 队列节点数组;队列节点数组包含有各环形节点;
内存管理模块550,用于在队列对内存空间节点进行回收时,对内存空间节 点进行尾部的标志位是否发生变化的检测;并在检测的结果为是时,确定内存 空间存在内存越界。
图6为本发明内存优化的队列系统一具体实施例的结构示意图,如图6所 示,本发明内存优化的队列系统一具体实施例可以包括:
发送端模块,用于完成线程间通信的发送者内存优化过程的队列使用流程;
接收端模块,用于完成线程间通信的接收者内存优化过程的队列使用流程;
队列管理模块630,用于对队列的节点进行数组存储,得到环形链接结构的 队列节点数组;队列节点数组包含有各环形节点;
内存管理模块640,用于在队列对内存空间节点进行回收时,对内存空间节 点进行尾部的标志位是否发生变化的检测;并在检测的结果为是时,确定内存 空间存在内存越界。
本发明内存优化的队列系统,提出了一种对于线程间收发使用的数据基于 统一内存管理的模型,通过约定发送者、接收者使用统一的内存空间,降低数 据内容重复的内存消耗;通过降低内存使用量,减少内存的无效的申请、释放, 避免其带来的性能损耗及内存碎片;通过共用内存,避免数据在多份内存空间 传递时带来的内存拷贝,提高程序运行效率;通过添加保护空间,避免内存使 用越界,提高程序稳定性;节省数据重复的多份内存空间拷贝,减少内存空间 的申请、释放的性能消耗,以及避免常规队列中频繁的内存拷贝操作;队列包 含内存保护操作,可有效避免内存越界的风险。通过此发明,可提高队列性能 表现,降低程序内存占用量。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对 上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技 术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细, 但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的 普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改 进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权 利要求为准。
本文发布于:2023-04-15 00:48:46,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/1/87486.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |