找出导致应用程序内存泄漏的原因

时间:2014-09-06 21:34:15

标签: linux memory

我有一台Linux(CentOS)服务器,我在其上运行游戏服务器,最近在更新后开始泄漏内存。如何找出导致服务器内存泄漏的原因?

1 个答案:

答案 0 :(得分:0)

内存配置文件 使用性能工具检查泄漏。

为应用程序中运行的所有进程运行最后一个命令,并计算结果以找出导致内存泄漏的原因。

使用perf的探针的示例用法可能是检查libc的malloc()和free()调用:

  

$ perf探针-x /lib64/libc.so.6 malloc

     

$ perf探针-x /lib64/libc.so.6免费

添加了新事件: probe_libc:malloc(在0x7eac0上)

探针已创建。现在,让我们记录一下4秒钟内malloc和free在全球所有系统中的全局使用情况:

  

$性能记录-e probe_libc:malloc -agR sleep 4

     

$性能记录-e probe_libc:free -agR sleep 4

让我们在4秒钟内记录所有进程中malloc和free的使用情况:

  

$ perf stat -e probe_libc:free -e probe_libc:malloc -ag -p $ {pgrep $ process_name $)sleep4

输出:

  

进程ID'1153'的性能计数器统计信息:

     

11,312 probe_libc:免费

     

11,644́probe_libc:malloc

     

4.001091828秒的时间

如果每次执行perf命令时malloc和可用计数之间的差值增加,则表明存在内存泄漏。

  

$性能记录-e probe_libc:free -e probe_libc:malloc -agR sleep 2

运行以上命令以检查整个应用程序。

以后跑步,

  

$性能报告

获取以上运行的报告。