• 作业8:常用java命令(二)


    一、jinfo(Configuration Info for Java)

    1、功能:jinfo可以实时地查看和调整虚拟机的各项参数。

    2、参数:

    选项 作用
    -flag name 打印改名字的VM设置
    -flag +|- name 是否打印某个VM设置
    -flag name=value 设置某个VM设置为某个值
    -sysprops 打印系统中所有Java设置
    -flags 打印所有VM设置
    打印所有的VM和系统的Java设置

    3、例子

    $ jinfo -flags 8472
    VM Flags:
    -XX:CICompilerCount=4 -XX:ConcGCThreads=2 -XX:G1ConcRefinementThreads=8 -XX:G1HeapRegionSize=1048576 -XX:InitialHeapSize=268435456 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=734003200 -XX:MaxNewSize=440401920 -XX:MinHeapDeltaBytes=1048576 -XX:NonNMethodCodeHeapSize=5835340 -XX:NonProfiledCodeHeapSize=122911450 -XX:ProfiledCodeHeapSize=122911450 -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseG1GC -XX:-UseLargePagesIndividualAllocation
    
    # 截取片断
    $ jinfo -sysprops 8472
    Java System Properties:
    #Sat Jul 28 15:29:42 CST 2018
    sun.desktop=windows
    awt.toolkit=sun.awt.windows.WToolkit
    java.specification.version=10
    file.encoding.pkg=sun.io
    sun.cpu.isalist=amd64
    sun.jnu.encoding=GBK
    java.class.path=D:/software/IntelliJ IDEA 2018.1.1/lib/jps-launcher.jar;E:/develop/software/java10/jdk/lib/tools.jar;D:/software/IntelliJ IDEA 2018.1.1/lib/optimizedFileManager.jar
    java.vm.vendor="Oracle Corporation"
    jdt.compiler.useSingleThread=true
    sun.arch.data.model=64
    kotlin.incremental.compilation=true
    user.variant=
    kotlin.daemon.client.alive.path="C:\Users\HBKJ\AppData\Local\Temp\kotlin-idea-4911978126183262642-is-running"
    java.vendor.url=http://java.oracle.com/
    
    

    二、jstat(JVM Statistics Monitoring Tool)

    1、功能:jstat用于监视JVM各种运行状态信息的命令行工具。可以显示本地或远程JVM进程中的类装载、内存、垃圾收集、JIT编译等运行数据。

    2、参数:

    选项 作用
    -class 监视类加载、卸载数量、总空间以及类状态所耗费的时间
    -gc 监视Java Heap状态,包含Eden、S0、S1、Old、MetaSpace等容量、已用空间、GC耗费时间合计等信息
    -gcutil 与gc类似,关注已使用空间占总空间的占比
    -gccause 与gcutil类似,额外输出导致上次GC的原因
    -gcnew 监视新生代GC的状况
    -gcold 监视老年代GC的状况
    -gccapacity 与gc类似,关注Java堆各个区域使用到的最大和最小空间
    -gcnewcapacity 与gcnew类似,关注新生代使用到的最大和最小空间
    -gcoldcapacity 与gcold类似,关注老年代使用到的最大和最小空间
    -gcmetacapacity 与gc类似,关注MetaSpace使用到的最大和最小空间
    -compiler 输出JIT编译器编译过的方法、耗时等信息
    -printcompilation 输出已经被JIT编译的方法

    3、例子

    $ jstat -gcnew 8472 1000 3
     S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT
       0.0 2048.0    0.0 2048.0 15  15 3584.0  97280.0   9216.0      3    0.009
       0.0 2048.0    0.0 2048.0 15  15 3584.0  97280.0   9216.0      3    0.009
       0.0 2048.0    0.0 2048.0 15  15 3584.0  97280.0   9216.0      3    0.009
    
    $ jstat -gcnewcapacity 8472 1000 1
      NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC
           0.0   716800.0    99328.0      0.0      0.0 716800.0   2048.0   716800.0    97280.0     3     0
    
    $ jstat -gccause 8472 1000 1
      S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC
      0.00 100.00   9.47  17.63  97.47  92.84      3    0.009     0    0.000    0.009 Metadata GC Threshold No GC
    
    $ jstat -gcutil 8472 1000 1
      S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
      0.00 100.00   9.47  17.63  97.47  92.84      3    0.009     0    0.000    0.009
    
    $ jstat -class 8472 1000 1
    Loaded  Bytes  Unloaded  Bytes     Time
      3622  7032.7        0     0.0       1.22
      3622  7032.7        0     0.0       1.22
      
    $ jstat -compiler 8472 1000 1
    Compiled Failed Invalid   Time   FailedType FailedMethod
        1640      1       0     1.63          1 java/util/concurrent/ConcurrentHashMap putVal
    
    $ jstat -printcompilation 8472 1000 1
    Compiled  Size  Type Method
        1640     49    1 io/netty/util/internal/shaded/org/jctools/queues/atomic/BaseLinkedAtomicQueue isEmpty
    

    三、jmap(Memory Map for Java)

    1、功能:jmap用于生成堆转储快照(headdump或dump文件)。

    2、生成dump文件的方法

    • jmap
    • -XX:HeapDumpOnOutOfMemoryError,JVM发生OOM异常自动生成
    • -XX:HeapDumpOnCtrlBreak参数,运行期间 Ctrl+Break 生成
    • Linux系统下通过kill -3 生成

    3、选项

    选项 作用
    -clstats 打印类加载器的状态
    -finalizerinfo 打印在F-Queue等待Finalizer线程执行finalize方法的对象
    -histo[:live] 打印堆中对象统计信息,如类、实例数量和合计容量
    -dump 显示堆详细信息,如使用哪种回收器、参数配置、分代状况等
    额外:live 只输出存活对象
    额外:format=b 二进制格式(文件小)
    额外:file=filename 输出文件

    4、例子

    # 截取片断
    $ jmap -clstats 8472 
    Index Super InstBytes KlassBytes annotations   CpAll MethodCount Bytecodes MethodAll   ROAll    RWAll    Total ClassName
        1    -1  24694880        472           0       0           0         0         0      24      584      608 [B
        2    -1   1305288        472           0       0           0         0         0      24      584      608 [I
        3    11    461040        640           0   21624         132      5437     47840   23488    48432    71920 java.lang.Class
        4    11    405576        584         128   13056         103      4108     51560   17416    49168    66584 java.lang.String
        5    -1    372136        472           0       0           0         0         0      24      584      608 [Ljava.lang.Object;
        6    11    343424        560           0    1352           9       213      2760    1488     3520     5008 java.util.concurrent.ConcurrentHashMap$Node
        7    -1    150464        472           0       0           0         0         0      24      584      608 [C
        8    11    148000        552           0    1376           7       149      1856    1152     2952     4104 java.util.HashMap$Node
        9  2532    135280        528           0     688           3        56      1848     472     2776     3248 java.lang.ref.SoftReference
       10    -1    101840        472           0       0           0         0         0      32      584      616 [Ljava.util.concurrent.ConcurrentHashMap$Node;
       11    -1     91200        488           0    1272          14       109      3408    1528     3872     5400 java.lang.Object
       12     9     69840        544           0     520           2        17       792     336     1704     2040 sun.util.locale.LocaleObjectCache$CacheEntry
       13    -1     66272        472           0       0           0         0         0      32      584      616 [Ljava.util.HashMap$Node;
    
    $ jmap -finalizerinfo 8472
    No instances waiting for finalization found
    
    # 截取片断
    $ jmap -histo 8472
     num     #instances         #bytes  class name (module)
    -------------------------------------------------------
       1:         18142       24747712  [B (java.base@10.0.1)
       2:          1378        2076168  [I (java.base@10.0.1)
       3:          3874         463096  java.lang.Class (java.base@10.0.1)
       4:         17191         412584  java.lang.String (java.base@10.0.1)
       5:          3616         376776  [Ljava.lang.Object; (java.base@10.0.1)
       6:         10755         344160  java.util.concurrent.ConcurrentHashMap$Node (java.base@10.0.1)
       7:           183         152336  [C (java.base@10.0.1)
       8:          4625         148000  java.util.HashMap$Node (java.base@10.0.1)
    
    # 生成dump文件可以用jhat分析
    # 借助其他网站的在线分析工具
    # jvisualvm分析
    # windbg分析等
    $  jmap -dump:live,format=b,file=heap.bin 8472
    Heap dump file created
    

    四、jhat(JVM Heap Analysis Tool)

    1、功能:分析jmap生成的堆转储快照。

    2、例子

    $ jhat heap.bin
    通过浏览器查看即可
    

    3、其他好用的堆转储快照分析工具

    • IBM Memory Analyzer
    • Eclipse Memory Analysis
    • jvisualvm
  • 相关阅读:
    sfzwapp2
    linux-umount时提示device is busy时,如何查找被何进程占用?
    MySQL管理_数据库启动与关闭
    cache 比free 多
    NFS
    mysql备份多个库
    liunx修改时区,UTC 修改到CST
    mongodb备份恢复
    嵌入式新闻早班车-第24期
    【STM32H7的DSP教程】第48章 STM32H7的中值滤波器实现,适合噪声和脉冲过滤(支持逐个数据的实时滤波)
  • 原文地址:https://www.cnblogs.com/linzhanfly/p/9382156.html
Copyright © 2020-2023  润新知