jsecurity
Jerry-shan
采纳率33.3%
2014-12-02 09:59

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

已采纳

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • arjick Arjick 7年前

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

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

    点赞 1 评论 复制链接分享
  • eagleyan Coursera 7年前

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

    点赞 评论 复制链接分享

相关推荐