当前位置:  技术问答>linux和unix

网络发送数据时 进程所占内存缓慢增加,直到系统内存耗尽而killed掉,[请大家帮忙]

    来源: 互联网  发布时间:2016-08-30

    本文导语:  本帖最后由 ykeastronaut 于 2010-05-29 15:09:06 编辑 出了个很棘手的问题,请大家帮我看看哪里出了问题。 问题:      这几天在调arm-linux开发板上的网络通信程序,当在不断发送数据到Windows上的客户端时,该进程所占...

本帖最后由 ykeastronaut 于 2010-05-29 15:09:06 编辑
出了个很棘手的问题,请大家帮我看看哪里出了问题。
问题:
     这几天在调arm-linux开发板上的网络通信程序,当在不断发送数据到Windows上的客户端时,该进程所占内存不断缓慢增加,由刚开始的9401kB,缓慢增加到40784KB,几乎将开发板上的可用内存全部耗尽,最后被系统的oom-killer给kill掉该进程。查找了所有可能出现内存溢出的地方,但仍然苦思得不到原因。也调用了以前的一些TCP/IP socket程序来看,仍然存在其进程所占内存不断增加的情况,只不过其增加没有现在这么快,而当时未注意到这种情况而已。

排除:
   1>每次基本上都是从开发板上发送4096*4=16384Byte大小的数据包。调试时,不启动板上的发送数据操作,该进程里其他线程所占的内存都基本是一个恒定值,但当激活该发送数据操作时,该进程所占内存几乎以每次200KB的速度递增,直到被系统杀掉。
   2>结合windows客户端所收到的数据所占空间大小,发觉开发板进程所增加的内存几乎就等于其传输到客户端的数据所占得内存?
仍然未查到相关的原因,不知道是不是板上内核缓冲区未将发送完的数据清除? 大家给点意见,感谢!

|
那看来就是xdr_free的问题了,我猜测Device_ReadResp这个类型有个自己的clear函数,但是你忘了调用,或者是xdr_free的调用格式错了。

|
楼主在网络通信程序中每次所要发送数据那部分程序是用共享内存的方式实现的吗?
由刚开始的9401kB,缓慢增加到40784KB,几乎将开发板上的可用内存全部耗尽
从上面看出你没有重复利用内存。

|
问题很简单阿,result.data.data_val = (char *)malloc(sizeof(char*)num_bytes);
看那块free这个内存了,xdr_free应该不会负责释放吧,看参数就能看出来,传进去的是(char*)&result

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请介绍两本LINUX下关于多进程,网络编程的书籍
  • 网络接口事件日志守护进程 NIELD
  • 求助:32位机子里写的进程控制,网络通讯等程序在64位的机子里能否正常运行?
  • 趋势的一道面试题:网络编程中设计并发服务器,使用多进程 与 多线程 ,请问有什么区别?
  • 关于unix网络编程--进程间通讯 和 solaris的安装问题
  • 网络守护进程服务程序 xinetd
  • 菜鸟Unix网络编程问题,僵尸进程
  • C#网络编程基础之进程和线程详解
  • 关于:UNIX网络编程第二卷 进程间通信问题!
  • Docker、Kubernetes、Neutron中的网络简介
  • 怎么用dos命令配置登陆网络,随便什么网络,举例就行~
  • 基于python实现的网络爬虫功能:自动抓取网页介绍
  • 系统网络问题之网络配置
  • 分布式CAP理论介绍:一致性(Consistency),可用性(Availability),容忍网络分区(Partition tolerance)
  • 网络爬虫/网络蜘蛛 larbin
  • 应对 Docker 网络功能难题的挑战与思考
  • 如何将运行dos的机子联入网络,或在dos下使用网络硬盘
  • Android及andriod无线网络Wifi开发的几点注意事项
  • linux不用命令方式读文件获取网络流量,如何使用C函数调用获取网络流量信息?
  • centos6网络配置及网卡设置相关命令及配置文件
  • 用java做网络编程和用c做网络编程有啥区别
  • Docker扁平化网络设计与实现
  • 急,请问如何修改网络接口eth为其它名称,如网络接口为abc0, abc1,要修改哪个配置文件?
  • IOS开发之socket网络编程(基于SimpleNetworkStreams的c/s程序)
  • 如何打开SUN工作站进入网络管理系统和退出网络管理系统,并关机。
  • Docker 四种网络模式及网络配置详细介绍
  • 请问unix网络编程和linux网络有什么区别
  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • 大家有没有什么能看当前网络流量的工具,能象top一样列出当前的网络状况
  • Ubuntu ADSL上网,网络信息查看及防火墙相关配置命令介绍
  • 嵌入式网络编程与非嵌入式网络编程有什么不同


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3