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

LINUX系统某一目录当写入2万个文件后内存发生泄漏!附源代码

    来源: 互联网  发布时间:2016-03-05

    本文导语:  LINUX系统某一目录当写入2万个文件后内存发生泄漏!附源代码 //g++ -o mem mem.cpp #include  #include  //获取内存信息  bool getmeminfo(double * total,double * used ,double * free) { struct sysinfo info; sysinfo(&info); *total = (double)in...

LINUX系统某一目录当写入2万个文件后内存发生泄漏!附源代码
//g++ -o mem mem.cpp
#include 
#include 
//获取内存信息 
bool getmeminfo(double * total,double * used ,double * free)
{
struct sysinfo info;
sysinfo(&info);
*total = (double)info.totalram/(1024.0*1024.0);
*used = (double)(info.totalram-info.freeram)/(1024.0*1024.0);
*free = (double)info.freeram/(1024.0*1024.0);
return true;
}

int main()
{
unsigned char * pbuffer = new unsigned char[1024*1024*3];
double total = 0.0;
double used = 0.0;
double free = 0.0;
long id = 0;
char strfile[256];
while(1)
{
 
FILE * fp;
sprintf(strfile,"/data/%ld",id++);
if ((fp=fopen(strfile,"w")) ==NULL)

{

return false;

}

fwrite(pbuffer,1,1024*1024*3,fp);

fclose(fp); 
getmeminfo(&total,&used,&free);
printf(" used=%0.3f id == %dn", used, id);// 打印内存信息,发现当id > 20000的时候出现内存增长
remove(strfile);
}
delete  pbuffer;
return 0;
}

|
楼主所谓的内存泄漏应该是很小的吧。这可能是因为系统回收内存的问题。有的系统回收内存是检测到一定长度并且连续的内存均未使用才将其回收。若没到达该长度就算有释放的内存系统也不会立即回收。

|
不明白   cceczjxy   方法的意图,
不知道内存涨到100%后会发生什么情况?

---------------------------
如果是程序内存泄漏,那起多个进程会使内存泄漏的速度成倍增加。
但在测试中没有出现这样的情况。说明应该不是程序的原因。
再着,你测试过程中要尽量把其他程序关掉,才能更准确的体现结果。因为你显示的是整个系统的信息。
系统的内存管理进程保证了内存使用不会达到100%,在内核线程kswapd和pdflush中,在内存分配时和定时监控内存的使用情况,如果空闲内存页面小于某个值(默认5%,这个值在编译内核时可以修改的),会释放一些内存页面的。

    
 
 

您可能感兴趣的文章:

  • linux下内存泄漏的工具
  • 现在我用c语言在linux下写一个服务端程序现发现了内存泄漏问题
  • 恳请对服务器的开发有经验的谈谈服务器开发经验(Unix/Linux & Win32):服务器构架、内存泄漏检测,异常出错……!!!
  • linux中,大家的程序是如何来控制内存泄漏的?
  • 网上一个Linux内存泄漏检测工具MemSnapShot.cpp在Hp Unix 下报的错!
  • 故障求助:linux系统无法向磁盘写入文件
  • 如何在Windows下向Linux分区写入文件?
  • linux下,如何向文件中写入文件结束符。
  • Linux下多线程写入同一个文件
  • 高分提问:为何在局域网内可以访问linux机器,然而不能在其文件夹内写入文件?
  • linux下文件写入问题。
  • linux下可以访问windows分区,但无法向其写入数据,why?how?
  • 如何在Linux下的Snort中直接写入Windows下的MS-SQL
  • linux svn 下文件被写入了 <<<<<<< .mine 这样的字符,谁知道怎么回事吗?
  • 如何在LINUX下打开一个设备文件,如何向里面写入数据?
  • linux下利用fwrite文件写入过程中突然断电的处理
  • 远程linux主机上,php 无法创建写入文件
  • Linux下C程序如何将宽字符数据正确写入文件不当中去????
  • 请教linux(C语言)下标准ini文件的读取,写入?配置管理
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux源代码的时间函数源代码
  • RedHat Linux是开放源代码的吗?如何能看见它的源代码,如何进行修改?
  • 为什么比较freebsd和linux的源代码,觉得linux的代码十分的庞大。。
  • 高深问题:有了linux内核源代码如何做成一个linux操作系统
  • 我们知道内核源代码文件都放在/linux下,但目录/linux的绝对路径是啥?谢谢!
  • 高分请教!Netscape浏览器的源代码公开了吗?从那里可以得到For linux的源代码?
  • 谁能告诉我早期LINUX内核的源代码和C编译器的源代码,哪能找到!谢谢!要多少分都给!
  • 谁有最早版本的LINUX源代码?能发给我一份吗?高分求救啊……我真的很需要最早的一些版本的源代码的!
  • 推荐一下研究LINUX源代码的好书
  • 在哪里可以看到Linux的源代码???
  • 大家推荐几本详解Linux或unix 操作系统源代码的书籍!!!!
  • 哪儿可以下再到LINUX源代码?
  • 如何打开linux的源代码?
  • linux源代码查找
  • Linux源代码哪本书分析的好一点??
  • 求助如何顺利的阅读linux内核源代码
  • 哪个地方有下载linux服务器源代码?
  • linux c/c++源代码
  • linux 源代码的学习问题
  • 哪里有LINUX源代码分析的文章吗?万分紧急!
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


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

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

    浙ICP备11055608号-3