当服务器内存飙升或者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堆栈文件并进行分析相关推荐

  1. Linux登录的shell信息,Linux展示登录Shell信息

    Linux显示登录Shell信息 Linux显示登录Shell信息 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ finger -p Login Name T ...

  2. java打印堆栈信息linux,在C/C++程序里打印调用栈信息(转载)

    原文出处  http://blog.csdn.net/yetyongjin/article/details/7759144 以下不能windows + mingw下执行.  windows下参考 ht ...

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

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

  4. 获取java异常堆栈信息_Java 实例 - 获取异常的堆栈信息

    全屏 Java 实例 - 获取异常的堆栈信息 以下实例演示了使用异常类的 printStack() 方法来获取堆栈信息: Main.java 文件public class Main{ public s ...

  5. linux修改目录block信息,linux下文件操作inode,block的变化

    在"浅谈linux性能调优之三:分区格式化之前的考虑" http://my.oschina.net/sharelinux/blog/143522    一文中我说了inode与bl ...

  6. linux下查看系统硬件,Linux 查看系统硬件信息 Linux 查看系统硬件信息(实例详解)...

    linux查看系统的硬件信息,并不像windows那么直观,这里我罗列了查看系统信息的实用命令,并作了分类,实例解说.html cpu lscpu命令,查看的是cpu的统计信息.linux blue@ ...

  7. linux保存动态进程信息,Linux 命令 - top: 动态显示进程信息

    命令格式 top -hv | -abcHimMsS -d delay -n iterations -p pid [, pid ...] 命令参数 -a 根据内存的使用排序. -b 以批处理模式操作. ...

  8. linux 怎样查看设备信息,Linux查看设备信息命令

    系统 #查看内核/操作系统/CPU信息 uname -a #查看操作系统版本 head -n 1 /etc/issue #查看CPU信息 cat /proc/cpuinfo #查看计算机名 hostn ...

  9. linux中用截取一些信息,Linux如何使用cut命令截取文件信息

    在Linux众多命令中,cut命令可用来截取文件信息,截取Linux字符串,下面将针对cut命令的用法做个详细介绍,感兴趣的朋友可以来学习下. cut命令有截取的意思,可从linux文件或者标准输入中 ...

  10. linux查看本机信息,linux系统怎么查看本机配置?

    linux如何查看系统的硬件配置 如何在linux系统下查看系统配置? 在图形模式下我们可以很方便的利用Linux的图形工具,点击几下就可以查看到Linux系统的的硬件信息.但是大部分生产服务器系统为 ...

最新文章

  1. 抽象方法和接口的区别
  2. ip中继对接_鼎信通达MTG系列-语音中继网关,可和VOS,IPPBX,SIP网关进行对接
  3. IT 部门事件管理模式建立分析
  4. 08-Windows Server 2012 R2 会话远程桌面-标准部署-使用PowerShell进行部署2-1
  5. SAP CRM One Order 根据联系人姓名搜索的实现原理
  6. dw网页制作入学教程_简单的手机网页制作教程
  7. 从分布式一致性谈到CAP理论、BASE理论
  8. 6月1日发布!vivo X50外观图曝光:摄像头数量再创新高
  9. 微课|中学生可以这样学Python(2.3.3节):reduce()函数
  10. 计算最大值和最小值(分治法)
  11. [转载] 6.3 cmath--数学函数
  12. 【OpenCV入门教程之六】 创建Trackbar 图像对比度、亮度值调整(转)
  13. Android 助力云计算
  14. 基于大数据可视化技术的毕业生就业分析服务项目 (软件创新设计期末报告)
  15. C语言里程序编译无误但运行会弹出程序已停止运行是为什么?
  16. Redhat下7-Zip的安装和使用
  17. 南丁格尔玫瑰图 python_央视都在用的“南丁格尔玫瑰图”,原来Python也可以画...
  18. 改善客户服务体验的 5 种方法
  19. 跟我学c++中级篇——decay
  20. network 网站流量

热门文章

  1. 1038: 绝对值最大 Python
  2. C语言常见的陷阱与缺陷
  3. redis的配置文件修改
  4. ExactScan Pro 18.12.24 Mac 破解版 万能扫描仪整合工具
  5. sde mysql_ArcSDE:企业级地理数据库概述
  6. AHCI驱动问题导致Windows 10卡死的解决办法
  7. Linux小游戏——单机掷骰子
  8. 基于java+swing的物业收费管理系统(java+swing+Gui)
  9. Java图片上查找图片算法
  10. PS教程,今天它来了