• 内存排查(二)-使用jdk自带工具


    jdk自带工具

    在实际的项目开发当中,我们可以会碰到java程序占用内存过多,甚至导致进程被系统杀死的情况。那么我们可以使用什么工具来监控系统的内存使用情况呢,下面博主将简单的介绍一下jdk自带工具来监控系统的内存情况。

    查找占用cpu或者内存过高的java进程

    博主这里使用的springbootx项目,并且以jar包的方式运行。所以可以使用下面的命令来查看java进程。

    top | grep java
    

    查看java命令

    jps命令

    使用jps命令,可以查看jvm虚拟机中的进程,也就是说可以通过这个查看正在运行的java进程。

    jps -l
    

    命令执行结果:

    jps命令

    jstat命令

    使用jstat命令,可以查看jvm虚拟机中对应进程的统计信息,包括class文件的加载情况,gc垃圾回收,堆信息等。

    #显示pid的类加载信息
    jstat -class pid
    

    类加载情况

    #显示jit编译的相关信息
    jstat -compiler pid
    

    jit编译情况

    #显示和gc相关的堆信息
    jstat -gc pid
    

    显示gc堆的相关情况

    #显示各个代的容量以及使用情况
    jstat -gccapacity pid
    

    命令执行结果

    jstack命令

    使用jstack命令,可有查看当前线程的运行情况,包括方法栈和native栈,这里需要注意的是线程的状态。线程状态分为几种:

    1. Runnable,执行中。
    2. Blocked,线程阻塞。
    3. Waitting,线程等待。
    4. imeWaitting,有时间的等待。
    #查看线程的方法栈和native栈的信息
    jstack pid
    

    由于长度限制,这里只截取了部分线程的栈信息。

    jstack命令

    jinfo命令

    使用jinfo命令,可以查看某个进程的jvm参数和系统参数的配置信息。

    jinfo pid
    
    #查看某个配置的信息
    jinfo -flag flagname pid
    

    由于长度限制,这里只截取了部分jvm的配置信息。

    jinfo命令

    jmap命令

    使用jmap命令,可以查看jvm中对应进程的堆信息,比如说堆中各个对象的数量大小。

    #打印当前堆中各个对象的数量、大小,如果添加了live属性,那么就说明只打印存活的对象
    jmap -histo:live pid
    
    #把内容转存到本地文件
    jmap -dump:live,format=b,file=<filename> pid
    
    #打印堆总结,包括堆的配置,GC。如堆最大值
    jmap -heap pid
    
    #打印等待回收对象的信息
    jmap -finalizerinfo pid
    
    #打印java堆perm区的classloader的信息
    jmap -permstat pid
    

    这里博主介绍一下如何使用jmap来导出堆的dump信息。

    dump堆信息

    jhat命令

    jat命令,可以用来分析jmap dump出来的文件信息,并且以html的方式展示

    jhat 6084.dump
    

    命令执行结果如下:

    命令执行结果

    查看html页面:

    查看html页面

    可视化工具visualvm

    博主这里使用的是windows系统下面的visualvm工具,visualvm可以进行统一查看java程序的jvm参数,线程情况,堆情况。

    visualvm

    博主微信公众号

  • 相关阅读:
    Codeforces Round #174 (Div. 1 + Div. 2)
    Codeforces Round #176 (Div. 1 + Div. 2)
    [ARC101C] Ribbons on Tree 解题报告
    [CTS2019]珍珠 解题报告
    CF1349D Slime and Biscuits 解题报告
    [PKUWC2018]猎人杀 解题报告
    AGC047 解题报告
    肯德基 解题报告
    [GXOI/GZOI2019]旧词 解题报告
    [ARC084B] Small Multiple 解题报告
  • 原文地址:https://www.cnblogs.com/chenhaoblog/p/13575036.html
Copyright © 2020-2023  润新知