gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:49 25 4
gpt4 key购买 nike

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

最佳答案

内存分析使用Perf工具检查泄漏。

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

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

$ perf probe -x /lib64/libc.so.6 malloc

$ perf probe -x /lib64/libc.so.6 free

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

已创建探测器。现在,让我们记录一下 4 秒内整个系统的 malloc 和 free 的全局使用情况:

$ perf record -e probe_libc:malloc -agR sleep 4

$ perf record -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$) sleep 4

输出:

Performance counter stats for process id '1153':

11,312 probe_libc:free

11,644 probe_libc:malloc

4.001091828 seconds time elapsed

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

$ perf record -e probe_libc:free -e probe_libc:malloc -agR sleep 2

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

稍后运行,

$ perf report

获取上述运行的报告。

关于linux - 找出导致应用程序内存泄漏的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25704966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com