Linux下获取java堆栈文件并进行分析
2022/3/9 7:15:34
本文主要是介绍Linux下获取java堆栈文件并进行分析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
当服务器内存飙升或者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飙升的罪魁祸首!
本文来自博客园,作者:Java大家族,转载请注明原文链接:https://www.cnblogs.com/stm32stm32/p/10539992.html
这篇关于Linux下获取java堆栈文件并进行分析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)