linux分析java堆栈信息,Linux下获取java堆栈文件并进行分析

linux分析java堆栈信息,Linux下获取java堆栈文件并进行分析当服务器内存飙升或者cpu负载飙升的时候,可以使用如下步骤排查问题:1、终端输入top命令,键盘大写的情况下按P(cpu负载率从高到低排序)或者M(内存使用率从高到低排序),可以查看导致cpu或者内存飙升的javapid。2、jstackPID号>jstack.log上面的命令可以保存当前时刻的线程栈到jstack.log文件中(保存在当前路径下)3、分析栈文件3.1grep…

大家好,欢迎来到IT知识分享网。

当服务器内存飙升或者cpu负载飙升的时候,可以使用如下步骤排查问题:

1、终端输入top命令,键盘大写的情况下按P(cpu负载率从高到低排序)或者M(内存使用率从高到低排序),可以查看导致cpu或者内存飙升的java pid。

57f70456c728010478b5d8884db0e6cb.png

2、jstack PID号 > jstack.log

上面的命令可以保存当前时刻的线程栈到 jstack.log 文件中(保存在当前路径下)

3、分析栈文件

3.1 grep ‘java.lang.Thread.State’ jstack.log  | wc -l

上述命令可以统计java.lang.Thread.State出现的次数

3e1f6fc005c41b7ad932661678946a95.png

3.2  grep -A 1 ‘java.lang.Thread.State’ jstack.log  | grep -v ‘java.lang.Thread.State’ | sort | uniq -c |sort -n

该命令可以将线程栈文件的状态按次数排序显示

8ee7eced809dd6114ce35b7d9dbeec1b.png

4、jmap -dump:format=b,file=heap.log pid

上述命令可以保存当前的堆情况到heap.log文件中。

5、将heap.log传输到windows系统下,复制一份,后缀改成.hprof

下载Eclipse的内存分析工具,地址:https://www.eclipse.org/mat/downloads.php

2af83cd8086ea08febd971a49e686649.png

下载完成后,双击MemoryAnalyzer.exe,点击Open a Heap Dump

40e030dc7422afb333ecd32d3145ca3e.png

选择桌面上的堆文件,点击打开:

1af862c63cbff6df0dd69a954ca834b7.png

选择第一个内存分析报告,然后点Finish:

e18011c12bc7c3d299b4aae5254c8be7.png

就会打开一个总体情况页面:

49d34b3542bc21847f0dcd116edf70c8.png

点击左下角的Table Of Contents,里面有多种分析供选择:

2c2e1251a80652c7866bb7f7d2094f03.png

每一个选项几乎都有直观的饼状图显示对象的占用情况:

81517ec2e37a77ce30c49a29c23803f3.png

当然也有线程的堆使用情况分析,可以方便地找到占用大量内存的线程,找到真正导致内存、cpu飙升的罪魁祸首!

cb8cc558b1f5377c064145a2a94cca22.png

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/23934.html

(0)
上一篇 2023-09-02 16:00
下一篇 2023-09-02 21:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信