Linux下获取java堆栈文件并进行分析

Linux下获取java堆栈文件并进行分析,第1张

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

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

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

2、Jstack PID号 > Jstack.log

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

3、分析栈文件

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

总结

以上是内存溢出为你收集整理的Linux下获取java堆栈文件并进行分析全部内容,希望文章能够帮你解决Linux下获取java堆栈文件并进行分析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1031365.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存