zoukankan      html  css  js  c++  java
  • 2020-06-23:有没有遇到过线程泄露?

    福哥答案2020-06-23:

    1.现象:cpu使用100%,内存不足。

    2.定位问题:记住下面3条命令,红色字体标注。

    登录服务器,查看cpu, 内存等使用情况。
    使用命令,查看 JAVA 进程创建了多少线程: ps -Te | grep java | wc
    发现java进程创建了1万多个线程,进一步观察,发现线程数量持续增加。
    至此,初步定位出是线程泄露导致服务器资源消耗严重。
    使用 jstack 命令, 将java进程所有的线程堆栈信息输出到文件: jstack 14739 > stack.log
    使用命令统计各线程情况:
    cat stack.log | grep ".java" | grep explink | sort | uniq -c
    输出结果:
    12837 at cn.explink.b2c.weisuda.threadpool.SubExcuteWeisudaTask.run(SubExcuteWeisudaTask.java:76)
    表示有12837个线程是在执行 SubExcuteWeisudaTask.java 的 76 行代码。

    3.解决问题
    run() 有逻辑问题,导致线程不会释放,出现线程泄露。
    解决方法: 修改 run()保证在函数里面有且只执行一次 。

  • 相关阅读:
    局域网主机A向主机B发送ip数据报的过程
    用户使用浏览器访问万维网经历的步骤
    sql
    PMP:总概
    LINQ
    下拉框
    PMP:项目采购管理
    PMP:项目风险管理
    PMP:沟通管理。相关方管理
    PMP:项目资源管理
  • 原文地址:https://www.cnblogs.com/waitmoon/p/13442729.html
Copyright © 2011-2022 走看看