Java生产环境下性能监控与调优详解(三)————JSTACK工具介绍

引言

回顾下上两节的基础知识:

  • jps(java process status)
    用来查看所有的jvm进程,包括进程ID,进程启动的路径等。jps -l 可以具体到包启动路径的进程
  • jinfo
    负责观察进程运行环境参数,包括Java System属性和JVM命令行参数。当系统崩溃时,jinfo可以从core文件里面知道崩溃的Java应用程序的配置信息
  • jstat
    查看JVM统计信息(类加载信息,垃圾回收信息,JIT编译信息等)
  • jmap
    导出镜像文件
    jmap -dump:live,format=b,file=outofmemory.hprof 6448

导出镜像文件后用dump分析工具比如MAT分析具体原因。那么,在生产上我们想知道是哪个进程导致内存飙高了,并且要把这个进程的内存镜像文件DUMP出来应该怎么做呢?

JSTACK工具

  • top 命令
    这里需要提醒大家的一点是top命令是Linux系统的命令,这个不同于JDK自带的jps系列,这个在Linux可以查看内存使用情况,定位到哪个服务进程占用CPU过高。
    CPU查看
  • JSATCK命令
    针对某个CPU占用过高的服务进程,使用JSTACK查看或者重定向DUMP文件。
    查看jstack
  • 查看服务进程中的线程
    top -bn1 -H -p 29068
    查看进程中的线程
  • 假设是线程29082 CPU占用过高
    因为thread id在栈信息中是以十六进制的形式显示的,所以我们要对29082线程做下16进制转换
    printf “%x \n” 29082
    转换后再dump中进行查找
    jstack 29068|grep 0x719a -A -10
    转换

总结

因为没有进行内存泄漏及溢出的模拟,所以看不出来到底那块代码有问题,这个必须在多个时间段提出多个 Thread Dump信息,然后综合进行对比分析,单独分析一个文件是没有意义的。


作者:select you from me
来源:CSDN
转载请联系作者获得授权并注明出处。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值