- 内存泄漏就是GC无法回收占用的内存,最终会导致内存溢出,比如循环new全局变量,或者每开一个mysql连接不关闭
- 内存溢出就是数据无法申请可使用的内存,内存大小已满,数据无法存储进内存
- 内存泄露最后的结果就是内存溢出
如何判断内存泄漏?
对程序进行长稳测试,程序运行一次,申请的内存大小一般不会把系统内存大小占满,进行长时间多次运行,程序申请的内存不释放,就会不停的占用系统内存,直至把系统内存占满
- 查看运行程序的pid :
ps -ef | grep 进程名
- 在linux命令行输入:
top
查看该pid对应的内存占用率,在程序运行过程中一直升高,则为内存泄漏
- 当内存占用率趋近100%时,程序就会因为无法申请到足够的内存,报OutOfMemory(内存溢出)的错误