OMNeT ++的一个程序的内存只能使用2GB吗?

时间:2015-10-13 12:38:58

标签: memory out-of-memory omnet++

我在服务器上运行模拟,至少有27GB内存。 我的程序的功能是将数据包逐个插入到队列中,每个时间间隔都会加扰。当程序的内存占用2GB时,通过观察服务器的任务管理器,程序被错误地停止。所以我会问几个问题:

  1. 如果在服务器中有足够的内存,如何将2GB的值配置为更大的值?

  2. 数据包占用并保存在队列中的字节数,以记录其信息?

  3. 我认为对于模拟器来说,数据包(cPacket)会带来很多信息,并且很容易使内存完整,甚至大多数信息都不会被使用。所以,如果我想生成一个数据包,只需带上我需要的信息,我该怎么办,而不使用cPacket?
  4. 我编码sizeof(队列),值总是4,无论是插入数据包还是poped,为什么?还有其他的话来看看队列的内存使用了多少?
  5. 其他信息: 1.当我运行2个程序时,总内存可能大于2GB,如果单个程序使用少于2GB,则没有错误。

    非常感谢!!

1 个答案:

答案 0 :(得分:1)

OMNeT ++附带一个32位版本的MinGW,这意味着在Windows上编译的所有omnet ++模拟都将是32位进程。 32位进程不能大于2GB(在Windows上的某些版本上为3GB)。所以你看到的是32位地址空间的硬限制。即使主操作系统是64位(如您的情况),也是如此。

Linux和Mac OS X上的OMNeT ++使用64位编译器,因此这些限制不适用。这个问题的简短答案是你应该在Linux或Mac OS上运行你的模拟。

由于这似乎是一台相对较大的机器,我想你无法用Linux重新安装它。一个好的解决方法是将64位Linux发行版安装到虚拟机客户机中,并使用它来运行OMNeT ++模拟。这样你几乎可以使用机器的所有物理资源。