哪位帮忙看看这个java内存泄漏是什么问题?

最近升级了struts版本为2.5.6,然后项目频繁出现内存溢出。用MAT工具分析了堆栈文件,发现org.apache.tomcat.util.threads.TaskThread 有多个,并且每个占用内存都很大。不知怎么分析,从何分析起?哪位大佬有经验的可否告知一二,万分感谢。

更正一下,是2.5.26.

你这没有给出相关的线程类源码,也没有错误日志,别人很难解答你的问题的。

你可以好好检查下是否在线程中循环等操作往Map集合对象中放入了大量数据没有释放?

如果在线程中使用了Map类尽可能避免使用HashMap,而要使用CurrentHashMap,

一来HashMap线程不安全,CurrentHashMap线程安全,二来HashMap 能存放的数据上限没有CurrentHashMap存放的数据多。

如果你的代码在多线程中使用了ArrayList 类,或new 出了很多对象,使用完成后最好做个置空操作,这样能暗示JVM去垃圾回收。

否则线程每执行一次,都创建对象,你的线程频率又很快,那么内存很容易不够用,出现溢出。

最后,不用花心思看org.apache.tomcat.util.threads.TaskThread这个类了,基本上能断定应该是你自己写的线程类里面代码逻辑有问题。