元月's blog 元月's blog
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多

元月

临渊羡鱼,不如退而结网
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多
  • 基础

  • 并发编程

  • JVM

    • Java的调试体系-JPDA架构
    • JVM整体结构和内存模型
    • 深度剖析JVM类加载机制
    • JVM对象创建与内存分配机制
    • JVM垃圾回收算法
    • JVM垃圾收集器一:Serial和Parallel收集器
    • JVM垃圾收集器二:CMS与三色标记算法详解
    • JVM垃圾收集器三:G1(Garbage First)
    • JVM垃圾收集器四:ZGC与颜色指针详解
    • JVM调优之常用的调优指令
      • 一、jmap
        • 1、查看堆配置、堆使用信息 jmap -heap 14660`
        • 2、查看实例个数和占用内存大小
        • 3、堆内存dump
      • 二、jstack
        • 1、jstack pid:查看线程堆栈信息和死锁
        • 2、查看占用CPU最高的线程
        • 方法一:通过Liunx命令和JVM调优命令排查
        • 方法二:通过第三方工具 Arthas 排查
      • 三、jstat
        • 1、查看GC统计 jstat -gc pid 1000 10
        • 2、堆内存统计 jstat -gccapacity pid
        • 3、元数据空间统计 jstat -gcmetascapacity pid ![](http://media.ruanyou.top/blog/img/articleb9bb739.png)
      • 四、jinfo
        • 1、查看JVM的flags信息、查看命令行参数信息 jinfo -flags pid
        • 2、查看Java系统属性信息 jinfo -sysprops pid
      • 五、思维导图
    • JVM调优之常用的调优工具
    • Arthas:一款优秀的Java诊断工具
    • 亿级流量系统JVM实战
  • Java基础
  • JVM
元月
2022-08-30
目录

JVM调优之常用的调优指令

# JVM调优之常用的调优指令

# 一、jmap

# 1、查看堆配置、堆使用信息 jmap -heap 14660`

​

# 2、查看实例个数和占用内存大小
  • ​ jmap -histo 14660 #查看历史生成的实例
  • ​ jmap -histo:live 14660 #查看当前存活的实例,执行过程中会触发一次full gc

# 3、堆内存dump

​ jmap ‐dump:format=b,file=eureka.hprof 14660

​ 设置内存溢出自动导出dump文件(内存很大的时候,可能会导不出来)

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\jvm.dump
1

# 二、jstack

# 1、jstack pid:查看线程堆栈信息和死锁

  • "Thread-1" 线程名
  • prio=5 优先级=5
  • tid=0x000000001fa9e000 线程id
  • nid=0x2d64 线程对应的本地线程标识nid
  • java.lang.Thread.State: BLOCKED 线程状态
# 2、查看占用CPU最高的线程
# 方法一:通过Liunx命令和JVM调优命令排查
  1. 通过top命令查看进程的资源占用情况

  2. 再通过top -H -p pid命令查看进程中线程的资源占用情况

  3. 将占用CPU最高的线程pid转16进制

    printf '%x\n' 646
    #输出 286
    
    1
    2
  4. 通过jstack命令查看线程信息 jstack pid | grep -A 10 nid

    jstack 24 | grep -A 10 0x286

# 方法二:通过第三方工具 Arthas 排查
  • thread -n 3 -i 1000 : 列出 1000ms 内最忙的 3 个线程栈

# 三、jstat

命令的格式如下:

jstat [-命令选项] [vmid] [间隔时间(毫秒)] [查询次数]

# 1、查看GC统计 jstat -gc pid 1000 10

  • jstat -gcnew pid 新生代垃圾回收统计
  • jstat -gcold pid 老年代垃圾回收统计
# 2、堆内存统计 jstat -gccapacity pid

  • jstat -gcnewscapacity pid 新生代内存统计
  • jstat -gcoldcapacity pid 老年代内存统计
# 3、元数据空间统计 jstat -gcmetascapacity pid
  • MCMN:最小元数据容量
  • MCMX:最大元数据容量
  • MC:当前元数据空间大小
  • CCSMN:最小压缩类空间大小
  • CCSMX:最大压缩类空间大小
  • CCSC:当前压缩类空间大小
  • YGC:年轻代垃圾回收次数
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间

# 四、jinfo

# 1、查看JVM的flags信息、查看命令行参数信息 jinfo -flags pid

java -XX:+PrintFlagsInitial 表示打印出所有参数选项的默认值

java -XX:+PrintFlagsFinal 表示打印出所有参数选项在运行程序时生效的值

# 2、查看Java系统属性信息 jinfo -sysprops pid

# 五、思维导图

#JVM
JVM垃圾收集器四:ZGC与颜色指针详解
JVM调优之常用的调优工具

← JVM垃圾收集器四:ZGC与颜色指针详解 JVM调优之常用的调优工具→

最近更新
01
otter二次开发-支持按目标端主键索引Load数据
08-03
02
mvnw简介
06-21
03
gor流量复制工具
06-03
更多文章>
Theme by Vdoing | Copyright © 2022-2024 元月 | 粤ICP备2022071877号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式