java 多线程,这种情况是否正常。线程总数一直在上升,但是内存没有出现过大的波动

因根据不同的任务需要定时创建线程池,为什么线程总数一直在上升?
![](http://d.hiphotos.baidu.com/zhidao/pic/item/72f082025aafa40fe0fab898a864034f78f019b2.jpg)

线程数一直上升,建议开通jmx,利用远程的工具查看,例如jdk自带的jvisualvm。出现这种情况原因比较多,例如:
1)线程之间资源竞争,导致前面线程池没有释放资源,后面线程阻塞
2)线程出现死循环
3)优先级线程一直占据竞争资源
4)某些方法同步锁或者某些变量同步锁

建议用jvisualvm查看应该关闭的线程堵塞的方法的行数。

你如何实现的线程池,是使用java的ThreadPoolExecutor 么,还是用 Executors.newFixedThreadPool生成固定大小的线程池。代码贴上来看看,“线程总数一直在上升,但是内存没有出现过大的波动”,你是通过工具看的的么,你用jstack看到线程有很多么?