zoukankan      html  css  js  c++  java
  • windows下揪出java程序占用cpu很高的线程

    背景

          天天搞java,这些监控也都知道,用过,但也没往细里追究。因为也没碰见这种问题,这次还是静下来走一遍流程吧。与网上基本一致,不过我区分了下linux和windows的不一样。我感觉基本是程序写成死循环了或者大对象分配多了才有这种问题吧。

    步骤

    1.找到java进程对应的pid。通过任务管理器。linux---top

    2.然后把java进程导出快照。直接运行命令。stack -l 31372 > c:/31372.stack  

    3.在windows下只能查看进程的cpu占用率,要查看线程的cpu占用率要借助其他的工具,我这里用的是微软提供的 Process Explorer v15.3

                                                                                                        右键点击需要查看的进程---properties 

    linux下先输入top,然后再按shift+h 或“H”,此时打开的是线程视图,pid为线程号

    4.然后选择 Threads 选项卡,找到占用cpu的线程的tid,比如我这里是 31876 的线程

    5.把pid转换成16进制,我这里直接用系统自带的计算器转换,置于为什么要转换,是因为先前用jstack导出的信息里面线程对应的tid是16进制的。

    cmd---calc---计算器左上角选择程序员,可进制转换 。最后得到的线程pid的16进制的值为 7C84 

    6.在 c盘的31372.stack文件中查找 7C84

    Thread-23" prio=6 tid=0x03072400 nid=0x1b68 runnable [0x0372f000]  

       java.lang.Thread.State: RUNNABLE  

       at com.horn.util.MyEncrypt.encode(MyEncrypt.java:17)  

     at com.horn.common.OrderUtil.hisExp(OrderUtil.java:228)  

     at com.horn.util.MsgManage.receiveMsg(MsgManage.java:961)  

       at com.horn.util.PollMessageThread.run(PollMessageThread.java:74)  

       Locked ownable synchronizers:      - None  

  • 相关阅读:
    零点存在定理与介值定理
    moco入门
    git的基础操作-入门
    有道笔记链接地址 -----关于python
    Linux学习---linux的svn的配置与安装
    Linux学习---linux系统下安装配置Jenkins
    Linux学习-linux系统下安装jdk和tomcat,以及遇到的问题清单
    Linux学习-linux系统下python升级到python3.6步骤详解,以及遇到的问题解决
    Linux学习---Linux目录结构说明
    电脑屏幕左上角出现一个小的白块
  • 原文地址:https://www.cnblogs.com/sddychj/p/9529503.html
Copyright © 2011-2022 走看看