当前位置: 首页 > article >正文

【JVM 工具命令】JAVA程序线上问题诊断,JVM工具命令的使用,jstat, jstack,jmap命令的使用

【JVM 工具命令】JAVA程序线上问题诊断,JVM工具命令的使用,jstat, jstack,jmap命令的使用

 

1.  JVM监控工具: Jstat命令

通过这个命令查询java程序,gc的情况

jstat -gcutil {pid} 5000 12

· 5000 表示5000毫秒刷新一次

· 12 表示统计12次

· O这一列 达到100就会触发fgc,我们优化jvm就是尽量减少jvm 进行fgc的次数

· FGC这一列表示fullgc的次数

· FGCT这一列表示累计进行fullgc的耗时,第三次fgc的时间减去第二次fgc的时间就是第三次fgc花费的时间。0.152-0.125

通过jstat命令我们发现问题后就可以通过下面的jstack命令来定位java的哪个线程导致的具体问题。

2. JVM监控工具:Jstack命令

Jstack {pid}   --  查看堆栈信息

Jstack {pid} | grep {xid} -A 30    -- 查看堆栈中指定的某个线程的日志信息。 {xid} 必须是十六进制的线程id

Jstack命令只会打印一次信息,可以写下面的一个脚本,来持续输出线程日志信息

3. JVM监控工具: JMap Histo

JMap命令会触发 full gc,生产环境中需要注意使用。

jmap -histo:live {pid}    通过这个命令观察内存中最多的对象, 判断内存中积累的数据,监视内存中当前存活的对象内存占用情况。

jmap -histo:live pid 命令却不知道这些对象具体的值,可以通过 jmap -heapdump 命令

4. JVM监控工具: JMap -heapdump

jmap -dump:live, format=b, file=/root/tomcat.data  {pid}   通过这个命令 输出当前内存中的对象数据。

jmap命令都会出发fgc。 jvm优化就是优化减少fgc次数,同时减少fgc的时间。


http://www.kler.cn/a/303995.html

相关文章:

  • C++ QT 工具日志异步分批保存
  • 项目模块十七:HttpServer模块
  • 本地编译ChatNio的问题解决
  • ESLint 使用教程(七):ESLint还能校验JSON文件内容?
  • 动态规划与贪心算法:核心区别与实例分析
  • LED和QLED的区别
  • 【机器学习】使用Numpy实现神经网络训练全流程
  • 关于若依flowable的安装
  • 76-mysql的聚集索引和非聚集索引区别
  • 为什么网站加载速度总是那么不尽如人意呢?(网站优化篇)
  • 2024.9.14(RC和RS)
  • Docker操作MySQL
  • 互联网环境下CentOS7部署K8S
  • LNMP的简单安装(ubuntu)
  • Artec Leo协助定制维修管道,让石油和天然气炼油厂不停产
  • vue3开发uniapp转字节小程序注意事项
  • 《C++PrimerPlus》第10章:类和对象
  • go语言开发windows抓包工具
  • 在centos上搭建syslog服务端
  • 详情攻略来了!浏览网站记录怎么查?一文读懂这3种实用方法
  • Vue3 响应式工具函数isRef()、unref()、isReactive()、isReadonly()、isProxy()
  • 火焰检测算法、明烟明火检测、烟火检测算法
  • dirty pages , swapiness 查看SWAP占用进程
  • 线性代数 第六讲 特征值和特征向量_相似对角化_实对称矩阵_重点题型总结详细解析
  • 【原创】java+springboot+mysql疫情期间在线答疑系统设计与实现
  • Word使用手册