CN103716234B - 一种定位报文内存泄露的方法 - Google Patents
一种定位报文内存泄露的方法 Download PDFInfo
- Publication number
- CN103716234B CN103716234B CN201310703289.9A CN201310703289A CN103716234B CN 103716234 B CN103716234 B CN 103716234B CN 201310703289 A CN201310703289 A CN 201310703289A CN 103716234 B CN103716234 B CN 103716234B
- Authority
- CN
- China
- Prior art keywords
- flag bit
- message
- value
- messages
- internal memory
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000012545 processing Methods 0.000 claims abstract description 18
- 238000012216 screening Methods 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 6
- 239000000700 radioactive tracer Substances 0.000 claims 1
- 230000006870 function Effects 0.000 description 11
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种定位报文内存泄露的方法,该方法包括:在报文头中设置用于表示报文内存是否被占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上;当出现报文内存泄露时,遍历链表,获取所有报文的第一标志位和第二标志位;根据第一标志位的值找出内存被占用的报文;统计内存被占用的所有报文的第二标志位的值,找出出现次数最多的第二标志位的值;根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的位置。本发明能够在短时间内缩小问题范围,从而达到快速定位报文内存泄露的目的。
Description
技术领域
本发明涉及网络技术领域,具体涉及一种定位报文内存泄露的方法。
背景技术
对网络报文的处理是网络设备的基础。当网络设备的网卡等硬件接收到一个报文时会将报文保存到一块预先分配的内存中,网络设备中的cpu会到内存中获取报文的内容,并对报文内容进行分析、处理,根据处理结果对报文进行发送或者丢弃。不论最终是将报文发送出去还是丢弃掉,报文对应的内存都将被释放,否则就会造成内存泄露。当发生内存泄露后,由于不能再申请到内存,因此网卡的硬件就无法将网络报文放到内存中,cpu也就无法接收报文,整个网络设备也就无法工作。
由于目前网络设备很复杂,提供的功能极多,因此要想定位一个报文内存泄露的问题是非常难的,现有的技术方法通常是聚集相关开发、测试专家,对问题进行多次复现,并逐步找到问题规律,然后根据代码一点一点查找,最终定位报文内存泄露的地方。
现有的技术没有提供一个良好的,通用的方法来解决此类问题,需要花费大量的人力去攻关,甚至不能在较短时间内缩小问题范围。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供一种定位报文内存泄露的方法,能够在短时间内缩小问题范围,从而快速定位内存泄露问题。
(二)技术方案
为了达到以上目的,本发明通过以下技术方案予以实现:
一种定位报文内存泄露的方法,该方法包括:
在报文头中设置用于表示报文内存是否被占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上;
当出现报文内存泄露时,遍历链表,获取所有报文的第一标志位和第二标志位;
根据第一标志位的值找出内存被占用的报文;
统计内存被占用的所有报文的第二标志位的值,找出出现次数最多的第二标志位的值;
根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的位置。
较佳地,该方法还包括:
将第一标志位和第二标志位均初始化为所设置的初始值;
随着***的运行,第一标志位随着报文内存的占用情况而变化,第二标志位随着报文被处理的阶段而动态的变化。
其中,所述遍历链表,获取所有报文的第一标志位和第二标志位,包括:通过链表头访问所有报文的报文头,从而获得报文头中的第一标志位和第二标志位。
一种定位报文内存泄露的***,该***包括:预处理单元,链表查询单元,第一标志位筛选单元,第二标志位筛选单元和查询单元;
预处理单元,用于在报文头中设置用于表示报文内存是够占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上;
链表查询单元,当出现报文内存泄露时,用于遍历链表,获取所有报文的第一标志位和第二标志位;
第一标志位筛选单元,用于根据报文第一标志位的值找出内存被占用的报文;
第二标志位筛选单元,用于统计内存被占用的所有报文的第二标志位的值,找出出现次数最多的第二标志位的值;
查询单元,用于根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的地方。
较佳地,该***还包括:
初始化单元,用于将第一标志位和第二标志位均初始化为所设置的初始值;
标志位处理单元,使得第一标志位随着报文内存的占用情况而变化,第二标志位随着报文被处理的阶段而动态的变化。
其中,所述链表查询单元用于通过链表头访问所有报文的报文头,以获取报文头中的第一标志位和第二标志位。
(三)有益效果
本发明至少有如下有益效果:
本发明通过对报文进行预处理,即在报文头中添加两个标志位,能够实时跟踪报文的处理情况。而且根据表示报文处理阶段的标志位,能够快速定位报文内存泄露的位置。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。
图1是本发明一个实施例提供的一种定位报文内存泄露的方法的流程图;
图2是本发明一个较佳实施例提供的一种定位报文内存泄露的方法的流程图;
图3是本发明一个实施例提供的一种定位报文内存泄露***的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,本发明实施例提供了一种定位报文内存泄露的方法,包括如下步骤:
步骤101:在报文头中设置用于表示报文内存是否被占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上。
步骤102:当出现报文内存泄露时,遍历链表,获取所有报文的第一标志位和第二标志位。
本步骤中,通过链表头访问所有报文的报文头,从而获得报文头中的第一标志位和第二标志位。
步骤103:根据第一标志位的值找出内存被占用的报文。
步骤104:统计内存被占用的所有报文的第二标志位的,找出出现次数最多的第二标志位的值。
步骤105:根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的位置。
本发明实施例通过对报文进行预处理,即在报文头中添加两个标志位,能够实时跟踪报文的处理情况。而且根据表示报文处理阶段的标志位,能够短时间内缩小问题范围,快速定位报文内存泄露的位置。
下面通过一个具体的例子,来更为详细的说明本发明一个较佳实施例的实现过程。参见图2,该过程包括如下步骤:
步骤201:在报文头中设置用于表示报文内存是够占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上。
步骤202:将第一标志位和第二标志位均初始化为所设置的初始值。
本步骤中,将第一标志位和第二标志位初始化,如将其初始值均设为0。
步骤203:随着***的运行,第一标志位随着报文内存的占用情况而变化,第二标志位随着报文的处理阶段而变化。
本步骤中,随着***的运行,上述第一标志位和第二标志位的初始值就会随着变化。例如,由于初始化时,报文内存未被占用,则第一标志位为初始值0,而随着***的运行,当报文内存被申请出去时,对应地第一标志位的值应变为1;而第二标志位表示报文的处理阶段,若假设报文流程会经历3个函数:函数A、函数B和函数C,那么可以这样处理,当报文进入函数A时,设置报文的第二标志位为1,当报文进入函数B时,设置报文的第二标志位为2,当报文进入C时,设置报文的第三标志位为3。
步骤204:当出现报文内存泄露时,遍历链表,获取所有报文的第一标志位和第二标志位。
本步骤中,通过链表头访问所有报文的报文头,从而获得报文头中的第一标志位和第二标志位。
步骤205:根据第一标志位的值找出内存被占用的报文。
步骤206:统计内存被占用的所有报文的第二标志位的,找出出现次数最多的第二标志位的值。
步骤207:根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的位置。
本步骤中,例如,若10个正在使用的报文中,magic字段为2的最多,一共有8个。那么说明报文基本上都通过了函数A,但是都在函数B中出现了问题,因而不会进入函数C,由此可以说明在函数B中发生了内存泄露。
参见图3,本发明实施例提供了一种定位报文内存泄露的***,该***包括:预处理单元301,初始化单元302,标志位处理单元303,链表查询单元304,第一标志位筛选单元305,第二标志位筛选单元306和查询单元307;
预处理单元301,用于在报文头中设置用于表示报文内存是否被占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上;
初始化单元302,用于将第一标志位和第二标志位均初始化为所设置的初始值;
标志位处理单元303,使得第一标志位随着报文内存的占用情况而变化,第二标志位随着报文被处理的阶段而动态的变化;
链表查询单元304,当出现报文内存泄露时,用于遍历链表,获取所有报文的第一标志位和第二标志位;
第一标志位筛选单元305,用于根据报文第一标志位的值找出内存被占用的报文;
第二标志位筛选单元306,用于统计内存被占用的所有报文的第二标志位的值,找出出现次数最多的第二标志位的值;
查询单元307,用于根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的地方。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (6)
1.一种定位报文内存泄露的方法,其特征在于,该方法包括:
在报文头中设置用于表示报文内存是否被占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上;
当出现报文内存泄露时,遍历链表,获取所有报文的第一标志位和第二标志位;
根据第一标志位的值找出内存被占用的报文;
统计内存被占用的所有报文的第二标志位的值,找出出现次数最多的第二标志位的值;
根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的位置。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:
将第一标志位和第二标志位均初始化为所设置的初始值;
随着***的运行,第一标志位随着报文内存的占用情况而变化,第二标志位随着报文被处理的阶段而动态的变化。
3.根据权利要求1所述的方法,其特征在于,所述遍历链表,获取所有报文的第一标志位和第二标志位,包括:通过链表头访问所有报文的报文头,从而获得报文头中的第一标志位和第二标志位。
4.一种定位报文内存泄露的***,其特征在于,该***包括:预处理单元,链表查询单元,第一标志位筛选单元,第二标志位筛选单元和查询单元;
预处理单元,用于在报文头中设置用于表示报文内存是否被占用的第一标志位和用于表示报文被处理阶段的第二标志位,并将所有报文挂在一个链表上;
链表查询单元,当出现报文内存泄露时,用于遍历链表,获取所有报文的第一标志位和第二标志位;
第一标志位筛选单元,用于根据报文第一标志位的值找出内存被占用的报文;
第二标志位筛选单元,用于统计内存被占用的所有报文的第二标志位的值,找出出现次数最多的第二标志位的值;
查询单元,用于根据出现次数最多的第二标志位的值找到对应的报文处理阶段,即为报文内存泄露的地方。
5.根据权利要求4所述的***,该***还包括:
初始化单元,用于将第一标志位和第二标志位均初始化为所设置的初始值;
标志位处理单元,使得第一标志位随着报文内存的占用情况而变化,第二标志位随着报文被处理的阶段而动态的变化。
6.根据权利要求4所述的***,其特征在于,所述链表查询单元用于通过链表头访问所有报文的报文头,以获取报文头中的第一标志位和第二标志位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310703289.9A CN103716234B (zh) | 2013-12-19 | 2013-12-19 | 一种定位报文内存泄露的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310703289.9A CN103716234B (zh) | 2013-12-19 | 2013-12-19 | 一种定位报文内存泄露的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103716234A CN103716234A (zh) | 2014-04-09 |
CN103716234B true CN103716234B (zh) | 2017-11-28 |
Family
ID=50408833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310703289.9A Active CN103716234B (zh) | 2013-12-19 | 2013-12-19 | 一种定位报文内存泄露的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103716234B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360954B (zh) * | 2014-10-30 | 2017-10-24 | 上海斐讯数据通信技术有限公司 | 一种已申请内存块的统计方法和*** |
CN109144736A (zh) * | 2018-09-30 | 2019-01-04 | 新华三信息安全技术有限公司 | 一种输出警告消息的方法及装置 |
CN113672416B (zh) * | 2021-07-27 | 2024-03-01 | 杭州迪普科技股份有限公司 | 硬buffer泄漏的原因定位方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1845080A (zh) * | 2005-04-07 | 2006-10-11 | 华为技术有限公司 | 内存泄漏检测及防止的方法 |
CN101339533A (zh) * | 2007-07-04 | 2009-01-07 | 国际商业机器公司 | 基于分区的诊断Java***的内存泄漏的方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100392606C (zh) * | 2005-07-14 | 2008-06-04 | 中兴通讯股份有限公司 | 一种定位虚拟操作***内存泄漏的方法 |
CN100504807C (zh) * | 2006-10-13 | 2009-06-24 | 中兴通讯股份有限公司 | 一种通信设备***中内存泄漏的检测方法 |
CN101599046B (zh) * | 2009-06-26 | 2011-12-14 | 深圳市茁壮网络股份有限公司 | 一种内存检测方法及装置 |
CN102117242B (zh) * | 2009-12-30 | 2015-04-29 | 新奥特(北京)视频技术有限公司 | 一种检测内存泄露的方法和装置 |
-
2013
- 2013-12-19 CN CN201310703289.9A patent/CN103716234B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1845080A (zh) * | 2005-04-07 | 2006-10-11 | 华为技术有限公司 | 内存泄漏检测及防止的方法 |
CN101339533A (zh) * | 2007-07-04 | 2009-01-07 | 国际商业机器公司 | 基于分区的诊断Java***的内存泄漏的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103716234A (zh) | 2014-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112012005533B4 (de) | Unterstützende Abfrage und ein Abfragen | |
Alkhazaleh et al. | Fuzzy soft multiset theory | |
MX2015011167A (es) | Aparato y metodo para el procesamiento de multiples interfaces abiertas de programacion de aplicacion (apis). | |
CN103716234B (zh) | 一种定位报文内存泄露的方法 | |
CN102915344B (zh) | 一种sql语句处理方法及装置 | |
CN114116065B (zh) | 获取拓扑图数据对象的方法、装置、及电子设备 | |
Wang | New delay‐dependent stability criteria for descriptor systems with interval time delay | |
RU2015102084A (ru) | Способ предоставления функций в промышленной системе автоматизации и промышленная система автоматизации | |
Li et al. | On fixed point theory of monotone mappings with respect to a partial order introduced by a vector functional in cone metric spaces | |
CN103440197B (zh) | 一种基于对比测试自动生成差异测试报告的方法 | |
CN103999079A (zh) | 对准文档的字段的注解 | |
CN102855278B (zh) | 一种仿真方法和*** | |
CN104462322A (zh) | 字符串比对方法和装置 | |
CN107436920A (zh) | Node.js权限控制方法、存储介质、电子设备及*** | |
Farajzadeh et al. | An application of fixed point theory to a nonlinear differential equation | |
CN106570017A (zh) | 一种数据缓存方法及*** | |
Arif | Sufficiency Criteria for a Class of p‐Valent Analytic Functions of Complex Order | |
CN105808212A (zh) | 产品支持工具的扩展方法和*** | |
Balas | Integer programming | |
Shang et al. | Ball‐Covering Property in Uniformly Non‐l 3 (1) Banach Spaces and Application | |
KR102072236B1 (ko) | 정형 스트림 데이터 처리장치 및 처리방법 | |
CN103544317A (zh) | 维度表数据的处理方法和装置 | |
CN105245400A (zh) | 一种sdn服务链应用有效性的检测方法 | |
CN103390054B (zh) | 云数据中心中管理流程节点的方法和*** | |
Tang et al. | A Regularity Criterion for the Magneto‐Micropolar Fluid Equations in B˙∞,∞− 1 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PP01 | Preservation of patent right |
Effective date of registration: 20180528 Granted publication date: 20171128 |
|
PP01 | Preservation of patent right | ||
PD01 | Discharge of preservation of patent |
Date of cancellation: 20240528 Granted publication date: 20171128 |
|
PP01 | Preservation of patent right |
Effective date of registration: 20240528 Granted publication date: 20171128 |