34 | 加餐4:分析定位Java问题,一定要用好这些工具(一)
朱晔
该思维导图由 AI 生成,仅供参考
你好,我是朱晔。今天,我要和你分享的内容是分析定位 Java 问题常用的一些工具。
到这里,我们的课程更新 17 讲了,已经更新过半了。在学习过程中,你会发现我在介绍各种坑的时候,并不是直接给出问题的结论,而是通过工具来亲眼看到问题。
为什么这么做呢?因为我始终认为,遇到问题尽量不要去猜,一定要眼见为实。只有通过日志、监控或工具真正看到问题,然后再回到代码中进行比对确认,我们才能认为是找到了根本原因。
你可能一开始会比较畏惧使用复杂的工具去排查问题,又或者是打开了工具感觉无从下手,但是随着实践越来越多,对 Java 程序和各种框架的运作越来越熟悉,你会发现使用这些工具越来越顺手。
其实呢,工具只是我们定位问题的手段,要用好工具主要还是得对程序本身的运作有大概的认识,这需要长期的积累。
因此,我会通过两篇加餐,和你分享 4 个案例,分别展示使用 JDK 自带的工具来排查 JVM 参数配置问题、使用 Wireshark 来分析网络问题、通过 MAT 来分析内存问题,以及使用 Arthas 来分析 CPU 使用高的问题。这些案例也只是冰山一角,你可以自己再通过些例子进一步学习和探索。
在今天这篇加餐中,我们就先学习下如何使用 JDK 自带工具、Wireshark 来分析和定位 Java 程序的问题吧。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了使用Java工具来分析和定位Java程序问题的方法,强调了通过工具来观察问题的重要性。作者分享了使用JDK自带的工具来查看JVM情况的方法,包括jps、jinfo、jvisualvm、jconsole和jstat等工具。通过这些工具,读者可以观察JVM的参数设置、GC活动、堆内存情况、活动线程数等信息,从而定位和分析Java程序的问题。文章还介绍了使用Wireshark分析SQL批量插入慢的问题的方法,通过Wireshark分析网络包可以让程序与MySQL交互的整个流程变得透明。通过实例和工具的介绍,为读者提供了一些实用的技术指导和工具使用方法,帮助读者快速了解Java程序的运行情况,提高问题定位和解决的效率。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Java 业务开发常见错误 100 例》,新⼈⾸单¥59
《Java 业务开发常见错误 100 例》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(23)
- 最新
- 精选
- Darren1、jmap -dump是会dump所有的对象,不关心是否可达;jmap -dump:live只会dump存活的对象,即可以从GcRoot可达的对象。测试是在循环中,一直创建对象,然后休眠1s,dump2次,发现创建对象的个数不同。
作者回复: 👍🏻
2020-04-2222 - 程序员小跃老师,你让我这个Java重新整理了方向,这才是 Java 更高层次需要掌握的东西,不然平时只知道写代码,遇到问题只会重启的话,对自己能力的提升实在是太慢了。 Java 的世界,还是离不开 JVM的判断。Wireshark 原来还可以分析 MySQL 相关,以前一直觉得只能网络抓包呢,哈哈
作者回复: 觉得专栏好可以多分享推荐给其他人
2020-10-3126 - 小杰老师现在特别火的阿里定位问题的工具Arthas 是不是都是拿jvm工具实现的呢,感觉很强大
作者回复: 不是,是通过javaagent实现的(动态加载),后面一篇加餐也会介绍Arthas的使用。
2020-04-216 - 👽墙裂建议收藏,总有一天用得着。
作者回复: :)
2020-04-215 - 梦倚栏杆-XX:ThreadStackSize=256k 实际效果是256M -Xss:256k 实际效果是256k 官方文档提示这两个参数效果等同,都是byte为单位 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html#BABHDABI
作者回复: 是,我估计这是老版本JDK的一个Bug,文中为了演示工具使用我特意选择了这个案例来演示,平时我自己只用Xss
2020-04-2224 - 梦倚栏杆老师,你的第一个演示我这儿直接就被杀掉了 java -jar target/java-common-mistakes-0.0.1-SNAPSHOT.jar -Xms1g -Xmx1g jps 正常 jinfo $pid 提示:Error attaching to process : Can't attach symbolicator to the process 发现进程已经被kill掉
作者回复: 网上说是jdk的bug,仅仅发生于macos怀疑和权限有关系。遇到问题最好先自己搜索一下,尝试解决一下。
2020-04-2243 - 若镜作为同样的一个15years+的programmer 不得不说 老师分享的足够干货 多谢。
作者回复: 感谢
2020-10-232 - Geek_3b1096重新认识用Wireshark分析问题,谢谢老师
作者回复: 不客气
2020-05-012 - vivijmap -dump是输出堆中所有对象 jmap -dump:live是输出堆中所有活着的对象 而且jmap -dump:live会触发gc 线上使用要注意这个
作者回复: 没错
2020-04-2122 - 刘大明这篇定位java问题的文章,真的是打开了新天地.以前重来没有关注过jvm相关的信息,这次是开了眼界.
作者回复: 😀
2020-04-212
收起评论