内存泄漏有四种表现形式:
常发性内存泄漏:发生内存泄漏的代码多次被执行 每次执行都致使一块内存泄漏 最终导致系统内存全部被占用
偶发性内存泄漏:偶发和常发是相对的
一次性内存泄漏:发生内存泄漏的代码仅仅执行一次 比如 类的构造函数分配了内存 而析构函数没有释放该部分内存 因此内存泄漏仅仅发生一次
隐式内存泄漏:程序运行过程中不断分配内存 仅仅在运行结束时释放一次 严格讲这里面并没有内存泄漏 因为释放的时候会释放全部的内存 但是由于程序连续运行的时间太长 导致还没有等到结束 内存就不够了
检测内存泄漏 可以使用负载工具 不断给待测系统施加压力 同时启动一些监控工具 实时监控待测系统的内存分配回收情况