zoukankan      html  css  js  c++  java
  • jvm 占用高的问题定位

    定位流程

    先使用一些轻便的工具查看总体情况, 如果情况糟糕, 再使用重量级的工具

    jstack       查看线程数是否过多

    jstat -gc -gcutil 查看gc次数和时间是否过多, 各个分区中堆的实际大小。

          FULL gc过多会造成STOP WORLD, 应用响应停顿。 考虑使用其他垃圾收集方式, CMS G1 ...

    jmap -histo 显示各个类的个数和占用内存大小,查看是否的确占用很大===> 如果确实很大, 可能需要-dump堆; 如果不大,可能不是堆内存的问题

        -histo:live会触发GC。 如果线上应用压力不大,可以使用;压力大时,考虑停用服务后再分析,慎用

    jmap -dump:format=b,file=./xxx.dmp  注意file后面的存放路径。

             命令执行不了, 可能是docker启动时没有设置ptrace=0, 也可能是用户不对, 也可能是file后面的存储路径没有权限

    tar –czf xxx.tar.gz xxx.dmp  压缩dump文件

    docker cp 将dmp copy到本地,使用eclipse MAT进行分析==> cpu 线程个数 锁 对象引用关系

     命令解释:

    jstat -options列出所有可选flag

    -gc     显示内存中各个区的容量和实际占用大小

    -gcutil 显示所有的内存统计百分比

    其他选项

    -class
    -compiler 
    -gccapacity
    -gccause
    -gcmetacapacity
    -gcnew
    -gcnewcapacity
    -gcold
    -gcoldcapacity 
    -printcompilation

    参考: https://blog.csdn.net/zhaozheng7758/article/details/8623549

    https://lotabout.me/2018/QQA-Understanding-jstat-gc-output/

    jmap

    -heap to print java heap summary
    -histo[:live]   
    -dump:<dump-options>   

    其他选项

    -clstats to print class loader statistics

    -finalizerinfo

      

  • 相关阅读:
    EL表达式遍历方法之一
    django auth认证
    总结五个在办公中使用很爽的软件
    django所遇到问题简单总结
    django 远程数据库mysql migrate失败报error 1045之 解决方案
    深拷贝和浅拷贝之地址改变
    序列表转换成横向菜单
    Pycharm破解
    css里涉及到定位相关的example实例
    记录求职
  • 原文地址:https://www.cnblogs.com/yszzu/p/9330498.html
Copyright © 2011-2022 走看看