Linux排查JVM问题

 

通常来说当我们的Java服务出现问题时,首先需要考虑的是这个进程是不是还在运行,然后再关注这个进程所占用的资源多少,CPU、内存的使用情况,从而定位到具体问题。因此,有必要对Linux服务器中的JVM异常排查进行下记录。

方法

1、查找Java进程id

      ps -ef | grep java

      jps

      

2、top查找java进程

      top -c  #参数c表示列出命令的详细信息

     

     top -Hp pid #其中参数H表示使用线程分析模式,p表示指定相关的进程id为13514  打印pid进程中线程使用情况

     

3、printf打印线程13676的16进制数

     printf "%x\n" printf

     

 4、jinfo 输出并修改运行时的java进程的参数

     

5、jmap查看堆使用信息

     jmap -heap 13514

     

6、jmap -histo 13514 #查看各个类所对应的实例对象所占用的内存:(分析内存使用飙高原因)

    num:表示编号, #instances表示实例数量,#bytes表示占用的内存字节数量,class name是对应的类名

     

7、jmap -dump:format=b,file=file pid 打印线程dump

     jmap -dump:format=b,file=mobile2020.out 13514

     

8、通过查看gc统计信息来分析问题,如果gc次数比较多,那么发生内存泄漏的可能性就比较大了

     jstat -gcutil 13514 1000 #每隔1s统计gc信息

     其中各个参数的含义如下:

       s0: 新生代survivor0的使用率

       s1:s1的使用率

       E: 新生代eden空间的使用率

      O:老年代的使用率

      M:元数据的空间使用率

      YGC:新生代gc次数

      YGCT:新生代GC总时长

      FGC:full gc的次数

      FGCT: full gc 的总时长

      GCT: 总的gc时长

     
9、 jstack  用于打印java进程的堆栈信息(比如知道java是怎么崩溃的),线程dump 

      jstack 13514 | grep 356c -A 100#打印java进程的堆栈信息

      

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值