由于导出的数据量较大,查询出的数据还需要做二次处理(再去数据库里查),比较耗时,所以开的多线程去处理
然后测试了几次之后,发现内存溢出了。。。
工具:jvisulvm(在jdk的bin目录下)
然后找到导致溢出的对象,可以直接对大小进行排序
正常情况下方法执行完后对象没有再被引用的情况下是会被gc的,但是我这里的实例数一直再增加
点击堆dump
查找对象引用是被谁持有导致不能gc
反复注释代码后,发现问题出在了这一行代码
然后接着查资料,这一篇大致解释了ConcurrentLinkedQueue.remove()内存泄漏的原因