小言_互联网的博客

JVM性能调优简单命令

413人阅读  评论(0)

一:JVM调优命令

  1. Jinfo

    1. 查看正在运行的java应用程序的扩展参数

    2. 查看jvm参数 Jinfo -flags Tomcat进程id

    3. 查看Java系统参数 Jinfo -sysprops Tomcat进程id

  2. Jstat

    1. 详细查看jvm数据,查看堆内存使用量,以及加载类的数量

    2. jstat -class 进程id 加载类的数量

    3. jstat -gc 进程id 垃圾回收统计

      1. S0C:第一个幸存区的大小

      2. S1C:第二个幸存区的大小

      3. S0U:第一个幸存区使用的大小

      4. S1U:第二个幸存区使用的大小

      5. EC:Eden区的大小

      6. OC:老年代的大小

      7. OU:老年代使用的大小

      8. MC:方法区的大小(元空间)

      9. MU:方法区的使用大小

      10. CCSC:压缩类空间大小

      11. CCSU:压缩类空间使用大小

      12. YGC:年轻代垃圾回收次数

      13. YGCT:年轻代垃圾回收的消耗时间

      14. FGC:老年代垃圾回收次数

      15. FGCT:老年代垃圾回收的消耗时间

      16. GCT:垃圾回收消耗总时间

    4. jstat -gccapacity 进程id 堆内存统计

      1. NGCMN:新生代最小容量

      2. NGCMX:新生代最大容量

      3. NGC:当前新生代容量

      4. OGCMN:老年代最小容量

      5. OGCMX:老年代最大容量

      6. OGC:当前老年代大小

      7. OC:老年代大小

      8. MCMN:最小元数据空间

      9. MCMX:最大元数据空间

      10. MC:当前元数据空间

      11. CCSMN:最小压缩类空间

      12. CCSMX:最大压缩可空间

      13. CCSC:当前压缩类空间大小

    5. jstat -gcnew 进程id 新生代垃圾统计

      1. TT:对象在新生代存活的次数

      2. MTT:对象在新生代存活的最大次数

      3. DSS:期望的幸存区的大小

    6. jstat -gcnewcapacity 进程id 新生代内存统计

    7. jstat -gcold 进程id 老年代垃圾回收统计

    8. jstat -gcoldcapacity 进程id 老年代内存统计

    9. jstat -gcmetacapacity 进程id 元空间大小

    10. jstat -gcutil 进程id

  3. Jmap

    1. Jmap -histo 进程id > ./log.txt 把内存信息输出到文件里 查看内存信息

      • num:序号

      • instance:实例数量

      • bytes:占用空间大小

      • class name:类名称

    2. jmap -heap 进程id 堆信息

    3. jmap -dump:format =b.file=eureka.hprof 进程id 堆内存dump 导出dump文件放入jvisualvm工具中

  4. Jstack

    1. -Xms 10M -Xmx 10M -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError

    • -XX:HeapDumpPath=D:\jvm.dump

  5. 远程连接jvisualvm

    1. 启动普通的jar程序 JMX端口配置:

      1. java -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar foo.jar

    2. Tomcat配置

      1. JAVA_POTS=-Dcom.sun.management.jmxremote.port=8889 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

  6. jstack找出占用CPU很高的堆栈信息

    1. top -p 进程id 显示你的java进程的信息

    2. 按H 获取你的每个线程的内存情况

    3. 找到内存和CPU占用最高的线程tid

    4. 转为十六进制

    5. 执行jstack tid|grep -A 10 十六进制 得到前十行

    6. 查看堆栈信息找出出问题的代码


转载:https://blog.csdn.net/weixin_44307391/article/details/101314285
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场