zoukankan      html  css  js  c++  java
  • JAVA死锁的检测流程

    步骤一. 查询检测的进程

    1.首先查看系统资源占用信息,TOP看一下

    USER 进程所属用户
    PID 进程ID 
    %CPU 进程占用CPU百分比
    %MEM 进程占用内存百分比
    VSZ 虚拟内存占用大小 单位:kb(killobytes)
    RSS 实际内存占用大小 单位:kb(killobytes)
    TTY 终端类型
    STAT 进程状态
    START 进程启动时刻
    TIME 进程运行时长
    COMMAND 启动进程的命令
    

    发现正在运行的JAVA项目CPU占用率很高,百分之360左右了,那么问题一定出在这个程序中

    2 .也可以通过名称查询进程pid

    步骤二. 查询检测的线程

    ps -mp pid -o THREAD,tid,time

    ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -n -r | less

    pmem: 内存使用
    pcpu: cpu使用
    RSS 实际内存占用大小
    VSZ 虚拟内存占用大小
    args 参数信息

      

    找到占用时间长的线程

     通过工具把线程转成16进制,linux里面可以用自带的printf,eg. printf "%x\n" 22295

    步骤三. 查询线程的状态

     jstack 21912|grep 5717 -A 30

    在dump中,线程一般存在如下几种状态:
    1、RUNNABLE,线程处于执行中
    2、BLOCKED,线程被阻塞
    3、WAITING,线程正在等待
    4、TIMED_WAITING,这个一般是指这个线程是Timer定期执行任务,但是当前处于waiting状态

    再结合代码分析具体的问题

  • 相关阅读:
    Django 常见问题
    post和get的区别
    Django 基础学习笔记二
    Django 中的分页器
    Python 微服务框架 Nameko 微服务通信(RabbitMQ)
    《大数据白皮书 2020.12》解读
    练习Div+Css
    利用JAVAScript调用WebService
    统计在线人数和历史访问人数
    自己写的一个DBHelper
  • 原文地址:https://www.cnblogs.com/cqwo/p/13689667.html
Copyright © 2011-2022 走看看