Thread dump文件抓取和分析

接下来分析CentOS下怎么抓取Thread dump文件,JCA怎么分析Thread dump文件。

1、CentOS下抓取Thread dump文件

CentOS下命令
会打印出额外的锁信息,在发生死锁时可以用jstack -l pid来观察锁持有情况

jstack -l pid

不仅会输出Java堆栈信息,还会输出C/C++堆栈信息

jstack -m pid

输出有异常的进程Thread Core文件。

jstack -l pid >> /root/*.txt

执行 “jstack 进程号 | grep 线程ID” 查找某进程下线程的状态。

2、JCA工具分析Thread dump文件

2.1 线程状态

New: 当线程对象创建时存在的状态,此时线程不可能执行;
Runnable:当调用thread.start()后,线程变成为Runnable状态。只要得到CPU,就执行;
Running:线程正在执行;
Waiting:执行thread.join()或在锁对象调用obj.wait()等情况就会进该状态,表明线程正处于等待某个资源或条件发生来唤醒自己;
Timed_Waiting:执行Thread.sleep(long)、thread.join(long)或obj.wait(long)等就会进该状态,与Waiting的区别在于Timed_Waiting的等待有时间限制;
Blocked:如果进入同步方法或同步代码块,没有获取到锁,则会进入该状态;
Dead:线程执行完毕,或者抛出了未捕获的异常之后,会进入dead状态,表示该线程结束
其次,对于jstack日志,我们要着重关注如下关键信息
Deadlock:表示有死锁
Waiting on condition:等待某个资源或条件发生来唤醒自己。具体需要结合jstacktrace来分析,比如线程正在sleep,网络读写繁忙而等待
Blocked:阻塞
Waiting on monitor entry:在等待获取锁
in Object.wait():获取锁后又执行obj.wait()放弃锁

一般重点查看“等待资源Waiting on condition”、“wait()”、“阻塞Blocked”。这些是引起CPU高,可能是线程执行有死循环。

2.2具体例子

利用下面大量new对象模拟“堆内存溢出”的案例。

   List<Object> list = new ArrayList<>();for (int i = 0; i < 10000000; i++) {String str = "";for (int j = 0; j < 1000; j++) {str += UUID.randomUUID().toString();}list.add(str);}

下载好Jca.jar。将该jar包放到jdk/bin目录下。
输入下面命令,打开JCA分析工具
…/bin>java –jar jca433.jar

弹出工具页面,File—>Open Thread dumps,找到文件。

-----一般对于JavaCore文件,我们需要多个文件进行分析,对比可以找到大概代码哪行有问题。
从上面线程状态分析可以看出,对应代码21行有异常,另外51%CPU是在“等待资源Waiting on condition”,可能是代码有死循环等问题。可以具体进行排查。

Thread dump文件抓取和分析(JCA工具)相关推荐

  1. drwtsn32.exe和adplus.vbs进行dump文件抓取

    转自:http://hi.baidu.com/justin_wu2010/blog/item/cc31641fa8d84f0f314e15b1.html 以前只在linux和unix下面才用过dump ...

  2. 嘘,我已经瞒着开发解锁APP日志文件抓取及分析啦!

    ------·今天距2020年87天·------ 这是ITester小栈第49次推文 大家好,我是coco小锦鲤 经过之前的APP系列 我们知道了APP的测试流程 也列举了APP通用测试用例 还解答 ...

  3. java怎么抓取测试apk日志_Android测试日志文件抓取与分析

    1.log文件分类简介 实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump,还有高通平台的还会有QXDM日志 状态信息的有:adb shel ...

  4. log 的抓取与分析

    log 的抓取与分 http://blog.csdn.net/yaoming168/article/details/38777727 log 的抓取与分析 一.Android log框架简介 二.lo ...

  5. python新闻评论分析_使用 python 抓取并分析京东商品评论数据

    本篇文章是python爬虫系列的第三篇,介绍如何抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化.下面是要抓取的商品信息,一款女士文胸.这个商品共有红色,黑色和肤色三种颜色, 70B到90D ...

  6. 短视频评论的抓取及分析

    短视频评论的抓取及分析 一.设计背景 目前,短视频已经成为大多数人娱乐消遣的主要方式.用户在观看视频内容的同时,也同样关注视频评论,并且很多时候评论带给人们的乐趣远远超过视频本身.但是各短视频平台都没 ...

  7. ios 打印 详细错误日志_【专家专栏】林相宇 | IOS错误日志抓取和分析

    原标题:[专家专栏]林相宇 | IOS错误日志抓取和分析 在调试自己和别人的IOS App时,发生Crash是非常正常的情况,分析这些Crash的主要手段之一就是分析Crash发生时产生的错误日志.对 ...

  8. NetCloud——一个网易云音乐评论抓取和分析的Python库

    在17的四月份,我曾经写了一篇关于网易云音乐爬虫的文章,还写了一篇关于评论数据可视化的文章.在这大半年的时间里,有时会有一些朋友给我发私信询问一些关于代码方面的问题.所以我最近抽空干脆将原来的代码整理 ...

  9. java 生成dump_java dump文件怎么生成和分析-JMAP用法详解

    jmap是java自带的工具 1. 查看整个JVM内存状态 jmap -heap [pid] 2. 查看JVM堆中对象详细占用情况 jmap -histo [pid] 3. 导出整个JVM 中内存信息 ...

最新文章

  1. ubuntu server 16.10 启用无线网卡
  2. 0.3秒定位解剖位置、定位精度提升超2.3%!
  3. 给JSP页面加过滤器
  4. visual c++ build tools的安装与使用
  5. LeetCode || Copy List with Random Pointer
  6. 小米12比我的小米10还便宜
  7. 短信宝 php使用,[php] 使用 短信宝 发送短信(thinkphp)
  8. 今年考了N3也不知道能不能过
  9. Linux系统磁盘分区、删除分区、格式化、挂载、卸载、开机自动挂载的方法总结...
  10. U1C3 介绍SketchEngine和Web语料库研究
  11. 软件工程考试归纳知识点
  12. 如何选择合适的工业相机
  13. coding AD:最短路径Floyd算法过程矩阵的计算:十字交叉法
  14. 机器学习之GD、SGD
  15. 2022第三届全国大学生网络安全精英赛练习题(1)
  16. 【深度学习】Numpy实现简单神经网络
  17. 多晴转云h_多晴转云htxt百度云
  18. Python爬取中国大学排名,并且保存到excel中
  19. cvc-complex-type.2.4.a: 发现了以元素 ‘base-extension‘ 开头的无效内容。应以 ‘{layoutlib}‘ 之一开头
  20. 说说 kooxoo 酷讯吧

热门文章

  1. springboot集成xxl-job
  2. 经典编程题目-古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子
  3. 数字芯片设计中的时钟分频电路,你了解多少?
  4. jenkins教程菜鸟_菜鸟 jenkins自动化测试构建实战
  5. 史上最全推广小程序实操方法
  6. 解决git报错[remote rejected] HEAD -> master (pre-receive hook declined) error: failed to push some...
  7. Kafka集群搭建过程(kafka2.5+eagle)
  8. UI设计初学者必备的工具以及学习路线(附思维导图)
  9. javafx 教程_示例介绍:JavaFX 8打印
  10. 【源码】二进制非洲秃鹫优化算法