一种管理迭代器的方法及系统的制作方法

文档序号:6580845阅读:142来源:国知局
专利名称:一种管理迭代器的方法及系统的制作方法
技术领域
本发明涉及软件技术领域,尤其涉及一种管理迭代器的方法及系统。
背景技术
目前,软件系统之间进行数据调用时,一般以迭代器引用的形式返回数据。调用方 根据需要从被调用方的迭代器中读取数据,被调用方迭代器中的数据被全部读取完后,迭 代器对象会被销毁,调用方也可以主动销毁迭代器。当迭代器被销毁时,迭代器对象占用的 内存空间才会被释放掉。然而,当调用方读取迭代器中的数据,但又未读取完全部数据,也不销毁迭代器 时,系统将长时间保留此迭代器,如果调用方经常进行此类操作,系统的垃圾内存会越来越 多,进而影响到系统的性能。当调用方短时间内多次进行此类操作时,大量迭代器对象占用 较多内存,很可能会造成系统内存溢出。因此,引入一种行之有效的迭代器管理方法,避免系统产生大量的垃圾内存,就成 为目前亟待解决的问题。

发明内容
本发明要解决的技术问题是提供一种管理迭代器的方法及系统,对系统中迭代器 的数量进行控制,解决大量迭代器占用较多内存资源导致内存溢出的问题。为解决上述技术问题,本发明的一种管理迭代器的方法,包括系统将所产生的迭代器保存到迭代器管理容器中,并为该迭代器管理容器中的迭 代器分别配置计数器;系统启动后,在每个检测时刻对该迭代器管理容器中的迭代器的计数器进行累 加;若调用方从迭代器管理容器中的迭代器中读取数据,则将相应迭代器的计数器的 计数值置为初始值;若迭代器管理容器中的迭代器的计数器的计数值达到迭代器最大计数值,则删除 相应迭代器。进一步地,系统采用定时周期的方式计算检测时刻,该系统每隔一定时周期对该 迭代器管理容器中的迭代器的计数器进行累加,具体过程包括从迭代器管理容器中读取迭代器,如果读取到,则判断该读取到的迭代器的计数 器的计数值是否已达到迭代器最大计数值,如果未达到,则对该迭代器的计数器进行累加; 如果达到,则记录该迭代器在迭代器管理容器中的索引号,并将该迭代器设置为待删除状 态。进一步地,系统读取完迭代器管理容器中的迭代器后,按照记录的索引号,将设置 为待删除状态的迭代器从迭代器管理容器中删除。进一步地,系统将所产生的迭代器保存到迭代器管理容器中的过程包括
调用方从系统中调用数据,该系统生成被调用数据的迭代器;系统判断达代器管理容器中的迭代器的数量是否达到迭代器最大数量,如果已达 到,则查找并删除该迭代器管理容器中计数器的计数值最大的迭代器,并将生成的迭代器 保存到该迭代器管理容器中;如果未达到,则将生成的迭代器保存到该迭代器管理容器中。进一步地,该方法还包括系统生成被调用数据的迭代器后,还向调用方返回迭代器形式的数据引用;调用方删除迭代器形式的数据引用时,请求系统删除对应的迭代器;系统根据调用方的请求从迭代器管理容器中删除相应迭代器。进一步地,该方法还包括预先配置迭代器管理容器的迭代器最大数量、迭代器最大计数值和定时周期;系统启动后,首先读取预先配置的迭代器最大数量、迭代器最大计数值和定时周 期。进一步地,一种管理迭代器的系统,包括迭代器生成模块、迭代器控制模块和迭 代器管理容器,其中迭代器生成模块,用于在调用方调用数据时,生成被调用数据的迭代器,并向迭代 器控制模块发送迭代器生成通知消息;迭代器控制模块,用于控制迭代器生成模块将所生成的迭代器保存到迭代器管理 容器中;并为该迭代器管理容器中的迭代器分别配置计数器;并且,在每个检测时刻对该 迭代器管理容器中的迭代器的计数器进行累加;在调用方从迭代器管理容器中的迭代器中 读取数据时,将相应迭代器的计数器的计数值置为初始值;在迭代器管理容器中的迭代器 的计数器的计数值达到迭代器最大计数值时,控制删除相应迭代器。进一步地,迭代器控制模块系统采用定时周期的方式计算检测时刻,该迭代器控 制模块每隔一定时周期对该迭代器管理容器中的迭代器的计数器进行累加,具体过程包 括从迭代器管理容器中读取迭代器,如果读取到,则判断该读取到的迭代器的计数 器的计数值是否已达到迭代器最大计数值,如果未达到,则对该迭代器的计数器进行累加; 如果达到,则记录该迭代器在迭代器管理容器中的索引号,并将该迭代器设置为待删除状 态。进一步地,该系统还包括迭代器删除模块,其中迭代器控制模块,还用于在读取完迭代器管理容器中的迭代器后,将记录的索引 号发送给迭代器删除模块,通知该迭代器删除模块进行迭代器的删除;迭代器删除模块,用于按照接收到的索引号,将设置为待删除状态的迭代器从迭 代器管理容器中删除。进一步地,迭代器控制模块控制迭代器生成模块将所生成的迭代器保存到迭代器 管理容器中的过程包括迭代器控制模块判断迭代器管理容器中的迭代器的数量是否达到迭代器最大数 量,如果已达到,则查找该迭代器管理容器中计数器的计数值最大的迭代器,将该迭代器的 索引号发送给迭代器删除模块,通知该迭代器删除模块删除对应的迭代器,并通知迭代器 生成模块将生成的迭代器保存到该迭代器管理容器中;如果未达到,则通知迭代器生成模块将生成的迭代器保存到该迭代器管理容器中。进一步地,迭代器生成模块生成被调用数据的迭代器后,还向调用方返回迭代器 形式的数据引用;调用方删除迭代器形式的数据引用时,请求迭代器删除模块删除对应的迭代器;迭代器删除模块根据调用方的请求从迭代器管理容器中删除相应迭代器。本发明引入迭代器管理容器、定时累加计数和队列先入先出淘汰法等管理迭代 器,对多个迭代器占用大量内存资源的情况进行有效地控制,避免了系统内存溢出等严重 问题,从而提高了系统的安全性和可靠性;同时,还可以根据内存大小等实际情况配置持久 化参数,使整个系统的资源可以得到充分利用,从而提高了系统的性能和灵活性。


图1为本发明方法从迭代器管理容器中淘汰迭代器的方法的流程图;图2为本发明方法向迭代器管理容器存储迭代器的方法的流程图;图3为本发明方法调用方读取迭代器中数据的处理方法的流程图;图4为本发明方法调用方销毁迭代器的处理方法的流程图;图5为本发明管理迭代器的系统的架构图。
具体实施例方式本实施方式中,定期检测长时间未使用的迭代器,并且及时删除不活跃和不使用 的迭代器,以便及时释放占用的内存资源,避免导致系统宕机。系统引入一个迭代器管理容 器来保存多个迭代器,采用定时累加计数和队列先入先出法淘汰迭代器。为保证本实施例方法的实施,需要在数据库中或构造一配置文件保存迭代器管理 容器的迭代器最大数量、迭代器最大计数值和定时周期等持久化参数,持久化参数可以根 据内存容量灵活配置,如,可将迭代器管理容器的迭代器最大数量和迭代器最大计数值配 置为10,将定时周期配置为30秒。当有新的迭代器产生时,如果迭代器管理容器中的迭代器数量未达到迭代器最大 数量,则将该迭代器保存到迭代器管理容器中;否则,采用队列先入先出淘汰法从迭代器管 理容器中淘汰迭代器(参见步骤201 204),再将生成的迭代器保存到迭代器管理容器中。 系统为迭代器管理容器中的每个迭代器配置一个计数值,初始值可设置为0。若调用方从迭 代器中读取数据,则将相应迭代器的计数器重置为初始值。下面结合附图对本发明的具体实施方式
进行详细说明。图1所示为本实施方式的从迭代器管理容器中淘汰迭代器的方法,包括步骤101 系统启动时,从数据库或者配置文件中,获取迭代器管理容器的迭代器 最大数量、迭代器最大计数值和定时周期;步骤102 系统启动定时器,将定时器的定时时间配置为获取到的定时周期,定时 器定时达到后,通知系统;步骤103 系统从迭代器管理容器中顺序读取迭代器,如果读取到迭代器,则执行 步骤104 ;否则,执行步骤107 ;步骤104 系统判断读取的迭代器的计数器的计数值是否已达到迭代器最大计数值,如果是,则执行步骤105 ;否则,执行步骤106 ;步骤105 系统记录该迭代器在迭代器管理容器中的索引号,并将其设置为待删 除状态,跳转至步骤103;步骤106 系统将该迭代器的计数器加1,跳转至步骤103 ;步骤107 系统根据所记录的索引号,将状态为待删除的迭代器从迭代器管理容 器中删除,跳转至步骤102;通过上述步骤,如果调用方在一定时间(迭代器最大计数值X定时周期)内未读 取迭代器中的数据,也未销毁迭代器,则系统会自动销毁该迭代器,从而释放掉该迭代器占 用的资源。如图2所示,迭代器管理容器存储迭代器的处理流程包括以下步骤步骤201 调用方从系统调用数据,系统生成被调用数据的迭代器,并向调用方返 回迭代器形式的数据引用;步骤202 系统判断迭代器管理容器中的迭代器的数量是否达到迭代器最大数 量,如果已达到该最大数量,则执行步骤203,否则,执行步骤204 ;步骤203 系统查找并删除迭代器管理容器中计数器的计数值最大的迭代器,并 执行步骤204 ;步骤204 系统将生成的迭代器保存到迭代器管理容器中。图3所示为调用方读取迭代器中数据时的处理流程,包括步骤301 调用方读取迭代器中的数据;步骤302 系统判断调用方是否读取完该迭代器中的数据,如果是,则执行步骤 302,否则,执行步骤303 ;步骤302 系统将该迭代器从迭代器管理容器中删除;步骤303 系统将该迭代器的计数值重置为初始值。图4为调用方主动销毁迭代器的处理流程,包括以下步骤步骤401 调用方直接删除迭代器形式的数据引用;步骤402 调用方调用与系统之间的接口请求销毁迭代器;步骤403 系统根据调用方的请求从迭代器管理容器中删除相应迭代器。图5所示为本发明管理迭代器的系统,包括迭代器生成模块、迭代器控制模块、 迭代器管理容器和迭代器删除模块,其中迭代器生成模块,用于在调用方调用数据时,生成被调用数据的迭代器,并向迭代 器控制模块发送迭代器生成通知消息。迭代器控制模块,用于从数据库或者配置文件中,获取迭代器管理容器的迭代器 最大数量、迭代器最大计数值和定时周期;启动定时器,将定时器的定时时间配置为获取到 的定时周期;控制迭代器生成模块将所生成的迭代器保存到迭代器管理容器中;并为该迭 代器管理容器中的迭代器分别配置计数器;并且,在定时器的定时时间达到后,从迭代器管 理容器中读取迭代器,如果读取到,则判断该读取到的迭代器的计数器的计数值是否已达 到迭代器最大计数值,如果未达到,则对该迭代器的计数器进行累加;如果达到,则记录该 迭代器在迭代器管理容器中的索引号,并将该迭代器设置为待删除状态;在读取完迭代器 管理容器中的迭代器后,将记录的索引号发送给迭代器删除模块,通知该迭代器删除模块进行迭代器的删除。迭代器删除模块,用于按照接收到的索引号,将设置为待删除状态的迭代器从迭 代器管理容器中删除。迭代器控制模块控制迭代器生成模块将所生成的迭代器保存到迭代器管理容器 中的过程包括迭代器控制模块判断迭代器管理容器中的迭代器的数量是否达到迭代器最 大数量,如果已达到,则查找该迭代器管理容器中计数器的计数值最大的迭代器,将该迭代 器的索引号发送给迭代器删除模块,通知该迭代器删除模块删除对应的迭代器,并通知迭 代器生成模块将生成的迭代器保存到该迭代器管理容器中;如果未达到,则通知迭代器生 成模块将生成的迭代器保存到该迭代器管理容器中。迭代器生成模块生成被调用数据的迭代器后,还向调用方返回迭代器形式的数据 引用;调用方删除迭代器形式的数据引用时,请求迭代器删除模块删除对应的迭代器;迭 代器删除模块根据调用方的请求从迭代器管理容器中删除相应迭代器。本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本 领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都 应属于本发明所附的权利要求的保护范围。
权利要求
1.一种管理迭代器的方法,包括系统将所产生的迭代器保存到迭代器管理容器中,并为该迭代器管理容器中的迭代器 分别配置计数器;系统启动后,在每个检测时刻对该迭代器管理容器中的迭代器的计数器进行累加; 若调用方从迭代器管理容器中的迭代器中读取数据,则将相应迭代器的计数器的计数 值置为初始值;若迭代器管理容器中的迭代器的计数器的计数值达到迭代器最大计数值,则删除相应 迭代器。
2.如权利要求1所述的方法,其特征在于,所述系统采用定时周期的方式计算所述检测时刻,该系统每隔一定时周期对该迭代器 管理容器中的迭代器的计数器进行累加,具体过程包括从所述迭代器管理容器中读取迭代器,如果读取到,则判断该读取到的迭代器的计数 器的计数值是否已达到迭代器最大计数值,如果未达到,则对该迭代器的计数器进行累加; 如果达到,则记录该迭代器在所述迭代器管理容器中的索引号,并将该迭代器设置为待删 除状态。
3.如权利要求2所述的方法,其特征在于,所述系统读取完所述迭代器管理容器中的迭代器后,按照记录的索引号,将设置为待 删除状态的迭代器从所述迭代器管理容器中删除。
4.如权利要求2或3所述的方法,其特征在于,所述系统将所产生的迭代器保存到迭代 器管理容器中的过程包括调用方从所述系统中调用数据,该系统生成被调用数据的迭代器; 所述系统判断迭代器管理容器中的迭代器的数量是否达到迭代器最大数量,如果已达 到,则查找并删除该迭代器管理容器中计数器的计数值最大的迭代器,并将生成的迭代器 保存到该迭代器管理容器中;如果未达到,则将生成的迭代器保存到该迭代器管理容器中。
5.如权利要求4所述的方法,其特征在于,该方法还包括所述系统生成被调用数据的迭代器后,还向调用方返回迭代器形式的数据引用; 所述调用方删除迭代器形式的数据引用时,请求所述系统删除对应的迭代器; 所述系统根据调用方的请求从迭代器管理容器中删除相应迭代器。
6.如权利要求4所述的方法,其特征在于,该方法还包括预先配置所述迭代器管理容器的迭代器最大数量、迭代器最大计数值和定时周期; 系统启动后,首先读取所述预先配置的所述迭代器最大数量、迭代器最大计数值和定 时周期。
7.—种管理迭代器的系统,包括迭代器生成模块、迭代器控制模块和迭代器管理容 器,其中所述迭代器生成模块,用于在调用方调用数据时,生成被调用数据的迭代器,并向迭代 器控制模块发送迭代器生成通知消息;所述迭代器控制模块,用于控制所述迭代器生成模块将所生成的迭代器保存到所述迭 代器管理容器中;并为该迭代器管理容器中的迭代器分别配置计数器;并且,在每个检测 时刻对该迭代器管理容器中的迭代器的计数器进行累加;在调用方从迭代器管理容器中的迭代器中读取数据时,将相应迭代器的计数器的计数值置为初始值;在迭代器管理容器中 的迭代器的计数器的计数值达到迭代器最大计数值时,控制删除相应迭代器。
8.如权利要求7所述的系统,其特征在于,所述迭代器控制模块所述系统采用定时周期的方式计算所述检测时刻,该迭代器控制 模块每隔一定时周期对该迭代器管理容器中的迭代器的计数器进行累加,具体过程包括从所述迭代器管理容器中读取迭代器,如果读取到,则判断该读取到的迭代器的计数 器的计数值是否已达到迭代器最大计数值,如果未达到,则对该迭代器的计数器进行累加; 如果达到,则记录该迭代器在所述迭代器管理容器中的索引号,并将该迭代器设置为待删 除状态。
9.如权利要求8所述的系统,其特征在于,该系统还包括迭代器删除模块,其中所述迭代器控制模块,还用于在读取完所述迭代器管理容器中的迭代器后,将记录的 索引号发送给所述迭代器删除模块,通知该迭代器删除模块进行迭代器的删除;所述迭代器删除模块,用于按照接收到的索引号,将设置为待删除状态的迭代器从所 述迭代器管理容器中删除。
10.如权利要求8或9所述的方法,其特征在于,所述迭代器控制模块控制所述迭代器 生成模块将所生成的迭代器保存到所述迭代器管理容器中的过程包括;所述迭代器控制模块判断所述迭代器管理容器中的迭代器的数量是否达到迭代器最 大数量,如果已达到,则查找该迭代器管理容器中计数器的计数值最大的迭代器,将该迭代 器的索引号发送给所述迭代器删除模块,通知该迭代器删除模块删除对应的迭代器,并通 知所述迭代器生成模块将生成的迭代器保存到该迭代器管理容器中;如果未达到,则通知 所述迭代器生成模块将生成的迭代器保存到该迭代器管理容器中。
11.如权利要求10所述的方法,其特征在于,所述迭代器生成模块生成被调用数据的迭代器后,还向调用方返回迭代器形式的数据 引用;所述调用方删除迭代器形式的数据引用时,请求所述迭代器删除模块删除对应的迭代器;所述迭代器删除模块根据调用方的请求从迭代器管理容器中删除相应迭代器。
全文摘要
本发明公开了一种管理迭代器的方法,包括系统将所产生的迭代器保存到迭代器管理容器中,并为该迭代器管理容器中的达代器分别配置计数器;系统启动后,在每个检测时刻对该迭代器管理容器中的迭代器的计数器进行累加;若调用方从迭代器管理容器中的迭代器中读取数据,则将相应迭代器的计数器的计数值置为初始值;若迭代器管理容器中的迭代器的计数器的计数值达到迭代器最大计数值,则删除相应迭代器。本发明引入迭代器管理容器、定时累加计数和队列先入先出淘汰法等管理迭代器,对多个迭代器占用大量内存资源的情况进行有效地控制,避免了系统内存溢出等严重问题,从而提高了系统的安全性和可靠性。
文档编号G06F9/50GK102043672SQ200910178488
公开日2011年5月4日 申请日期2009年10月13日 优先权日2009年10月13日
发明者孟雷, 宋滔 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1