zoukankan      html  css  js  c++  java
  • 常用JDK自带命令行工具

    网上有很详细的命令行的使用,本篇只记录很常用的几个命令,为了方便以后自己查阅。

    1、jps(JVM Process Status Tool):查看正在运行的java虚拟机进程

    jps命令相当于Linux下的ps命令,只不过它只列出Java进程

    • jps:输出java进程id和Main函数名称
    • jps -l :输出主函数的完整路径
    • jps -v:输出传递给java虚拟机的参数

    2、jstat(JVM Statistics Mornitoring Tool):查看虚拟机运行时信息

    jstat可以查看Java虚拟机各种运行状态信息,可以通过它查看JAVA虚拟机进程中的类装载、堆内存、垃圾收集、JIT编译等运行数据

    jstat -<options> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

     options:包含以下选项

    • -gc:显示与GC相关信息
    • -gccause:显示垃圾回收期相关信息,同时显示最后一次垃圾回收的原因
    • -gccapacity:显示各个代的容量和使用情况
    • -gcnew:显示新生带信息
    • -gcnewcapacity:显示年轻代大小和使用情况
    • -gcold:显示老年代信息
    • -gcoldcapacity:显示老年代大小

     -t:在输出信息前加上一个Timestamp列,显示程序的运行时间

     vmid:与操作系统的PID是一致的

     interval:用于指定输出统计数据的周期,单位为毫秒

     count:用于指定输出几次数据

    使用示例:

    需要每500毫秒查询一次PID为1612垃圾回收情况,一共查询5次,那命令如下:

    jstat -gc 1612 500 5

    输出GC相关信息:

    • S0C,S1C:S0区和S1区大小,KB
    • S0U,S1U:S0区和S1区已使用大小,KB
    • EC,OC,MC:eden区,old老年代区,方法区大小,KB
    • EU,OU,MU:eden区,old老年代区,方法区已使用大小,KB
    • CCSC,CCSU:压缩类空间大小,压缩类空间使用大小,KB
    • YGC,FGC:年轻代GC,Full GC次数
    • YGCT,FGCT:年轻代GC,FullGC耗时
    • GCT:GC总耗时

    3、jmap(Memory Map For Java):查看或导出堆快照信息

    jmap可以生成Java程序的堆的dump文件,也可以查看堆内存对象的统计信息,查看ClassLoader的信息以及finalizer队列

    jmap [option] vmid

    options:包含以下选项

    • -histo:显示堆中对象统计信息,包括类、实例数量和合计容量
    • -dump:生成Java堆快照。格式为:-dump:[live,]format=b,file=<filename>,其中live子参数说明是否只dump出存活的对象

    使用示例:

    生成PID为1612前20名的对象统计信息,并将结果写到/root/logs/jmapresult.txt

    jmap -histo pid | head -20 > /root/logs/jmapresult.txt 

    生成PID为1612的当前堆快照(生成的结果可以使用专门的工具进行分析)

    jmap -dump:format=b,file=/root/logs/heap.hprof 1612

    4、jhat(JVM Heap Analysis Tool):JDK自带的堆分析工具

    jhat命令与jmap命令搭配使用,用来分析jmap生成的堆快照信息。不过一般不会使用jhat命令来分析dump文件,因为其功能很简陋。可以使用专门分析dump文件的Eclipse Memory Analyzer工具。

    使用示例:

    jhat /root/logs/heap.hprof

    5、jstack(Stack Trace For Java):查看虚拟机当前时刻的线程快照

    线程快照就是当前虚拟机内每一个线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的原因。

     jstack [option] vmid

    options:包含以下选项

      -l :除堆栈外,显示关于锁的附加信息

    使用示例:

    生成PID为1612线程堆栈信息(会包含锁信息),并将结果写到/root/logs/jstack.txt

    jstack -l 1612 > /root/logs/jstack.txt

     

    6、jinfo(Configuration Info For Java):实时查看和调整虚拟机的各项参数

    jinfo [option] <pid>

    options:包含以下选项

    • -flags :打印VM参数
    • -sysprops:打印Java相关系统参数
    • <no option>:打印所有参数

    7、图形化界面(在jdk路径的bin目录下,点击jvisualvm.exe) 

    图形界面一般用于测试环境(生产环境一般不允许远程这样操作) 。详细的操作说明可参考https://blog.csdn.net/u012550080/article/details/81605189

    参考地址:

    https://blog.csdn.net/xiaoliuliu2050/article/details/74012382

    https://blog.csdn.net/l2580258/article/details/80147602

    https://www.cnblogs.com/yjd_hycf_space/p/7755633.html

  • 相关阅读:
    Python的with语句(文件打开方式)
    python代码异常范围检查方法(非常实用)
    python一标准异常总结大全(非常全)
    python里pickle模块
    pyhon文件操作典型代码实现(非常经典!)
    codeblocks中cocos2dx项目添加新的.cpp和.h文件后编译运行的方法
    ubuntu安装cocos2dx
    学习资料整理
    Spring学习笔记--在SpEL中筛选集合
    Spring学习笔记--Spring表达式语言SpEL
  • 原文地址:https://www.cnblogs.com/xuwenjin/p/13081100.html
Copyright © 2011-2022 走看看