zoukankan      html  css  js  c++  java
  • Windows下Tomcat内存占用过高问题跟踪(ProcessExplorer+jstack)

    一、问题描述

      Tomcat下面部署很多个java项目的war包,tomcat启动一段时间后,发现cpu占用过高,整个界面卡死!

    二、通过process explorer查看java进程下的线程

    process explorer是Windows系统和应用程序监视工具。

    process explorer下载:https://technet.microsoft.com/en-us/sysinternals/bb896653/ 

    下载后直接打开即可:

     

    使用PID为3764的进程,点开javaw.exe进程:

     

    这时候会发现TID为4060(10进制)的线程占用CPU最高,下面找到该进程在项目中的位置。

    三、通过jstack把进程下所以的Java线程栈的内容打印出文本中

    jstack是java虚拟机自带的一种堆栈跟踪工具,用于生成虚拟机当前时刻的线程快照,包含虚拟机中每一个线程正在执行的方法堆栈的集合,用于定位线程出现长时间停顿的原因,如死锁、死循环、外部资源长时间等待等

    在cmd命令里输入:jstack -l 3764 回车:

    将4060(TID)十进制转成16进制(在线工具:http://tool.oschina.net/hexconvert/)为fdc;

    找到nid=0xfdc,找到后面对应的java类对应的行数,即可定位到问题。

  • 相关阅读:
    软工实践总结
    Beta总结
    beta冲刺6/7
    beta冲刺5/7
    Beta冲刺4/7
    beta冲刺3/7
    beta冲刺2/7
    beta冲刺1/7
    答辩总结
    ES6中的块级作用域与函数声明
  • 原文地址:https://www.cnblogs.com/bingyimeiling/p/10278477.html
Copyright © 2011-2022 走看看