内存泄露和内存溢出:
内存泄露本意是申请的内存空间没有被正确释放,导致后续程序里这块内存被永远占用。
内存溢出是指存储的数据超出了指定空间的大小,这时数据就会越界。
一、如何认定内存泄露? VmRSS
ps axu | grep lighttpd #找到进程的pid
cat /proc/pid/status #拿到进程的相关信息。
VmPeak:进程地址空间的大小
VmSize:进程虚拟空间地址的大小,是VmLib, VmExe, VmData, 和 VmStk的总和。
VmLck:进程已锁住的物理内存大小
VmRSS:应用程序正在使用的物理内存的大小
VmData:程序数据段的大小。
VmStk:进程在用户态的栈的大小
VmLib:虚拟内存库,动态链接库所使用的虚拟内存
VmExe: 可执行的虚拟内存,可执行的和静态链接库所使用的虚拟内存
内核态内存问题定位:cat /proc/slabinfo,查询内核态内存池slab的使用情况。
二、linux 下载安装valgrind工具
Valgrind包括以下一些工具:
1.Memcheck:这是valgrind应用最广泛的工具,一