Windows下Tomcat内存占用过高问题跟踪(ProcessExplorer+jstack)

一、问题描述

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

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

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

process explorer下载:Process Explorer - Sysinternals | Microsoft Learn 

下载后直接打开即可:

使用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类对应的行数,即可定位到问题。

 

 

相关推荐

  1. linux缓冲区(buff/cache)内存占用解决办法

    2023-12-29 02:06:02       39 阅读
  2. 解决Apache Doris占用CPU和内存

    2023-12-29 02:06:02       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-29 02:06:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-29 02:06:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-29 02:06:02       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-29 02:06:02       20 阅读

热门阅读

  1. 文件管理练习

    2023-12-29 02:06:02       38 阅读
  2. 基于Antlr4实现自定义语法规则

    2023-12-29 02:06:02       40 阅读
  3. 如何利用 NAS 搭建网站服务器?

    2023-12-29 02:06:02       31 阅读
  4. The connection to the server localhost:8080

    2023-12-29 02:06:02       35 阅读
  5. Vue3.0-watch&&watchEffect函数

    2023-12-29 02:06:02       34 阅读
  6. vue的插槽解析

    2023-12-29 02:06:02       37 阅读
  7. 【c++】二分查找教程

    2023-12-29 02:06:02       38 阅读