linux – 内存使用:程序分配太多内存

我用C编写了一个用于Ubuntu Server(64位)的程序,该程序应该全天候运行.服务器有2GB内存,但显然我的程序分配了太多的内存.

这是大约2小时后的顶部输出

top - 13:35:57 up  1:39,1 user,load average: 0.15,0.13,0.08
Tasks:  68 total,2 running,66 sleeping,0 stopped,0 zombie
%cpu(s):  1.9 us,5.7 sy,0.0 ni,92.3 id,0.1 wa,0.0 hi,0.0 si,0.0 st
KiB Mem:   2050048 total,540852 used,1509196 free,34872 buffers
KiB Swap:  1509372 total,0 used,1509372 free.    93060 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S %cpu %MEM     TIME+ COMMAND
  902 root      20   0 1019896 364920   4492 S 13.1 17.8  13:07.03 Bether

你怎么看我的代码已经消耗了17.8%的内存.在某些时候,服务器将崩溃,因为它没有内存.

我的问题是该程序不应该这样做,但我无法找到内存分配的位置,而不是免费的.是否有工具,甚至可能在gdb内部,找出程序分配最多内存的位置?

提前致谢!

解决方法

查看 Valgrind,它应该在Ubuntu存储库中.它可以为您提供有关C程序中内存使用情况的详细信息.有点像内存使用的调试器.

valgrind –tool = memcheck< your_app> < your_apps_params>

另请参阅ccmalloc,NJAMD,LeakTracer

相关文章

/etc/sysctl.conf这个目录主要是配置一些系统信息,/etc/sys...
1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起...
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅...
不管是我们在安装软件还是监测软件的使用性能,我们都要随时...
装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理。...
修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,...