0.jps

这个输出java进程pid

#jps


查看java的线程

#top -Hp 25448

如图25757这个线程比较耗时,看看他在做什么

注意需要折算出线程pid的16进制值,然后jstack。

可以打印更多信息

#jstack pid | grep -A 20 649d

参考:JVM调优之jstack找出最耗cpu的线程并定位代码

top+jstack分析cpu过高原因

1.jstack

#jstack -l pid > jstack.log

使用jstack命令输出这一时刻的线程栈

jstack线程分析

jstack日志深入理解

2.jmap

#jmap -dump:format=b,file=heapDump 6900

#jmap -dump:live,format=b,file=dump.bin  6900

-dump:[live,]format=b,file=<filename> 使用hprof二进制形式,输出jvm的heap内容到文件=. 
live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.

Java命令学习系列(3):Jmap

jmap查看堆内存大小

#jmap -heap  pid

注意:jmap使用的时候jvm是处在停顿状态的,只能在服务不可用的时候为了解决问题来使用,否则会造成服务中断。

使用jmap -histo[:live] pid查看堆内存中的对象数目、大小统计直方图,如果带上live则只统计活对象,如下:
# jmap -histo:live pid | more

需要使用MAT工具分析jmap dump的内存

使用jmap和MAT分析JVM堆内存

3.jstat

jstat -gcutil pid

250毫秒一次采样4次

可以看出:
堆内存 = 年轻代 + 年老代 + 永久代
年轻代 = Eden区 + 两个Survivor区(From和To)

现在来解释各列含义:
S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)
EC、EU:Eden区容量和使用量
OC、OU:年老代容量和使用量
PC、PU:永久代容量和使用量
YGC、YGT:年轻代GC次数和GC耗时
FGC、FGCT:Full GC次数和Full GC耗时
GCT:GC总耗时
E、hprof(Heap/CPU Profiling Tool)

4.gcore

#gdb -q --pid=1990

(gdb) generate-core-file
(gdb) detach
(gdb) quit
jmap -dump:format=b,file=heap.hprof /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java core.1990

需要具体jdk对应的bin/java

参考:

gcore 获取程序core dump file 但程序不用退出,gdb 分析core

java程序性能分析之thread dump和heap dump

5.堆外内存泄露分析

top出来java占用内存极大而jmap出来的很小,说明有堆外内存泄露。

参考Java堆外内存泄露分析

综合使用参考: JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解

JVM性能调优监控工具专题一:JVM自带性能调优工具(jps,jstack,jmap,jhat,jstat,hprof)

JVM性能调优监控工具专题二:VisualVM基本篇之监控JVM内存,CPU,线程

线上java问题排查相关推荐

  1. 线上Java应用排查和诊断规范

    标准做法一:OOM触发HeadpDump 目的: OOM发生时,输出堆栈快照文件,供研发人员分析. 在JVM中,如果98%的时间是用于 GC 且可用的 Heap size 不足2%的时候,将抛出 OO ...

  2. Java线上应用故障排查之二:高内存占用

    前一篇介绍了线上应用故障排查之一:高CPU占用,这篇主要分析高内存占用故障的排查. 搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGe ...

  3. Java线上应用故障排查之一:高内存占用

    Java线上应用故障排查之一:高内存占用 转载地址:http://www.blogjava.net/hankchen 搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMe ...

  4. 线上应用故障排查之二:高内存占用

    为什么80%的码农都做不了架构师?>>>    搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGen space 2 ...

  5. Alibaba Cloud Toolkit 中SLS插件助力线上服务问题排查

    简介:Alibaba Cloud Toolkit 是一款非常优秀的插件,新增SLS日志服务的功能,针对软件开发者日常工作中常见的问题排查场景,将日志服务平台的功能集成到ide当中,省去了不同窗口之间来 ...

  6. 线上基础问题排查常用手册

    线上基础问题排查常用手册 问题分类 业务问题 日志排查 代码逻辑排查 配置排查 性能问题 接口问题 JVM问题 Redis问题 MySQL问题 系统问题 实施手段 日志排查 阿里云 参考: https ...

  7. 线上java JVM问题排查

    作者:霞落满天 第一部分  是我以前公司的一则正式案例: 第二部分 是我另一个博客上写的主要是最近发现大家问的比较多就写了此文 第一部分 线上真实故障案例 下面是一个老系统,代码写的有点问题导致出现这 ...

  8. 线上java程序CPU占用过高问题排查

    简要 工作中负责的有一个项目是使用iReport+JasperReport实现的一个打印系统.最近这个线上程序经常无响应,重启后恢复正常,但是时不时还是会出现类似的问题. 最后发现是JasperRep ...

  9. 线上Java 高CPU占用、高内存占用排查思路

    一.前言 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题.当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警.本文主要针对系统 ...

最新文章

  1. ISA Server 2006 安全保障指南
  2. 「BZOJ 2342」「SHOI 2011」双倍回文「Manacher」
  3. Vasya and Robot
  4. 删除一个程序Linux,一天一个Linux基础命令删除文件或目录命令rm
  5. LeetCode 837. 新21点(动态规划)
  6. Android:进度条加载
  7. .NET中Redis安装部署及使用方法
  8. XJTUOJ wmq的队伍(树状数组求 K 元逆序对)
  9. git删除分支_程序员必须要掌握的 Git 使用技巧
  10. 填坑 ---- arcgis api for javascript 加载天地图
  11. 关于Egret项目升级引擎出现的问题
  12. 无线局域服务器架设方法,技巧:如何实现局域网架设BT服务器
  13. 绚丽彩虹同学录V1.4公测版
  14. 【Unity】Jay 开发日志(五)——主菜单的创建
  15. iOS - 下拉上拉菜单,万能菜单,适用于各种场合
  16. 华为交换机关闭服务端口
  17. selenium+python 输入含有span标签的标题
  18. 【猫图识别】【HTML】一张猫图,告诉你猫咪在哪
  19. 20年java面试_Java 20年
  20. 美--自行车的视觉瞬间

热门文章

  1. Python Qt GUI设计:QPrinter打印图片类(基础篇—21)
  2. pyinstaller 打包tensorflow2.0为单个文件
  3. 西门子断开延时定时器_在PLC编程中定时器的一些针对现场不同情况的一些妙用...
  4. 张正友相机标定代码(c++python)
  5. 傅里叶变换之看不懂就掐死我教程
  6. 用Unity的视频广告创建2D动作游戏 Create Action 2D Game With Video Ads In Unity
  7. 递归/归并:count of smaller numbers求逆序数
  8. ubuntu18.04 Desktop版本部署13.2.6版本ceph
  9. MQTT 心跳和keepalive配置
  10. Tensorflow多线程输入数据处理框架(一)——队列与多线程