Java内存问题排查之三大指令

本文介绍了在Java系统中,如何通过jstat、jstack、jmap等工具进行故障排查,包括获取运行日志、堆栈信息和堆快照,以及识别可能的内存泄露。重点讲解了排查思路和步骤,最后推荐使用MAT工具进行深入分析。
摘要由CSDN通过智能技术生成

1.前言

1.1 排查理念

给系统定位问题的时候,知识经验是基础,应用数据是依据,工具是手段。

1.2 排查基础

在jvm中,我们常见的数据包括: 运行日志、堆栈信息、GC信息、线程栈快照(threaddump/javacode)、堆快照(heapdump/hporf)。如何获取这些数据,下面就是我们要介绍的,通过三大指令:jstat、jstack、jmap

本文仅介绍排查思路,不详细展开介绍这四个指令,又想了解的小伙伴,可以自行百度。

2.排查思路及步骤

  • (1)使用ps -ef | grep java命令找到对应java进程的pid。如果跑了多个java服务,使用top命令查看哪个java进程占用比较高。
  • (2)接着根据pid,找到进程所在的用户,su 切换到用户下,这是因为如果是root用户执行一般会报socket文件获取不到的错误。
  • (3)使用jstat -gc pid [interval]命令查看java进程的GC状态,观察FULL GC,如果频率很高,应该是内存泄露问题。
  • (4)使用jstack -l pid >> stack-java.log,保存线程栈快照信息。
  • (5)使用jmap -dump:format=b,file=heap-java.hprof pid,保存堆快照信息。

先重启服务,临时解决问题,然后根据保存的堆栈信息,通过工具进行问题分析和解决。

推荐一款功能强大的]ava堆内存分析器:MAT(Memory Analyzer Tool)工具。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值