36、内存泄漏的定义,如何检测与避免?
定义:内存泄漏简单的说就是申请了⼀块内存空间,使⽤完毕后没有释放掉。 它的⼀般表现方式是程序运⾏时间越⻓,占⽤内存越多,最终⽤尽全部内存,整个系统崩溃。由程序申请的 ⼀块内存,且没有任何⼀个指针指向它,那么这块内存就泄漏了。
如何检测内存泄漏⾸先可以通过观察猜测是否可能发⽣内存泄漏, Linux 中使⽤ swap 命令观察还有多少可⽤的交换空间,在⼀两分钟内键⼊该命令三到四次,看看可⽤的交换区是否在减少。
还可以使⽤ 其他⼀些/usr/bin/stat ⼯具如 netstat、 vmstat 等。如发现波段有内存被分配且从不释放,⼀个可能的解释就是有个进程出现了内存泄漏。 当然也有⽤于内存调试,内存泄漏检测以及性能分析的软件开发⼯具valgrind 这样的⼯具来进⾏内存泄漏的检测。
Last updated