美文网首页
JVM-8-常用工具

JVM-8-常用工具

作者: 宠辱不惊的咸鱼 | 来源:发表于2019-09-30 08:55 被阅读0次

    问题

    • linux查看进程的线程信息
      • ps -T -p $pid
      • top -H -p $pid
        • VIRT:申请内存
        • RES:常驻内存(含进程共享;不包含swap out)
        • SHR:共享内存
        • 实际占用物理内存:RES-SHR
      • htop - F2 - 设置 - 显示选项 - 树状视图+显示自定义线程名

    常用工具

    • JProfiler
      • java程序性能调试方面表现优越,推荐使用

    JDK自带

    • 所有工具都在JDK/bin下,jvisualvm和jconsole为GUI,其他为命令行
    • jstack
      • 进程的线程信息
    jstack -l $pid > jstack.log
    
    • jvisualvm
      • 可监控、性能评估、故障诊断主机上所有java进程的cpu,内存,线程使用情况,类似于JProfiler,严重推荐
    • jconsole
      • java开发,以图表化形式显示cpu,内存,线程数据,并可远程连接监视远程JVM
    • jinfo
      • 可输出并修改运行中java进程的opts
    jinfo -opt $pid  
    jinfo -flag MaxPermSize $pid # 查看MaxPermSize大小
    
    • jps
      • 类似unix的ps,显示本地java进程,含pid
    • jmap
      • 打印java进程(pid)内所有对象情况
        • dump:堆转储快照
        • heap:堆详细信息
        • histo:堆中对象统计信息
    jmap -dump:format=b,file=dump.bin $pid # 生成的bin文件可用MAT进行分析
    # 似乎已经改成jhsdb jmap --heap --pid $pid
    jmap -heap $pid # 显示各分区使用量
    jmap -histo $pid # 显示所有对象的数量统计
    
    [root@localhost logs]# jhsdb jmap --heap --pid 8863
    Attaching to process ID 8863, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 9.0.4+11
    
    using thread-local object allocation.
    Garbage-First (G1) GC with 2 thread(s)
    
    Heap Configuration:
       MinHeapFreeRatio         = 40
       MaxHeapFreeRatio         = 70
       MaxHeapSize              = 482344960 (460.0MB)
       NewSize                  = 1363144 (1.2999954223632812MB)
       MaxNewSize               = 289406976 (276.0MB)
       OldSize                  = 5452592 (5.1999969482421875MB)
       NewRatio                 = 2
       SurvivorRatio            = 8
       MetaspaceSize            = 21807104 (20.796875MB)
       CompressedClassSpaceSize = 1073741824 (1024.0MB)
       MaxMetaspaceSize         = 17592186044415 MB
       G1HeapRegionSize         = 1048576 (1.0MB)
    
    Heap Usage:
    G1 Heap:
       regions  = 460
       capacity = 482344960 (460.0MB)
       used     = 1048576 (1.0MB)
       free     = 481296384 (459.0MB)
       0.21739130434782608% used
    G1 Young Generation:
    Eden Space:
       regions  = 1
       capacity = 8388608 (8.0MB)
       used     = 1048576 (1.0MB)
       free     = 7340032 (7.0MB)
       12.5% used
    Survivor Space:
       regions  = 0
       capacity = 0 (0.0MB)
       used     = 0 (0.0MB)
       free     = 0 (0.0MB)
       0.0% used
    G1 Old Generation:
       regions  = 0
       capacity = 23068672 (22.0MB)
       used     = 0 (0.0MB)
       free     = 23068672 (22.0MB)
       0.0% used
    
    3366 interned Strings occupying 234592 bytes.
    
    • jstat
      • JVM内存工具,用来监视堆和非堆大小,使用量,以及加载类信息
    jstat -class $pid # 加载类数量,及所占空间
    jstat -compiler $pid # JVM实时编译信息
    jstat -util $pid # gc信息统计
    jstat -gc $pid # gc信息,最后五项分别是young gc次数,young gc时间,full gc次数,full gc时间,gc总时间
    # JVM中young,old,perm三代对象使用和占用大小
    # PGCMN表示perm最小使用量,PGCMX表示perm最大使用量,PGC是当前新生成对象的perm占用量,PC是当前perm占用量;其他以此类推
    jstat -gccapacity $pid
    jstat -gcnew $pid # new对象信息
    jstat -gcnewcapacity $pid # new对象信息及占用量
    jstat -gcold $pid # old对象信息
    jstat -gcoldcapacity $pid # old对象信息及占用量
    jstat -gcpermcapacity $pid # perm对象信息及占用量
    jstat -printcompilation $pid # 当前JVM解释执行信息
    jstat -printcompilation $pid 250 6 -h3 # 每250毫秒打印,打印6次,每三行显示一下标题
    

    相关文章

      网友评论

          本文标题:JVM-8-常用工具

          本文链接:https://www.haomeiwen.com/subject/mdrcpctx.html