病因: 事情的起因是由Flume的项目采集问题引发的. 测试人员发现用top命令查看采集进程的Res一直不断上涨姿势. 所以怀疑是内存泄漏.
一, 对症下药
首先, 第一步肯定是先瞅瞅代码, 看看有没有那些资源啥的没关闭, 正如读者所想 ---- 没有发现.
二, 通过辅助工具
最简单查看java内存的方法就是分析dump文件.
1> 查找当前进程的Pid , 如图所示, pid 是 50480
2> 到jdk安装目录bin下面找一个 jmap的命令
3> 然后 ./jmap -dump:format=b,file=/opt/heap/heap1.bin 50480 , 得到 第一个 heap1.bin
4> 过个把小时, 再使用这个命令 ./jmap -dump:format=b,file=/opt/heap/heap2.bin 50480 , 得到第二个heap2.bin
5> 然后就是分析环节了, 我使用的是Eclipse的MAT插件, 具体安装过程百度之
6> 用Eclipse 分别打开heap文件, 此时请看配图