ofomnet工程调试 之 大型网络仿真不能有C++内存溢出

C++内存溢出是大型网络仿真绕不过的阻碍!

解决方案: 遇到这种问题并不可怕,首先看看当前仿真中的数据包数量是不是巨大,是则去找找每个数据包在哪个模块逗留,改对应的代码即可.如果不是这个问题,那就构造一个简单的网络, 用inet中的模块替换你自己写的模块,以此找出问题模块,然后改吧.

故事简介:

今天发现交换机在为查询流表时新建了match结构体却没有删除,剪切代码如下,

void Open_Flow_Processing::processQueuedMsg(cMessage *data_msg) {...    oxm_basic_match *match = new oxm_basic_match();...

用这个代码跑一个大数据量的网络仿真, 没过几秒就出现如下bug. 显然每处理一个数据包就浪费掉oxm_basic_match大小的内存, 因而没处理多少数据包就挂掉了.

Simulation terminated with exit code: 3
Working directory: D:/omnetpp-4.2.2/samples/openflow/scenarios
Command line: ../openflow.exe -r 0 -u Cmdenv -c EXR-noweight -n ..;../../inet/examples;../../inet/src -l ../../inet/src/inet --record-eventlog=false --debug-on-errors=false FT42.ini

或者

unable to alloc 70 bytes

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application‘s support team for more information.
Font {Segoe UI} 9 still in cache.

Simulation terminated with exit code: 3
Working directory: D:/omnetpp-4.2.2/samples/openflow/scenarios
Command line: ../openflow.exe -r 0 -u Tkenv -c EXR-noweight -n ..;../../inet/examples;../../inet/src -l ../../inet/src/inet --record-eventlog=false --debug-on-errors=false FT42.ini
时间: 2024-10-12 16:19:02

ofomnet工程调试 之 大型网络仿真不能有C++内存溢出的相关文章

android客户端加载网络大图片如何避免内存溢出

在Android开发中加载sdcard上的大图片到内存时容易导致OOM异常,常见的解决办法是基于BitmapFactory.Options类提供的方法定义指定的解码方式,设置inJustDecodeBounds属性为true,避免分配内存,返回一个null的Bitmap对象(包含outWidth,outHeightandoutMimeType),然后读取图片的尺寸和类型.再根据屏幕的高和宽对图片进行缩放,最后将缩放的图片加载到内存,主要代码如下: 1 Options opts = new Opt

网络仿真中的有限状态机(FSM)

最近在看<OMNET++ User Mannul>,了解到了有限状态机的工作机制.相比早之前看过的<OPNET xxx>教材中讲解FSM不明不白,<OMENT++ User Mannul>讲解的更为清晰简洁,且有偏底层的代码做实例,更易理解. FSM是指完成模块功能的一种手法(例如OMNET++中的模块功能可选择是否由FSM完成),下文的FSM均指模块中的FSM. 构成FSM的主体为状态(State)和状态跳转(State Transition),其中状态分为两种:1)

NS2网络仿真的过程

NS2网络仿真的过程可以总结为: 1.初始化 创建ns simulator 创建.tr文件(记录仿真结果) 创建.nam文件(记录仿真过程) 设置结束函数 设置仿真中所需的参数 2.创建仿真拓扑 创建节点 创建并设置链路 设置链路各链路在nam中的排列方式 3.创建流量 探测流量:向网络中添加的额外流量,通过对这些流量进行统计分析可以获得端到端性能参数,在ns2中可以通过设置CBR.UDP.TCP等形式的流量实现. 背景流量:用于模拟网络中已经存在的流量,可以有TCP.UDP.短时TCP等多种形

Windows系统CPU内存网络性能统计第一篇 内存

最近翻出以前做过的Windows系统性能统计程序,这个程序可以统计系统中的CPU使用情况,内存使用情况以及网络流量.现在将其整理一下(共有三篇),希望对大家有所帮助. 目录如下: 1.<Windows系统CPU内存网络性能统计第一篇 内存> 2.<Windows系统CPU内存网络性能统计第二篇 CPU> 3.<Windows系统CPU内存网络性能统计第三篇网络流量> 本篇将介绍统计系统内存使用情况,包括内存使用率.总物理内存大小.可用物理内存大小.总虚拟内存大小,可用虚

NS3网络仿真(2):first.py

1    安装基本模块 11  安装Python 12  安装PTVS 13  添加对python-279的支持 2    在vs2013下编译NS3 3    编译NetAnim 4    在vs2013下使用ns 快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 学习一下ns中的第一个示例脚本,first.py,这个示例模拟一个Echo服务和客户端之间的通信. 1.1    导入所需要的库 ns3的每一个模块都有一个对应的用C++开发的dl

NS3网络仿真(8): 实时仿真

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 NS3支持实时仿真,且可以将NS3模拟生成的数据包通过主机上真实的网卡发送出去,本节尝试运行NS3中自带的fd-emu-ping示例,使用NS3模拟一台设备,再通过主机上的网口ping一台网络上的真实设备. // Allow ns-3 to ping a real host somewhere, using emulation mode // // +----------------------

NS3网络仿真(7): Wifi节点

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在上一节中,我们仿真了一个总线型网络,这一节尝试将上一节中的n0变成一个无线的AP,再连上几个节点.这也是NS3中的示例third.cc干的事情,只是我们用Python实现. // Default Network Topology // // Wifi 10.1.3.0 // AP // * * * * // | | | | 10.1.1.0 // n5 n6 n7 n0 -----------

NS3网络仿真(6): 总线型网络

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在NS3提供的第一个示例first.py中,模拟了一个点对点的网络,接下来的一个示例代码模拟了一个总线型网络及CSMA协议. # // Default Network Topology # // # // 10.1.1.0 # // n0 -------------- n1 n2 n3 n4 # // point-to-point | | | | # // ================ #

NS3网络仿真(14): TCP连接与端口扫描

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 本节学习一下使用NS3构造一个TCP包,再利用构造好的TCP包进行最简单的TCP端口扫描. 1.    TCP协议数据报头 下图中给出了TCP协议数据报头的格式. 源端口.目的端口:16位长.标识出远端和本地的端口号. 顺序号:32位长.表明了发送的数据报的顺序. 确认号:32位长.希望收到的下一个数据报的序列号. TCP协议数据报头DE 头长:4位长.表明TCP头中包含多少个32位字. 接下来