CN102043672A - 一种管理迭代器的方法及系统 - Google Patents
一种管理迭代器的方法及系统 Download PDFInfo
- Publication number
- CN102043672A CN102043672A CN2009101784886A CN200910178488A CN102043672A CN 102043672 A CN102043672 A CN 102043672A CN 2009101784886 A CN2009101784886 A CN 2009101784886A CN 200910178488 A CN200910178488 A CN 200910178488A CN 102043672 A CN102043672 A CN 102043672A
- Authority
- CN
- China
- Prior art keywords
- iterator
- manage containers
- counter
- count value
- manage
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种管理迭代器的方法,包括:系统将所产生的迭代器保存到迭代器管理容器中,并为该迭代器管理容器中的达代器分别配置计数器;系统启动后,在每个检测时刻对该迭代器管理容器中的迭代器的计数器进行累加;若调用方从迭代器管理容器中的迭代器中读取数据,则将相应迭代器的计数器的计数值置为初始值;若迭代器管理容器中的迭代器的计数器的计数值达到迭代器最大计数值,则删除相应迭代器。本发明引入迭代器管理容器、定时累加计数和队列先入先出淘汰法等管理迭代器,对多个迭代器占用大量内存资源的情况进行有效地控制,避免了系统内存溢出等严重问题,从而提高了系统的安全性和可靠性。
Description
技术领域
本发明涉及软件技术领域,尤其涉及一种管理迭代器的方法及系统。
背景技术
目前,软件系统之间进行数据调用时,一般以迭代器引用的形式返回数据。调用方根据需要从被调用方的迭代器中读取数据,被调用方迭代器中的数据被全部读取完后,迭代器对象会被销毁,调用方也可以主动销毁迭代器。当迭代器被销毁时,迭代器对象占用的内存空间才会被释放掉。
然而,当调用方读取迭代器中的数据,但又未读取完全部数据,也不销毁迭代器时,系统将长时间保留此迭代器,如果调用方经常进行此类操作,系统的垃圾内存会越来越多,进而影响到系统的性能。当调用方短时间内多次进行此类操作时,大量迭代器对象占用较多内存,很可能会造成系统内存溢出。
因此,引入一种行之有效的迭代器管理方法,避免系统产生大量的垃圾内存,就成为目前亟待解决的问题。
发明内容
本发明要解决的技术问题是提供一种管理迭代器的方法及系统,对系统中迭代器的数量进行控制,解决大量迭代器占用较多内存资源导致内存溢出的问题。
为解决上述技术问题,本发明的一种管理迭代器的方法,包括:
系统将所产生的迭代器保存到迭代器管理容器中,并为该迭代器管理容器中的迭代器分别配置计数器;
系统启动后,在每个检测时刻对该迭代器管理容器中的迭代器的计数器进行累加;
若调用方从迭代器管理容器中的迭代器中读取数据,则将相应迭代器的计数器的计数值置为初始值;
若迭代器管理容器中的迭代器的计数器的计数值达到迭代器最大计数值,则删除相应迭代器。
进一步地,系统采用定时周期的方式计算检测时刻,该系统每隔一定时周期对该迭代器管理容器中的迭代器的计数器进行累加,具体过程包括:
从迭代器管理容器中读取迭代器,如果读取到,则判断该读取到的迭代器的计数器的计数值是否已达到迭代器最大计数值,如果未达到,则对该迭代器的计数器进行累加;如果达到,则记录该迭代器在迭代器管理容器中的索引号,并将该迭代器设置为待删除状态。
进一步地,系统读取完迭代器管理容器中的迭代器后,按照记录的索引号,将设置为待删除状态的迭代器从迭代器管理容器中删除。
进一步地,系统将所产生的迭代器保存到迭代器管理容器中的过程包括:
调用方从系统中调用数据,该系统生成被调用数据的迭代器;
系统判断达代器管理容器中的迭代器的数量是否达到迭代器最大数量,如果已达到,则查找并删除该迭代器管理容器中计数器的计数值最大的迭代器,并将生成的迭代器保存到该迭代器管理容器中;如果未达到,则将生成的迭代器保存到该迭代器管理容器中。
进一步地,该方法还包括:
系统生成被调用数据的迭代器后,还向调用方返回迭代器形式的数据引用;
调用方删除迭代器形式的数据引用时,请求系统删除对应的迭代器;
系统根据调用方的请求从迭代器管理容器中删除相应迭代器。
进一步地,该方法还包括:
预先配置迭代器管理容器的迭代器最大数量、迭代器最大计数值和定时周期;
系统启动后,首先读取预先配置的迭代器最大数量、迭代器最大计数值和定时周期。
进一步地,一种管理迭代器的系统,包括:迭代器生成模块、迭代器控制模块和迭代器管理容器,其中:
迭代器生成模块,用于在调用方调用数据时,生成被调用数据的迭代器,并向迭代器控制模块发送迭代器生成通知消息;
迭代器控制模块,用于控制迭代器生成模块将所生成的迭代器保存到迭代器管理容器中;并为该迭代器管理容器中的迭代器分别配置计数器;并且,在每个检测时刻对该迭代器管理容器中的迭代器的计数器进行累加;在调用方从迭代器管理容器中的迭代器中读取数据时,将相应迭代器的计数器的计数值置为初始值;在迭代器管理容器中的迭代器的计数器的计数值达到迭代器最大计数值时,控制删除相应迭代器。
进一步地,迭代器控制模块系统采用定时周期的方式计算检测时刻,该迭代器控制模块每隔一定时周期对该迭代器管理容器中的迭代器的计数器进行累加,具体过程包括:
从迭代器管理容器中读取迭代器,如果读取到,则判断该读取到的迭代器的计数器的计数值是否已达到迭代器最大计数值,如果未达到,则对该迭代器的计数器进行累加;如果达到,则记录该迭代器在迭代器管理容器中的索引号,并将该迭代器设置为待删除状态。
进一步地,该系统还包括迭代器删除模块,其中:
迭代器控制模块,还用于在读取完迭代器管理容器中的迭代器后,将记录的索引号发送给迭代器删除模块,通知该迭代器删除模块进行迭代器的删除;
迭代器删除模块,用于按照接收到的索引号,将设置为待删除状态的迭代器从迭代器管理容器中删除。
进一步地,迭代器控制模块控制迭代器生成模块将所生成的迭代器保存到迭代器管理容器中的过程包括:
迭代器控制模块判断迭代器管理容器中的迭代器的数量是否达到迭代器最大数量,如果已达到,则查找该迭代器管理容器中计数器的计数值最大的迭代器,将该迭代器的索引号发送给迭代器删除模块,通知该迭代器删除模块删除对应的迭代器,并通知迭代器生成模块将生成的迭代器保存到该迭代器管理容器中;如果未达到,则通知迭代器生成模块将生成的迭代器保存到该迭代器管理容器中。
进一步地,迭代器生成模块生成被调用数据的迭代器后,还向调用方返回迭代器形式的数据引用;
调用方删除迭代器形式的数据引用时,请求迭代器删除模块删除对应的迭代器;
迭代器删除模块根据调用方的请求从迭代器管理容器中删除相应迭代器。
本发明引入迭代器管理容器、定时累加计数和队列先入先出淘汰法等管理迭代器,对多个迭代器占用大量内存资源的情况进行有效地控制,避免了系统内存溢出等严重问题,从而提高了系统的安全性和可靠性;同时,还可以根据内存大小等实际情况配置持久化参数,使整个系统的资源可以得到充分利用,从而提高了系统的性能和灵活性。
附图说明
图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;
通过上述步骤,如果调用方在一定时间(迭代器最大计数值×定时周期)内未读取迭代器中的数据,也未销毁迭代器,则系统会自动销毁该迭代器,从而释放掉该迭代器占用的资源。
如图2所示,迭代器管理容器存储迭代器的处理流程包括以下步骤:
步骤201:调用方从系统调用数据,系统生成被调用数据的迭代器,并向调用方返回迭代器形式的数据引用;
步骤202:系统判断迭代器管理容器中的迭代器的数量是否达到迭代器最大数量,如果已达到该最大数量,则执行步骤203,否则,执行步骤204;
步骤203:系统查找并删除迭代器管理容器中计数器的计数值最大的迭代器,并执行步骤204;
步骤204:系统将生成的迭代器保存到迭代器管理容器中。
图3所示为调用方读取迭代器中数据时的处理流程,包括:
步骤301:调用方读取迭代器中的数据;
步骤302:系统判断调用方是否读取完该迭代器中的数据,如果是,则执行步骤302,否则,执行步骤303;
步骤302:系统将该迭代器从迭代器管理容器中删除;
步骤303:系统将该迭代器的计数值重置为初始值。
图4为调用方主动销毁迭代器的处理流程,包括以下步骤:
步骤401:调用方直接删除迭代器形式的数据引用;
步骤402:调用方调用与系统之间的接口请求销毁迭代器;
步骤403:系统根据调用方的请求从迭代器管理容器中删除相应迭代器。
图5所示为本发明管理迭代器的系统,包括:迭代器生成模块、迭代器控制模块、迭代器管理容器和迭代器删除模块,其中:
迭代器生成模块,用于在调用方调用数据时,生成被调用数据的迭代器,并向迭代器控制模块发送迭代器生成通知消息。
迭代器控制模块,用于从数据库或者配置文件中,获取迭代器管理容器的迭代器最大数量、迭代器最大计数值和定时周期;启动定时器,将定时器的定时时间配置为获取到的定时周期;控制迭代器生成模块将所生成的迭代器保存到迭代器管理容器中;并为该迭代器管理容器中的迭代器分别配置计数器;并且,在定时器的定时时间达到后,从迭代器管理容器中读取迭代器,如果读取到,则判断该读取到的迭代器的计数器的计数值是否已达到迭代器最大计数值,如果未达到,则对该迭代器的计数器进行累加;如果达到,则记录该迭代器在迭代器管理容器中的索引号,并将该迭代器设置为待删除状态;在读取完迭代器管理容器中的迭代器后,将记录的索引号发送给迭代器删除模块,通知该迭代器删除模块进行迭代器的删除。
迭代器删除模块,用于按照接收到的索引号,将设置为待删除状态的迭代器从迭代器管理容器中删除。
迭代器控制模块控制迭代器生成模块将所生成的迭代器保存到迭代器管理容器中的过程包括:迭代器控制模块判断迭代器管理容器中的迭代器的数量是否达到迭代器最大数量,如果已达到,则查找该迭代器管理容器中计数器的计数值最大的迭代器,将该迭代器的索引号发送给迭代器删除模块,通知该迭代器删除模块删除对应的迭代器,并通知迭代器生成模块将生成的迭代器保存到该迭代器管理容器中;如果未达到,则通知迭代器生成模块将生成的迭代器保存到该迭代器管理容器中。
迭代器生成模块生成被调用数据的迭代器后,还向调用方返回迭代器形式的数据引用;调用方删除迭代器形式的数据引用时,请求迭代器删除模块删除对应的迭代器;迭代器删除模块根据调用方的请求从迭代器管理容器中删除相应迭代器。
本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (11)
1.一种管理迭代器的方法,包括:
系统将所产生的迭代器保存到迭代器管理容器中,并为该迭代器管理容器中的迭代器分别配置计数器;
系统启动后,在每个检测时刻对该迭代器管理容器中的迭代器的计数器进行累加;
若调用方从迭代器管理容器中的迭代器中读取数据,则将相应迭代器的计数器的计数值置为初始值;
若迭代器管理容器中的迭代器的计数器的计数值达到迭代器最大计数值,则删除相应迭代器。
2.如权利要求1所述的方法,其特征在于,
所述系统采用定时周期的方式计算所述检测时刻,该系统每隔一定时周期对该迭代器管理容器中的迭代器的计数器进行累加,具体过程包括:
从所述迭代器管理容器中读取迭代器,如果读取到,则判断该读取到的迭代器的计数器的计数值是否已达到迭代器最大计数值,如果未达到,则对该迭代器的计数器进行累加;如果达到,则记录该迭代器在所述迭代器管理容器中的索引号,并将该迭代器设置为待删除状态。
3.如权利要求2所述的方法,其特征在于,
所述系统读取完所述迭代器管理容器中的迭代器后,按照记录的索引号,将设置为待删除状态的迭代器从所述迭代器管理容器中删除。
4.如权利要求2或3所述的方法,其特征在于,所述系统将所产生的迭代器保存到迭代器管理容器中的过程包括:
调用方从所述系统中调用数据,该系统生成被调用数据的迭代器;
所述系统判断迭代器管理容器中的迭代器的数量是否达到迭代器最大数量,如果已达到,则查找并删除该迭代器管理容器中计数器的计数值最大的迭代器,并将生成的迭代器保存到该迭代器管理容器中;如果未达到,则将生成的迭代器保存到该迭代器管理容器中。
5.如权利要求4所述的方法,其特征在于,该方法还包括:
所述系统生成被调用数据的迭代器后,还向调用方返回迭代器形式的数据引用;
所述调用方删除迭代器形式的数据引用时,请求所述系统删除对应的迭代器;
所述系统根据调用方的请求从迭代器管理容器中删除相应迭代器。
6.如权利要求4所述的方法,其特征在于,该方法还包括:
预先配置所述迭代器管理容器的迭代器最大数量、迭代器最大计数值和定时周期;
系统启动后,首先读取所述预先配置的所述迭代器最大数量、迭代器最大计数值和定时周期。
7.一种管理迭代器的系统,包括:迭代器生成模块、迭代器控制模块和迭代器管理容器,其中:
所述迭代器生成模块,用于在调用方调用数据时,生成被调用数据的迭代器,并向迭代器控制模块发送迭代器生成通知消息;
所述迭代器控制模块,用于控制所述迭代器生成模块将所生成的迭代器保存到所述迭代器管理容器中;并为该迭代器管理容器中的迭代器分别配置计数器;并且,在每个检测时刻对该迭代器管理容器中的迭代器的计数器进行累加;在调用方从迭代器管理容器中的迭代器中读取数据时,将相应迭代器的计数器的计数值置为初始值;在迭代器管理容器中的迭代器的计数器的计数值达到迭代器最大计数值时,控制删除相应迭代器。
8.如权利要求7所述的系统,其特征在于,
所述迭代器控制模块所述系统采用定时周期的方式计算所述检测时刻,该迭代器控制模块每隔一定时周期对该迭代器管理容器中的迭代器的计数器进行累加,具体过程包括:
从所述迭代器管理容器中读取迭代器,如果读取到,则判断该读取到的迭代器的计数器的计数值是否已达到迭代器最大计数值,如果未达到,则对该迭代器的计数器进行累加;如果达到,则记录该迭代器在所述迭代器管理容器中的索引号,并将该迭代器设置为待删除状态。
9.如权利要求8所述的系统,其特征在于,该系统还包括迭代器删除模块,其中:
所述迭代器控制模块,还用于在读取完所述迭代器管理容器中的迭代器后,将记录的索引号发送给所述迭代器删除模块,通知该迭代器删除模块进行迭代器的删除;
所述迭代器删除模块,用于按照接收到的索引号,将设置为待删除状态的迭代器从所述迭代器管理容器中删除。
10.如权利要求8或9所述的方法,其特征在于,所述迭代器控制模块控制所述迭代器生成模块将所生成的迭代器保存到所述迭代器管理容器中的过程包括;
所述迭代器控制模块判断所述迭代器管理容器中的迭代器的数量是否达到迭代器最大数量,如果已达到,则查找该迭代器管理容器中计数器的计数值最大的迭代器,将该迭代器的索引号发送给所述迭代器删除模块,通知该迭代器删除模块删除对应的迭代器,并通知所述迭代器生成模块将生成的迭代器保存到该迭代器管理容器中;如果未达到,则通知所述迭代器生成模块将生成的迭代器保存到该迭代器管理容器中。
11.如权利要求10所述的方法,其特征在于,
所述迭代器生成模块生成被调用数据的迭代器后,还向调用方返回迭代器形式的数据引用;
所述调用方删除迭代器形式的数据引用时,请求所述迭代器删除模块删除对应的迭代器;
所述迭代器删除模块根据调用方的请求从迭代器管理容器中删除相应迭代器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101784886A CN102043672A (zh) | 2009-10-13 | 2009-10-13 | 一种管理迭代器的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101784886A CN102043672A (zh) | 2009-10-13 | 2009-10-13 | 一种管理迭代器的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102043672A true CN102043672A (zh) | 2011-05-04 |
Family
ID=43909827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101784886A Pending CN102043672A (zh) | 2009-10-13 | 2009-10-13 | 一种管理迭代器的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102043672A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0924613A2 (en) * | 1997-12-18 | 1999-06-23 | Sun Microsystems, Inc. | Method and apparatus for constructing stable iterators in a shared data collection |
US20020083069A1 (en) * | 1998-12-17 | 2002-06-27 | Day Mark S. | System and method for interfacing index based and iterator based application programming interfaces |
CN1466057A (zh) * | 2002-06-20 | 2004-01-07 | 华为技术有限公司 | 一种软件内存泄露的检查方法 |
US20070011364A1 (en) * | 2005-07-05 | 2007-01-11 | Arm Limited | Direct memory access controller supporting non-contiguous addressing and data reformatting |
-
2009
- 2009-10-13 CN CN2009101784886A patent/CN102043672A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0924613A2 (en) * | 1997-12-18 | 1999-06-23 | Sun Microsystems, Inc. | Method and apparatus for constructing stable iterators in a shared data collection |
US20020083069A1 (en) * | 1998-12-17 | 2002-06-27 | Day Mark S. | System and method for interfacing index based and iterator based application programming interfaces |
CN1466057A (zh) * | 2002-06-20 | 2004-01-07 | 华为技术有限公司 | 一种软件内存泄露的检查方法 |
US20070011364A1 (en) * | 2005-07-05 | 2007-01-11 | Arm Limited | Direct memory access controller supporting non-contiguous addressing and data reformatting |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102117240B (zh) | 一种获取进程阻塞信息的方法及装置 | |
CN108345524B (zh) | 应用程序监控方法及应用程序监控装置 | |
CN101547113B (zh) | 告警信息过滤系统、装置及方法 | |
CN105005528A (zh) | 一种日志信息提取方法及装置 | |
CN102609309A (zh) | 一种用于云计算的策略调度系统和方法 | |
CN107040576B (zh) | 信息推送方法及装置、通讯系统 | |
CN111708679A (zh) | 日志监控方法、系统、装置和存储介质 | |
CN102253854A (zh) | 业务处理方法和Java虚拟机 | |
CN100372307C (zh) | 一种系统日志管理方法 | |
WO2024125108A1 (zh) | 移动端安全切面的按需开启方法及装置 | |
CN101320389B (zh) | 文件管理方法和装置 | |
CN102043672A (zh) | 一种管理迭代器的方法及系统 | |
CN105404824A (zh) | 异步数据缓加密系统及方法 | |
CN103617023A (zh) | 一种系统垃圾资源的回收方法和装置 | |
CN109426563B (zh) | 一种进程管理方法及装置 | |
CN107391708B (zh) | 一种存储系统中性能统计文件存储的方法及装置 | |
CN110633161A (zh) | 一种广播的处理方法及装置 | |
CN101662382A (zh) | 一种抑制网管系统中振荡告警上报的方法及系统 | |
CN113709153B (zh) | 一种日志归并的方法、装置及电子设备 | |
EP3819799B1 (en) | Method of threat detection | |
WO2005018152A1 (fr) | Systeme et procede pour la surveillance intelligente de centres de messages | |
JP2009211654A (ja) | メモリ管理装置、システム、方法、及び、プログラム | |
CN111045779B (zh) | 系统内存回收配置方法、存储介质 | |
CN110908808B (zh) | 一种控制api调用资源的方法和装置 | |
JP2010213143A (ja) | トラフィック記録装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110504 |