Linux下检测内存泄漏的方法(linux检测内存泄露)

  Linux系统下检测内存泄漏是比较麻烦的,本文就结合Linux下相关命令,帮助读者简单快速的检测内存泄漏问题位置。首先,得先清楚Linux系统下内存泄漏的概念,内存泄漏就是指内存已经分配,却由于程序错误或者编码 bug 而没有在将来得及释放,这就造成了内存空间的浪费,因此,内存泄漏的发现和解决是提高系统性能的重要措施。

## 检测Linux系统下内存泄漏的方法

### 一、使用调试器用户模块(`gdb`)

1. 首先,使用终端下`ps -aux`命令获取所有进程相关信息:

ps -aux 

![image-20200508152048037](images/image-20200508152048037.png)

2. 使用`gdb`命令并使用pid号,对特定的进程进行调试:

gdb 

3. 然后使用`malloc_info`函数查看内存分布情况:

malloc_info

![image-20200508152142057](images/image-20200508152142057.png)

4. 查看实际的内存情况:

malloc_stats

最先能看到的是各大内存块的状态,可以判断内存是否处于正常的状态,从而准确定位到内存泄漏的问题。

### 二、使用`Valgrind`软件

1. 在终端下安装`Valgrind`:

# 安装 
sudo apt install valgrind

2. 然后使用`Valgrind`命令来运行程序测试:

valgrind ./executable

3. 结果显示的内存分配的状况:

Valgrind 可以监测代码中变量的被分配的次数,最后是否被释放,以及程序的总内存分配量等,从而找到整个运行过程中究竟是怎么产生了内存泄漏现象。

  上面就是关于Linux系统下检测内存泄漏的方法,就算没有专业的编程环境,也能方便快捷的解决内存泄漏问题。


数据运维技术 » Linux下检测内存泄漏的方法(linux检测内存泄露)