基于JDK命令行工具的Java性能监控

一. JVM的参数类型

1. 标准参数

  • -help
  • -server -client
  • -version -showversion
  • -cp -classpath

2. 非标准化参数 (X参数)

  • -Xint:解释执行 java -Xint version
  • -Xcomp:第一次使用就编译成本地代码  java -Xcomp version
  • -Xmixed:混合模式,JVM自己来决定是否编译成本地代码

3. XX参数

  • 非标准化参数
  • 相对不稳定
  • 主要用于JVM调优和Debug
  • 参数分类:
    • Boolean 类型 格式 -XX:[+-]<name>表示启用或禁用name属性,例如:-XX:+UseG1GC
    • 非Boolean类型 格式:-XX:<name>=<value> 表示name的属性值是value,例如-XX:MaxGCPauseMillis=500
    • -Xmx -Xms 不是X参数,而是XX参数:-Xms等价于-XX:InitialHeapSize -Xmx等价于-XX:MaxHeapSize

二. 查看JVM运行时参数

1. -XX:+PrintFlagslnitial(可设置参数的初始值)  显示的参数如果是:=则表示是修改过的,=则表示是默认值

2. -XX:PrintFlagsFinal

3. -XX:UnlockExperimentalVMOptions解锁实验参数(先决条件)

4. -XX:+UnlockDiagnosticVMOptions解锁诊断参数

5. -XX:+PrintCommandLineFlags打印命令行参数

6. -Xms -Xmx 堆的容量

7. -XX:NewSize -XX:MaxNewSize 新生代的大小

8. -XX:NewRatio  设置Yong 和 Old的比例   

9. -XX:SurvivorRatio 设置两个Survivor区和Eden的比

10. -XX:MetaspaceSize -XX:MaxMetaspaceSize metaspace 大小 (下面的参数都是小弟,主要调整老大即可,容量大了,下面的也会变大)

11. -XX:+UseCompressedClassPointers 使用压缩短指针

12. -XX:CompressedClassSpaceSize 默认1G 可以设置

13. -XX:InitialCodeCacheSize  codeCache 最小值

14. -XX:ReservedCodeCacheSize codeCache 最大值

15. -XX:StringTableSize=99991  调整String Pool的大小

16. 查询运行的JVM中的参数

  • jinfo -flag MaxHeapSize [pid] 查看最大内存
  • jinfo -flags 23789 显示 Non-default VM flags

三. jstat查看JVM统计信息

1. 查看的信息

  • 类装载
  • 垃圾收集
  • JIT编译

2. 命令格式

  • jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
  • options:-class,-compiler,-gc,-printcompilation
  • 垃圾收集 -gc、-gcutil、-gccause、-gcnew、-gcold
    • S0C、S1C、S0U、S1U:S0和S1的总量与使用量(S0 和S1 只会启用一个,未启用的会是0)
    • EC、EU eden区总量与使用量
    • OC、OU:Old区总量与使用量
    • MC、MU:Metaspace区总量与使用量
    • CCSC、CCSU:压缩类空间总量与使用量
    • YGC、YGCT:YoungGC的次数与时间
    • FGC、FGCT:FullGC的次数与时间
    • GCT:总的GC时间
  • JIT编译
    • -compiler   
    • -printcompilation(method compiler)

四. 导出内存映像文件

1. 内存溢出自动导出(内存很大的时候,可能会导不出来)

  • -XX:+HeapDumpOnOutOfMemoryError
  • -XX:HeapDumpPath=./ (路径)

2. 使用jmap命令手动导出,使用MAT工具分析

  • jmap -dump:format=b,file=heap.hprof [pid]

五. MAT分析内存溢出

1. Histogram 查看对象数量  

  • shallow heap 不包含内部对象字节
  • 查看GC root 引用,右键 Merge short path to GC ROOT ==>exclude All xxxx 只看强引用

2. dominator_tree 查看对象占的字节数

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值