CN110032464B - 内存泄露的处理方法及装置 - Google Patents

内存泄露的处理方法及装置 Download PDF

Info

Publication number
CN110032464B
CN110032464B CN201910199071.1A CN201910199071A CN110032464B CN 110032464 B CN110032464 B CN 110032464B CN 201910199071 A CN201910199071 A CN 201910199071A CN 110032464 B CN110032464 B CN 110032464B
Authority
CN
China
Prior art keywords
memory
memory address
message
address queue
queue
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.)
Active
Application number
CN201910199071.1A
Other languages
English (en)
Other versions
CN110032464A (zh
Inventor
王斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Star Net Ruijie Networks Co Ltd
Original Assignee
Beijing Star Net Ruijie Networks Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Star Net Ruijie Networks Co Ltd filed Critical Beijing Star Net Ruijie Networks Co Ltd
Priority to CN201910199071.1A priority Critical patent/CN110032464B/zh
Publication of CN110032464A publication Critical patent/CN110032464A/zh
Application granted granted Critical
Publication of CN110032464B publication Critical patent/CN110032464B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种内存泄露的处理方法及装置,该方法包括:在接收第一报文或者发送第二报文后,更新内存地址队列中对应的内存地址的未被使用次数,所述内存地址队列包括所述内存中的可用内存单元的内存地址;监控所述内存地址队列中包括的每个内存地址的未被使用次数是否达到第一设定值;确定所述内存地址队列中未被使用次数达到所述第一设定值的内存地址对应的内存单元发生内存泄露;强制回收发生内存泄露的内存单元。该方案可以及时恢复发生内存泄露的内存单元,这些内存单元可以继续参与报文的接收和发送,从而确保报文的转发效率,提升整个网络设备的转发性能。

Description

内存泄露的处理方法及装置
技术领域
本发明涉及通信技术领域,尤指一种内存泄露的处理方法及装置。
背景技术
随着网络技术的飞速发展,网络的覆盖面越来越大,网络设备的使用也越来越广泛。在网络设备中,需要中央处理器(Central Processing Unit,CPU)和内存参与报文的转发,在接收到报文后CPU为该报文分配内存单元用于存储该报文,在发送该报文后,会将为该报文分配的内存单元回收,以便于后续报文的接收和发送。
目前,有的CPU存在如下缺陷,若通过半双工模式的以太网端口发送报文,在报文发送后,无法回收之前为该报文分配的内存单元,这就会出现内存泄漏,当有大量的内存单元出现内存泄露时,可用的内存单元大大减少,这样就会大大影响报文的转发效率,降低整个网络设备的转发性能。
发明内容
本发明实施例提供一种内存泄露的处理方法及装置,用以解决现有技术中存在的大大影响报文的转发效率,降低整个网络设备的转发性能的问题。
根据本发明实施例,提供一种内存泄露的处理方法,应用在网络设备的中央处理器CPU中,所述网络设备还包括内存,所述方法包括:
在接收第一报文或者发送第二报文后,更新内存地址队列中对应的内存地址的未被使用次数,所述内存地址队列包括所述内存中的可用内存单元的内存地址;
监控所述内存地址队列中包括的每个内存地址的未被使用次数是否达到第一设定值;
确定所述内存地址队列中未被使用次数达到所述第一设定值的内存地址对应的内存单元发生内存泄露;
强制回收发生内存泄露的内存单元。
可选的,还包括:
获取所述内存中的可用内存单元的内存地址,建立内存地址队列;
为所述内存地址队列中的每个内存地址设置计数器,以统计对应内存地址的未被使用次数;
初始化设置的计数器的数值。
具体的,在接收第一报文或者发送第二报文后,更新内存地址队列中对应的内存地址的未被使用次数,具体包括:
监控是否接收第一报文或者发送第二报文;
若监控到接收第一报文,则确定所述第一报文使用的第一内存单元后,将所述内存地址队列中所述第一内存单元的第一内存地址的未被使用次数清零,将接收报文数量增加第二设定值;若监控到发送第二报文,则确定所述第二报文使用的第二内存单元后,将所述内存地址队列中所述第二内存单元的第二内存地址的未被使用次数清零,将发送报文数量增加所述第二设定值;
判断所述接收报文数量或者所述发送报文数量是否达到所述内存地址队列中包括的内存地址的数量;
若接收报文数量或发送报文数量达到所述内存地址队列中包括的内存地址的数量,则将所述内存地址队列中包括的每个内存地址的未被使用次数增加所述第二设定值,并将达到所述内存地址队列中包括的内存地址的数量的接收报文数量或发送报文数量清零。
具体的,监控所述内存地址队列中包括的每个内存地址的未被使用次数是否达到第一设定值,具体包括:
轮询所述内存地址队列中包括的每个内存地址的未被使用次数;
比较轮询到的未被使用次数与第一设定值是否相等。
可选的,强制回收发生内存泄露的内存单元之后,还包括:
将所述内存地址队列中强制回收的内存单元的内存地址的未被使用次数清零。
根据本发明实施例,还提供一种内存泄露的处理装置,应用在网络设备的CPU中,所述网络设备还包括内存,所述装置包括:
更新模块,用于在接收第一报文或者发送第二报文后,更新内存地址队列中对应的内存地址的未被使用次数,所述内存地址队列包括所述内存中的可用内存单元的内存地址;
监控模块,用于监控所述内存地址队列中包括的每个内存地址的未被使用次数是否达到第一设定值;
确定模块,用于确定所述内存地址队列中未被使用次数达到所述第一设定值的内存地址对应的内存单元发生内存泄露;
回收模块,用于强制回收发生内存泄露的内存单元。
可选的,还包括:
建立模块,用于获取所述内存中的可用内存单元的内存地址,建立内存地址队列;
设置模块,用于为所述内存地址队列中的每个内存地址设置计数器,以统计对应内存地址的未被使用次数;
初始化模块,用于初始化设置的计数器的数值。
具体的,所述更新模块,用于在接收第一报文或者发送第二报文后,更新内存地址队列中对应的内存地址的未被使用次数,具体用于:
监控是否接收第一报文或者发送第二报文;
若监控到接收第一报文,则确定所述第一报文使用的第一内存单元后,将所述内存地址队列中所述第一内存单元的第一内存地址的未被使用次数清零,将接收报文数量增加第二设定值;若监控到发送第二报文,则确定所述第二报文使用的第二内存单元后,将所述内存地址队列中所述第二内存单元的第二内存地址的未被使用次数清零,将发送报文数量增加所述第二设定值;
判断所述接收报文数量或者所述发送报文数量是否达到所述内存地址队列中包括的内存地址的数量;
若接收报文数量或发送报文数量达到所述内存地址队列中包括的内存地址的数量,则将所述内存地址队列中包括的每个内存地址的未被使用次数增加所述第二设定值,并将达到所述内存地址队列中包括的内存地址的数量的接收报文数量或发送报文数量清零。
具体的,所述监控模块,用于监控所述内存地址队列中包括的每个内存地址的未被使用次数是否达到第一设定值,具体用于:
轮询所述内存地址队列中包括的每个内存地址的未被使用次数;
比较轮询到的未被使用次数与第一设定值是否相等。
可选的,所述回收模块,还用于:
强制回收发生内存泄露的内存单元之后,将所述内存地址队列中强制回收的内存单元的内存地址的未被使用次数清零。
本发明有益效果如下:
本发明实施例提供一种内存泄露的处理方法及装置,通过在接收第一报文或者发送第二报文后,更新内存地址队列中对应的内存地址的未被使用次数,所述内存地址队列包括所述内存中的可用内存单元的内存地址;监控所述内存地址队列中包括的每个内存地址的未被使用次数是否达到第一设定值;确定所述内存地址队列中未被使用次数达到所述第一设定值的内存地址对应的内存单元发生内存泄露;强制回收发生内存泄露的内存单元。该方案中,预先建立包括内存中的可用内存单元的内存地址的内存地址队列,在接收第一报文或者发送第二报文后,更新内存地址队列中对应的内存地址的未被使用次数,在确定内存地址队列中未被使用次数达到第一设定值的内存地址对应的内存单元发生内存泄露后,强制回收发生内存泄露的内存单元,可以及时恢复发生内存泄露的内存单元,这些内存单元可以继续参与报文的接收和发送,从而确保报文的转发效率,提升整个网络设备的转发性能。
附图说明
图1为本发明实施例中一种内存泄露的处理方法的流程图;
图2为本发明实施例中S11的流程图;
图3为本发明实施例中一种内存泄露的处理装置的结构示意图。
具体实施方式
针对现有技术中存在的大大影响报文的转发效率,降低整个网络设备的转发性能的问题,本发明实施例提供一种内存泄露的处理方法,应用在网络设备的CPU中,该网络设备还包括内存,该方法的流程如图1所示,执行步骤如下:
S11:在接收第一报文或者发送第二报文后,更新内存地址队列中对应的内存地址的未被使用次数。
其中,内存中的全部或者部分内存单元会参与报文转发,参与报文转发的内存单元定义为可用内存单元,可以预先建立内存地址队列,内存地址队列包括内存中的可用内存单元的内存地址,建立的过程为:获取内存中的可用内存单元的内存地址,建立内存地址队列;为内存地址队列中的每个内存地址设置计数器,以统计对应内存地址的未被使用次数;初始化设置的计数器的数值。初始化设置的计数器的数值可以但不限于设置为0。
通常,接收报文和发送报文会伴随着内存单元的分配和回收,因此,在接收报文或者发送报文的时候,可以更新内存地址队列中对应的内存地址的未被使用次数。其中,接收到的报文可以定义为第一报文,发送的报文可以定义为第二报文。
S12:监控内存地址队列中包括的每个内存地址的未被使用次数是否达到第一设定值。
正常情况下,内存地址队列中的各个内存地址会依次顺序参与报文的转发,相应地,未被使用次数应该为零,但是若某个内存单元发生了内存泄露,该内存单元对应的内存地址则不会分配给新的报文使用,无法参与报文的转发,该内存单元对应的内存地址的未被使用次数会增加,因此,可以通过监控内存地址队列中包括的每个内存地址的未被使用次数是否达到第一设定值,来确定每个内存地址对应的内存单元是否发生内存泄露。
其中,第一设定值可以根据实际需要进行设定,例如,可以设定为5、6、7、10等等。
S13:确定内存地址队列中未被使用次数达到第一设定值的内存地址对应的内存单元发生内存泄露。
若监控内存地址队列中包括的某个内存地址的未被使用次数达到第一设定值,则可以确定该内存地址对应的内存单元发生内存泄露。
S14:强制回收发生内存泄露的内存单元。
由于发生内存泄露的内存单元不能分配给新的报文使用,无法参与报文的转发,因此,可以通过强制回收发生内存泄露的内存单元来释放该内存单元,该内存单元释放后可以继续分配给新的报文使用,从而继续参与报文的转发。
该方案中,预先建立包括内存中的可用内存单元的内存地址的内存地址队列,在接收第一报文或者发送第二报文后,更新内存地址队列中对应的内存地址的未被使用次数,在确定内存地址队列中未被使用次数达到第一设定值的内存地址对应的内存单元发生内存泄露后,强制回收发生内存泄露的内存单元,可以及时恢复发生内存泄露的内存单元,这些内存单元可以继续参与报文的接收和发送,从而确保报文的转发效率,提升整个网络设备的转发性能。
具体的,上述S11中在接收第一报文或者发送第二报文后,更新内存地址队列中对应的内存地址的未被使用次数,实现过程如图2所示,具体包括:
S110:流程开始。
S111:监控是否接收第一报文或者发送第二报文,若监控到接收第一报文,则执行S112;若监控到发送第二报文,则执行S113。
S112:确定第一报文使用的第一内存单元后,将内存地址队列中第一内存单元的第一内存地址的未被使用次数清零,将接收报文数量增加第二设定值,执行S114。
在接收到第一报文后,会为第一报文分配内存单元用于缓存第一报文,分配的内存单元可以定义为第一内存单元,由于第一内存单元可以分配给第一报文使用,则可以确定第一内存单元的内存地址未发生内存泄露,第一内存单元的内存地址定义为第一内存地址,由于第一内存单元被使用,可以将第一内存地址的未被使用次数清零。
还可以设置接收报文数量,每次接收第一报文后,将接收报文数量增加第二设定值,第二设定值可以根据实际需要进行设定,例如,可以设定为1、2、3等等。
S113:确定第二报文使用的第二内存单元后,将内存地址队列中第二内存单元的第二内存地址的未被使用次数清零,将发送报文数量增加第二设定值,执行S114。
在发送第二报文时,可以从存储第二报文的内存单元获取第二报文,存储第二报文的内存单元可以定义为第二内存单元,由于第二内存单元可以分配给第二报文使用,则可以确定第二内存单元的内存地址此时未发生内存泄露,第二内存单元的内存地址定义为第二内存地址,由于第二内存单元此时被使用,可以将第二内存地址的未被使用次数清零。
还可以设置发送报文数量,每次发送第二报文后,将发送报文数量增加第二设定值,第二设定值可以根据实际需要进行设定,例如,可以设定为1、2、3等等。
S114:判断接收报文数量或者发送报文数量是否达到内存地址队列中包括的内存地址的数量,若接收报文数量或者发送报文数量达到达到内存地址队列中包括的内存地址的数量,则执行S115。
内存泄露通常是发生在发送第二报文之后,之前存储第二报文的第二内存单元未被回收。假设内存地址队列中包括的内存地址的数量为N,理论上,每接收N个报文或者发送N个报文,整个内存中的可用内存单元被使用一遍,基于S112和S113,此时内存地址队列中的每个内存地址的未被使用次数应该清零,但是若某个内存单元发生内存泄露,则该内存单元不会参与报文转发,也就是不会执行S112或者S113,从而该内存单元的内存地址的未被使用次数不为零。基于此,可以判断接收报文数量或者发送报文数量是否达到内存地址队列中包括的内存地址的数量,来增加内存地址队列中包括的每个内存地址的未被使用次数。
S115:将内存地址队列中包括的每个内存地址的未被使用次数增加第二设定值,并将达到内存地址队列中包括的内存地址的数量的接收报文数量或者发送报文数量清零。
若接收报文数量或者发送报文数量达到达到内存地址队列中包括的内存地址的数量,也就是理论上内存地址队列中的每个内存地址被使用一遍,此时就可以将内存地址队列中包括的每个内存地址的未被使用次数增加第二设定值,对于未发生内存泄露的内存单元,后续还会进行报文的转发,内存地址队列中该内存单元的内存地址的未被使用次数会清零,但是对于发生内存泄露的内存单元,后续不会进行报文的转发,内存地址队列中该内存单元的内存地址的未被使用次数不会被清零,而且随着报文转发个数的增加,未被使用次数会增加;并且,将达到内存地址队列中包括的内存地址的数量的接收报文数量或者发送报文数量清零,从而重新开始监控接收报文数量或者发送报文数量。
通过S111-S115可以实现更新内存地址队列中对应的内存地址的未被使用次数,以便于后续基于内存地址的未被使用次数确定该内存地址对应的内存单元是否发生内存泄露。
具体的,上述S12中监控内存地址队列中包括的每个内存地址的未被使用次数是否达到第一设定值,具体包括:
轮询内存地址队列中包括的每个内存地址的未被使用次数;
比较轮询到的未被使用次数与第一设定值是否相等。
由于内存地址队列中包括多个内存地址,可以依次轮询每个内存地址的未被使用次数,并与第一设定值进行比较,确定轮询到的未被使用次数是否等于第一设定值。
可选的,上述S14中强制回收发生内存泄露的内存单元之后,还包括:
将内存地址队列中强制回收的内存单元的内存地址的未被使用次数清零。
由于发生内存泄露的内存单元已被强制回收,也就说该内存单元可以继续单元新的报文的转发,从而可以将内存地址队列中该内存单元的内存地址的未被使用次数清零,以便于继续准确地进行内存泄露的处理。
基于同一发明构思,本发明实施例提供一种内存泄露的处理装置,应用在网络设备的CPU中,该网络设备还包内存,该装置的结构如图3所示,具体包括:
更新模块31,用于在接收第一报文或者发送第二报文后,更新内存地址队列中对应的内存地址的未被使用次数,内存地址队列包括内存中的可用内存单元的内存地址;
监控模块32,用于监控内存地址队列中包括的每个内存地址的未被使用次数是否达到第一设定值;
确定模块33,用于确定内存地址队列中未被使用次数达到第一设定值的内存地址对应的内存单元发生内存泄露;
回收模块34,用于强制回收发生内存泄露的内存单元。
该方案中,预先建立包括内存中的可用内存单元的内存地址的内存地址队列,在接收第一报文或者发送第二报文后,更新内存地址队列中对应的内存地址的未被使用次数,在确定内存地址队列中未被使用次数达到第一设定值的内存地址对应的内存单元发生内存泄露后,强制回收发生内存泄露的内存单元,可以及时恢复发生内存泄露的内存单元,这些内存单元可以继续参与报文的接收和发送,从而确保报文的转发效率,提升整个网络设备的转发性能。
可选的,还包括:
建立模块,用于获取内存中的可用内存单元的内存地址,建立内存地址队列;
设置模块,用于为内存地址队列中的每个内存地址设置计数器,以统计对应内存地址的未被使用次数;
初始化模块,用于初始化设置的计数器的数值。
具体的,更新模块31,用于在接收第一报文或者发送第二报文后,更新内存地址队列中对应的内存地址的未被使用次数,具体用于:
监控是否接收第一报文或者发送第二报文;
若监控到接收第一报文,则确定第一报文使用的第一内存单元后,将内存地址队列中第一内存单元的第一内存地址的未被使用次数清零,将接收报文数量增加第二设定值;若监控到发送第二报文,则确定第二报文使用的第二内存单元后,将内存地址队列中第二内存单元的第二内存地址的未被使用次数清零,将发送报文数量增加第二设定值;
判断接收报文数量或者发送报文数量是否达到内存地址队列中包括的内存地址的数量;
若接收报文数量或发送报文数量达到内存地址队列中包括的内存地址的数量,则将内存地址队列中包括的每个内存地址的未被使用次数增加第二设定值,并将达到内存地址队列中包括的内存地址的数量的接收报文数量或发送报文数量清零。
具体的,监控模块32,用于监控内存地址队列中包括的每个内存地址的未被使用次数是否达到第一设定值,具体用于:
轮询内存地址队列中包括的每个内存地址的未被使用次数;
比较轮询到的未被使用次数与第一设定值是否相等。
可选的,回收模块34,还用于:
强制回收发生内存泄露的内存单元之后,将内存地址队列中强制回收的内存单元的内存地址的未被使用次数清零。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种内存泄露的处理方法,应用在网络设备的中央处理器CPU中,所述网络设备还包括内存,其特征在于,所述方法包括:
在接收第一报文或者发送第二报文的情况下,在内存地址队列中确定当前用于顺序参与报文转发的内存地址为第一目标内存地址,其中,所述内存地址队列包括所述内存中的可用内存单元的内存地址;
在确定所述第一目标内存地址无法分配给所述第一报文或者所述第二报文使用的情况下,更新所述第一目标内存地址的未被使用次数;
确定所述第一目标内存地址之后用于顺序参与报文转发的内存地址为第二目标内存地址,在确定所述第二目标内存地址可以分配给所述第一报文或者所述第二报文使用的情况下,更新所述第二目标内存地址的未被使用次数;
监控所述内存地址队列中包括的每个内存地址的未被使用次数是否达到第一设定值;
确定所述内存地址队列中未被使用次数达到所述第一设定值的内存地址对应的内存单元发生内存泄露;
强制回收发生内存泄露的内存单元。
2.如权利要求1所述的方法,其特征在于,还包括:
获取所述内存中的可用内存单元的内存地址,建立内存地址队列;
为所述内存地址队列中的每个内存地址设置计数器,以统计对应内存地址的未被使用次数;
初始化设置的计数器的数值。
3.如权利要求1所述的方法,其特征在于,所述更新所述第二目标内存地址的未被使用次数,具体包括:
监控是否接收第一报文或者发送第二报文;
若监控到接收第一报文,则确定所述第一报文使用的第一内存单元后,将所述内存地址队列中所述第一内存单元的第一内存地址的未被使用次数清零,将接收报文数量增加第二设定值;若监控到发送第二报文,则确定所述第二报文使用的第二内存单元后,将所述内存地址队列中所述第二内存单元的第二内存地址的未被使用次数清零,将发送报文数量增加所述第二设定值;
判断所述接收报文数量或者所述发送报文数量是否达到所述内存地址队列中包括的内存地址的数量;
若接收报文数量或发送报文数量达到所述内存地址队列中包括的内存地址的数量,则将所述内存地址队列中包括的每个内存地址的未被使用次数增加所述第二设定值,并将达到所述内存地址队列中包括的内存地址的数量的接收报文数量或发送报文数量清零。
4.如权利要求1所述的方法,其特征在于,监控所述内存地址队列中包括的每个内存地址的未被使用次数是否达到第一设定值,具体包括:
轮询所述内存地址队列中包括的每个内存地址的未被使用次数;
比较轮询到的未被使用次数与第一设定值是否相等。
5.如权利要求1-4任一所述的方法,其特征在于,强制回收发生内存泄露的内存单元之后,还包括:
将所述内存地址队列中强制回收的内存单元的内存地址的未被使用次数清零。
6.一种内存泄露的处理装置,应用在网络设备的CPU中,所述网络设备还包括内存,其特征在于,所述装置包括:
更新模块,用于在接收第一报文或者发送第二报文的情况下,在内存地址队列中确定当前用于顺序参与报文转发的内存地址为第一目标内存地址,其中,所述内存地址队列包括所述内存中的可用内存单元的内存地址;在确定所述第一目标内存地址无法分配给所述第一报文或者所述第二报文使用的情况下,更新所述第一目标内存地址的未被使用次数;确定所述第一目标内存地址之后用于顺序参与报文转发的内存地址为第二目标内存地址,在确定所述第二目标内存地址可以分配给所述第一报文或者所述第二报文使用的情况下,更新所述第二目标内存地址的未被使用次数;
监控模块,用于监控所述内存地址队列中包括的每个内存地址的未被使用次数是否达到第一设定值;
确定模块,用于确定所述内存地址队列中未被使用次数达到所述第一设定值的内存地址对应的内存单元发生内存泄露;
回收模块,用于强制回收发生内存泄露的内存单元。
7.如权利要求6所述的装置,其特征在于,还包括:
建立模块,用于获取所述内存中的可用内存单元的内存地址,建立内存地址队列;
设置模块,用于为所述内存地址队列中的每个内存地址设置计数器,以统计对应内存地址的未被使用次数;
初始化模块,用于初始化设置的计数器的数值。
8.如权利要求6所述的装置,其特征在于,所述更新模块,具体用于:
监控是否接收第一报文或者发送第二报文;
若监控到接收第一报文,则确定所述第一报文使用的第一内存单元后,将所述内存地址队列中所述第一内存单元的第一内存地址的未被使用次数清零,将接收报文数量增加第二设定值;若监控到发送第二报文,则确定所述第二报文使用的第二内存单元后,将所述内存地址队列中所述第二内存单元的第二内存地址的未被使用次数清零,将发送报文数量增加所述第二设定值;
判断所述接收报文数量或者所述发送报文数量是否达到所述内存地址队列中包括的内存地址的数量;
若接收报文数量或发送报文数量达到所述内存地址队列中包括的内存地址的数量,则将所述内存地址队列中包括的每个内存地址的未被使用次数增加所述第二设定值,并将达到所述内存地址队列中包括的内存地址的数量的接收报文数量或发送报文数量清零。
9.如权利要求6所述的装置,其特征在于,所述监控模块,用于监控所述内存地址队列中包括的每个内存地址的未被使用次数是否达到第一设定值,具体用于:
轮询所述内存地址队列中包括的每个内存地址的未被使用次数;
比较轮询到的未被使用次数与第一设定值是否相等。
10.如权利要求6-9任一所述的装置,其特征在于,所述回收模块,还用于:
强制回收发生内存泄露的内存单元之后,将所述内存地址队列中强制回收的内存单元的内存地址的未被使用次数清零。
CN201910199071.1A 2019-03-15 2019-03-15 内存泄露的处理方法及装置 Active CN110032464B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910199071.1A CN110032464B (zh) 2019-03-15 2019-03-15 内存泄露的处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910199071.1A CN110032464B (zh) 2019-03-15 2019-03-15 内存泄露的处理方法及装置

Publications (2)

Publication Number Publication Date
CN110032464A CN110032464A (zh) 2019-07-19
CN110032464B true CN110032464B (zh) 2023-06-16

Family

ID=67236157

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910199071.1A Active CN110032464B (zh) 2019-03-15 2019-03-15 内存泄露的处理方法及装置

Country Status (1)

Country Link
CN (1) CN110032464B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814049A (zh) * 2010-03-23 2010-08-25 北京大学 一种内存泄漏探测方法
CN105302714A (zh) * 2014-07-24 2016-02-03 腾讯科技(深圳)有限公司 一种测试过程中内存泄漏的监控方法和装置
CN106055478A (zh) * 2016-05-31 2016-10-26 腾讯科技(深圳)有限公司 检测内存泄漏的方法和装置
CN106610892A (zh) * 2015-10-23 2017-05-03 腾讯科技(深圳)有限公司 内存泄漏检测方法和装置
CN108415837A (zh) * 2018-02-26 2018-08-17 北京天融信网络安全技术有限公司 网关内存泄露的检测方法、装置及可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8397048B2 (en) * 2009-12-11 2013-03-12 Sap Ag Memory leak detection during dynamic memory allocation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814049A (zh) * 2010-03-23 2010-08-25 北京大学 一种内存泄漏探测方法
CN105302714A (zh) * 2014-07-24 2016-02-03 腾讯科技(深圳)有限公司 一种测试过程中内存泄漏的监控方法和装置
CN106610892A (zh) * 2015-10-23 2017-05-03 腾讯科技(深圳)有限公司 内存泄漏检测方法和装置
CN106055478A (zh) * 2016-05-31 2016-10-26 腾讯科技(深圳)有限公司 检测内存泄漏的方法和装置
CN108415837A (zh) * 2018-02-26 2018-08-17 北京天融信网络安全技术有限公司 网关内存泄露的检测方法、装置及可读存储介质

Also Published As

Publication number Publication date
CN110032464A (zh) 2019-07-19

Similar Documents

Publication Publication Date Title
CN105933407B (zh) 一种实现Redis集群高可用的方法及系统
EP3142011A1 (en) Anomaly recovery method for virtual machine in distributed environment
CN107870948A (zh) 任务调度方法和装置
WO2017215441A1 (zh) 一种分布式系统中单板配置自恢复方法及装置
WO2016126864A4 (en) System and method for introducing functionality to an application for use with a network service
CN106776243B (zh) 一种针对监控软件的监控方法及装置
CN110618864A (zh) 一种中断任务恢复方法及装置
US7434204B1 (en) Method and apparatus for managing software processes
CN109379246B (zh) 一种内存的检测方法及装置
CN107566036B (zh) 自动检测通信中的错误并且自动确定该错误的源
CN104601702A (zh) 集群远程过程调用方法及系统
CN104298565A (zh) 一种初始化端口的方法及装置
CN107729213B (zh) 一种后台任务监控方法及装置
CN115328741A (zh) 一种异常处理方法、装置、设备和存储介质
CN105095046A (zh) 任务监控的方法及装置
CN110460491B (zh) 基于rdma的性能测试方法及装置
US20170123942A1 (en) Quorum based aggregator detection and repair
CN110032464B (zh) 内存泄露的处理方法及装置
CN114615310A (zh) 一种维护tcp连接的方法、装置及电子设备
CN109062781B (zh) 一种报文缓冲区管理方法及装置
CN108021407B (zh) 基于网络设备的业务处理方法及装置
CN109450702A (zh) 一种数据处理方法及装置
CN110764709B (zh) 报文的处理方法及装置
CN114448932A (zh) 地址分配方法、装置及电子设备
CN112995095B (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
GR01 Patent grant
GR01 Patent grant