
博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌
博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦
🍅uniapp微信小程序🍅面试题软考题免费使用,还可以使用微信支付,扫码加群。由于维护成本问题得不到解决,可能将停止线上维护。
🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟
Java项目案例《100套》
https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》https://blog.csdn.net/qq_57756904/category_12173599.html
有需求代码永远写不完,而方法才是破解之道,抖音有实战视频课程,某马某千等培训都是2万左右,甚至广东有本科院校单单一年就得3万4年就12万学费,而且还没有包括吃饭的钱。所以很划算了。另外博客左侧有源码阅读专栏,对于求职有很大帮助,当然对于工作也是有指导意义等。在大城市求职,你面试来回一趟多多少少都在12块左右,而且一般不会一次性就通过,还得面试几家。而如果你对源码以及微服务等有深度认识,这无疑给你的面试添砖加瓦更上一层楼。
最后再送一句:最好是学会了,而不是学废了!!
2
Arthas 是阿里开源的 Java 诊断工具,能够帮助开发者快速定位和解决 Java 应用的性能问题、内存泄漏、CPU 飙升等问题。以下是使用 Arthas 排查常见问题的详细步骤。
1. 安装与启动 Arthas
安装
-
下载 Arthas:
curl -O https://arthas.aliyun.com/arthas-boot.jar
启动
-
启动 Arthas:
java -jar arthas-boot.jar
-
选择需要诊断的 Java 进程(输入进程编号)。
2. 常用命令
dashboard
-
查看实时系统状态,包括 CPU、内存、线程等信息。
dashboard
-
CPU:查看占用 CPU 高的线程。
-
Memory:查看堆内存使用情况。
-
Threads:查看活跃线程。
-
thread
-
查看线程信息,定位高 CPU 线程。
thread
-
查看所有线程:
thread
-
查看 CPU 占用最高的线程:
thread -n 3
-
查看某个线程的堆栈:
thread <线程ID>
-
查找阻塞的线程:
thread -b
-
jvm
-
查看 JVM 信息,包括内存、GC、类加载等。
jvm
heapdump
-
导出堆内存快照,用于分析内存泄漏或 OOM。
heapdump /path/to/heapdump.hprof
- 使用 MAT 或 JVisualVM 分析
heapdump.hprof
文件。
- 使用 MAT 或 JVisualVM 分析
sc 和 sm
-
sc:查看已加载的类信息。
sc com.example.MyClass
-
sm:查看类的方法信息。
sm com.example.MyClass
watch
-
监控方法的入参、返回值、异常等信息。
watch com.example.MyClass myMethod "{params, returnObj, throwExp}" -n 5
-
params
:方法参数。 -
returnObj
:返回值。 -
throwExp
:异常信息。 -
-n 5
:监控 5 次调用。
-
trace
-
追踪方法调用链路,分析性能瓶颈。
trace com.example.MyClass myMethod
monitor
-
监控方法的调用统计(调用次数、成功率、平均耗时等)。
monitor -c 5 com.example.MyClass myMethod
-c 5
:每 5 秒统计一次。
ognl
-
执行 OGNL 表达式,查看或修改运行时的变量
ognl '@com.example.MyClass@myStaticField'
3. 排查常见问题
CPU 飙升
-
使用
dashboard
查看 CPU 占用高的线程。 -
使用
thread -n 3
查看 CPU 占用最高的 3 个线程。 -
使用
thread <线程ID>
查看线程堆栈,定位问题代码。 -
使用
trace
或watch
进一步分析问题方法。
内存泄漏
-
使用
dashboard
查看内存使用情况。 -
使用
heapdump
导出堆内存快照。 -
使用 MAT 或 JVisualVM 分析
heapdump.hprof
,查找内存泄漏的根源。 -
使用
sc
和sm
查看相关类的加载和方法调用情况。
方法性能问题
-
使用
trace
追踪方法调用链路,分析耗时操作。 -
使用
monitor
监控方法的调用统计,查看平均耗时和调用次数。 -
使用
watch
监控方法的入参和返回值,定位问题。
死锁
-
使用
thread -b
查找死锁线程。 -
使用
thread <线程ID>
查看线程堆栈,分析锁竞争情况。
4. 示例场景
场景 1:CPU 飙升
-
启动 Arthas:
java -jar arthas-boot.jar
-
使用
dashboard
查看 CPU 占用高的线程。 -
使用
thread -n 3
找到占用 CPU 最高的线程。 -
使用
thread <线程ID>
查看堆栈,定位问题代码。
场景 2:内存泄漏
-
启动 Arthas:
java -jar arthas-boot.jar
-
使用
heapdump
导出堆内存快照:heapdump /tmp/heapdump.hprof
-
使用 MAT 分析
heapdump.hprof
,找到内存泄漏的对象。
场景 3:方法性能问题
-
启动 Arthas:
java -jar arthas-boot.jar
-
使用
trace
追踪方法调用链路:trace com.example.MyClass myMethod
-
使用
monitor
监控方法调用统计:monitor -c 5 com.example.MyClass myMethod
5. 总结
Arthas 是一款功能强大的 Java 诊断工具,能够帮助开发者快速定位和解决以下问题:
-
CPU 飙升:
dashboard
->thread
->trace
。 -
内存泄漏:
heapdump
-> MAT 分析。 -
方法性能问题:
trace
->monitor
->watch
。
通过熟练掌握 Arthas 的使用,可以显著提升排查问题的效率。
3