1.如果不采用工具的话,那么可以对源码进行检查,一般
malloc
申请空间的数量和 free
释放内存的数量是一样的,所以我们可以在写完代码后对代码进行检查,
查看
申请内存语句的数量是否等于释放内存语句的数量
。
2.基于
windows
开发的程序员其实在检查内存泄漏的问题上可以使用Visual C++的
Debug
版本的
C
运行库
(C Runtime Library)
。它已经提供好些函数来帮助你诊断你的代码和跟踪内存泄漏。 而且最方便的地方是这些函数在 Release
版本中完全不起任何作用,这样就不会影响你的 Release
版本程序的运行效率。还有Chrome devtools 提供了一种可以基于时间线的内存调试工具——
Allocation instrumentation on timeline。通过这样的工具,就能很清晰的观察当前内存的状态。想要了解的小猿们可以自行去了解一下。
3.通过
linux
命令显示内存使用情况可以检测代码是否存在内存泄漏
。下面我们来介绍几个 linux
查看内存使用情况的命令
gnome-system-monitor
这条命令可以查看 ubuntu
在最近一段
cpu
,内存,交换区及网络使用情况的窗口视图
vmstat -t 1
这条命令可以实时查看内存使用情况,其中-t
是指定间隔秒数,
-t 1
就是每秒统计一次,
我们输入这条命令可以看到
:
其中我们主要关注空闲(free)
这一列的情况,这一列表示可用内存的大小。如果存在内存泄漏,那么会看到这一个字段的值会一直减少,但是,在泄漏的内存不够多的时候是很难看出来的。
top -d 2
top 命令是
Linux
下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于 Windows
的任务管理器。
-d 2
是指定每两秒刷新一次:
如图,红框对应得字段是可用内存的大小,也可以进行判断它的持续减小来发现程序中存在内存泄漏问题。