linux – 内存使用:程序分配太多内存
发布时间:2020-12-14 01:02:22 所属栏目:Linux 来源:网络整理
导读:我用C编写了一个用于Ubuntu Server(64位)的程序,该程序应该全天候运行.服务器有2GB内存,但显然我的程序分配了太多的内存. 这是大约2小时后的顶部输出 top - 13:35:57 up 1:39,1 user,load average: 0.15,0.13,0.08Tasks: 68 total,2 running,66 sleeping,0 s
我用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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |