zoukankan      html  css  js  c++  java
  • JVM运行观察常用命令梳理

    Linux top命令

    观察当前进程占用的CPU/内存比例等运行状态,
    top -Hp 观察进程中的线程,哪个线程CPU和内存占比高

    PID:进程ID,进程的唯一标识符
    USER:进程所有者的实际用户名。
    PR:进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。
    NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级
    VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    SHR:SHR是进程使用的共享内存。共享内存大小,单位kb
    S:这个是进程的状态。它有以下不同的值:
      1.D - 不可中断的睡眠态。
      2.R – 运行态
      3.S – 睡眠态
      4.T – 被跟踪或已停止
      5.Z – 僵尸态
    %CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。
    %MEM:进程使用的可用物理内存百分比。
    TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
    COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)

    java jps(Java Virtual Machine Process Status Tool)

    java提供的可以查看当前的java进程

    jstack

    Jdk自带的线程跟踪工具,用于打印指定Java进程的线程堆栈信息。

    JDK jstack  -l  [pid] 
    

    定位线程状况,重点关注:WAITING BLOCKED

    线程状态
    NEW :未启动的。不会出现在Dump中。
    RUNNABLE :在虚拟机内执行的。运行中状态,可能里面还能看到locked字样,表明它获得了某把锁。
    BLOCKED :受阻塞并等待监视器锁。被某个锁(synchronizers)給block住了。
    WATING :无限期等待另一个线程执行特定操作。等待某个condition或monitor发生,一般停留在park(), wait(), sleep(),join() 等语句里。
    TIMED_WATING :有时限的等待另一个线程的特定操作。和WAITING的区别是wait() 等语句加上了时间限制 wait(timeout)。
    TERMINATED :已退出的。

    jinfo (Java Configuration Info)

    jinfo -flag <name> PID
    

    查看和调整JVM配置参数

    标记为manageable的Flags

    Linux环境:java -XX:+PrintFlagsInitial | grep manageable
    Window环境:java -XX:+PrintFlagsInitial | findstr manageable

    Linux jstat -gc

    jstat -gc pid time
    

    每time秒会显示一次进程号为pid的java进程的GC情况

    java jmap

    jmap - histo pid
    jmap - histo pid |  head -20
    

    查找有多少对象产生

    相关参数:
    -dump : 生成Java堆转储快照
    -heap:显示Java堆详细信息
    -histo:显示堆中对象统计信息

    jmap -heap pid
    

    显示堆栈信息

    jmap -dump:format=b,file=jsconsole.bin pid
    

    生成快照文件

    快照文件利于排查线上问题,但是该命令执行期间会对进程产生很大影响。
    可以设置参数-XX:+HeapDumpOnOutOfMemoryError,OOM的时候会自动产生堆转储文件
    可参考:https://www.cnblogs.com/baihuitestsoftware/articles/6406271.html

  • 相关阅读:
    把git项目放到个人服务器上
    关于fcitx无法切换输入法的问题解决
    博客变迁通知
    (欧拉回路 并查集 别犯傻逼的错了) 7:欧拉回路 OpenJudge 数据结构与算法MOOC / 第七章 图 练习题(Excercise for chapter7 graphs)
    (并查集) HDU 1856 More is better
    (并查集 不太会) HDU 1272 小希的迷宫
    (并查集 注意别再犯傻逼的错了) HDU 1213 How Many Tables
    (最小生成树 Kruskal算法) 51nod 1212 无向图最小生成树
    (并查集) HDU 1232 畅通工程
    (最小生成树 Prim) HDU 1233 还是畅通工程
  • 原文地址:https://www.cnblogs.com/farmersun/p/12446209.html
Copyright © 2011-2022 走看看