Java运行状态分析2:获取线程堆栈信息

基本概念

出现内存泄漏或者运行缓慢场景,有时候无法直接从业务日志看出问题时候,需要分析jvm内存和线程堆栈

线程堆栈信息主要记录jvm线程在某时刻线程执行情况,分析线程状态可以跟踪到程序出问题的地方

内存堆栈信息主要记录jvm堆中在某时刻对象使用情况,主要用于跟踪是哪个对象占用了太多的空间,从而跟踪导致内存泄漏的地方

跟踪线程信息

查看当前线程数量

actuator

1.x

http://host:port/metrics/threads //当前进程的线程数

http://host:port/metrics/threads.daemon //当前进程后台驻留线程数

http://host:port/metrics/threads.peak //当前进程线程数峰值

2.x

http://host:port/actuator/metrics/jvm.threads.daemon //当前进程后台驻留线程数

http://host:port/actuator/metrics/jvm.threads.live //当前进程的线程数

http://host:port/actuator/metrics/jvm.threads.peak //当前进程线程数峰值

sop hystrix 线程状态

http://host:port/sys/hystrix/threads

linux

ps huH p {pid}|wc -l

jstack生成线程堆栈

当服务cup飙升或者出问题需要从主机层面定位时候,使用top -c 命令查看对应哪个进程占用了过高资源

找到资源占用高的进程

明确需要定位的进程通过如下命令找到对应的进程id

ps aux|grep {application alias}

接下来通过jstack导出对应的线程堆栈

jstack 对应参数如下

-m to print both java and native frames (mixed mode)

-l long listing. Prints additional information about locks

可以通过如下命令定位具体高load线程:

查询进程具体哪个线程占用高load

top -Hp {进程pid}

thread id为十六进制格式转十六进制值

printf %x {线程pid}

指定特定行数堆栈信息

jstack {进程id}|grep -A 200 {线程id}

服务器线程相对较多,文件大小较大,一般不会考虑在服务器看,另外这样查也会导致忽略了一些统计信息

通过如下命令导出文件,下载到本地查

jstack -l {pid} >> {dump-file-path}

如何查看分析dump文件,请看下文

linux查看java堆栈信息_Java运行状态分析2:获取线程堆栈信息相关推荐

  1. linux查看输出的信息,linux查看java的输出信息

    linux查看java的输出信息 [2021-02-04 22:41:35]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(&quo ...

  2. linux如何看java安装路径,linux查看java的安装路径

    linux查看java的安装路径 [2021-02-05 21:28:47]  简介: 服务器 一.查看软件安装路径: Linux软件安装的地方不止一个地方,先说查看软件安装的所有路径(地址). 这里 ...

  3. 查看linux java目录,linux 查看java安装目录

    linux 查看java安装目录 [2021-02-01 05:02:25]  简介: linux查看php安装目录的方法:1.Linux的php安装目录在没有设置自定义安装的情况下,一般默认的安装路 ...

  4. linux查看java版本,以及java home的位置

    linux查看java版本,以及java home的位置 1.确定是否安装jdk java -version 2.查找java home的位置: vi  /etc/profile

  5. new,is和as运算符解析及运行时类型,对象,线程堆栈,托管堆之间的联系

    CLR要求对象必须使用new运算符创建,在使用new运算符创建一个对象时具体都做了些什么呢? 1.计算所有定义的实例字段,所有的基类型包括System.Object需要分配的字节数. 每一个堆上的对象 ...

  6. linux查看java虚拟机内存_JVM:查看java内存情况命令

    jmap (linux下特有,也是很常用的一个命令) 观察运行中的jvm物理内存的占用情况. 参数如下: -heap :打印jvm heap的情况 -histo: 打印jvm heap的直方图.其输出 ...

  7. linux 查看java进程_Linux进程查看及管理工具(ps, vmstat, dstat, glances等)

    pstree pstree - display a tree of processes , 进程树查看. [root@localhost /]# pstree systemd─┬─agetty├─au ...

  8. linux 查看java cpu_Linux查看CPU和内存使用情况

    在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会 ...

  9. linux查看java版本_linux 查看java版本

    inux查看java jdk安装路径和设置环境变量 windows: set java_home:查看JDK安装路径 java -version:查看JDK版本 linux: whereis java ...

最新文章

  1. python用matplotlib画人口图_Python+Matplotlib画contour图
  2. [Codeforces Round #254 div1] C.DZY Loves Colors 【线段树】
  3. 解决后台json数据返回的字段需要替换的问题
  4. 用css及jQuery实现的精美拉下菜单导航条
  5. node 后台重定向_node.js – 使用NodeJS重定向客户端并重新定义
  6. vb还是python强大-最难学的七大编程语言,VB 第一,Python垫底,看你学的排第几...
  7. C语言判断素数的几种方法
  8. foremost文件删除恢复
  9. java8进制转换_Java进制转换方法大全_十进制,八进制,二进制,十六进制转换...
  10. DP POJ1160
  11. 腾讯云“黑石”真相——“物理私服”
  12. netty源码阅读之编码之flush刷新buffer队列
  13. VDI、IDV、VOI、RDS四种类型云桌面的区别
  14. 钉钉申请发起后台提现接口
  15. 如何使用轻量应用服务器搭建高颜值的YesPlayMusic网易云播放器
  16. eclipse配置python运行环境_Eclipse配置Python环境
  17. 二、数码管显示原理及应用实现
  18. 初识mysql实验小结_初识mysql学习笔记
  19. 【好记性不如烂笔头】二叉树之利用先序中序还原树
  20. 《C语言内涵教程》前言

热门文章

  1. 手册-网站-仙客传奇团队博客
  2. CCF NOI1021 发放奖金
  3. CCF201312试题
  4. Python程序-输出1000以内素数
  5. 九章算术卷第三 衰分
  6. 位运算应用及其注意事项
  7. python matplotlib 方程的绘制
  8. 【剑指 offer】(48)—— 不能被继承的类
  9. C++基础::Stream
  10. C++基础——模板的0初始化