博主介绍:✌全网粉丝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
dashboard
是 Arthas 中一个非常强大的命令,用于实时监控 Java 应用的运行状态。它可以显示 JVM 的 CPU、内存、线程、GC 等信息,帮助开发者快速定位性能问题。
1. 启动 Arthas
在终端中启动 Arthas:
java -jar arthas-boot.jar
选择需要诊断的 Java 进程(输入进程编号)。
2. 使用 dashboard
命令
在 Arthas 命令行中输入:
dashboard
此时会进入一个实时监控界面,显示当前 Java 应用的运行状态。
3. dashboard
界面详解
dashboard
界面通常分为以下几个部分:
1. ID
-
当前 Java 进程的 ID。
2. NAME
-
当前 Java 进程的名称。
3. GROUP
-
当前 Java 进程的组。
4. PRIORITY
-
当前 Java 进程的优先级。
5. STATE
-
当前 Java 进程的状态。
6. CPU
-
Total:JVM 进程占用的 CPU 百分比。
-
User:用户态 CPU 占用百分比。
-
Sys:内核态 CPU 占用百分比。
7. MEMORY
-
Used:已使用的内存大小。
-
Max:最大可用内存大小。
-
Usage:内存使用率。
8. THREAD
-
Total:当前 JVM 中的线程总数。
-
RUNNABLE:处于可运行状态的线程数。
-
BLOCKED:处于阻塞状态的线程数。
-
WAITING:处于等待状态的线程数。
-
TIMED_WAITING:处于定时等待状态的线程数。
9. GC
-
Young GC:年轻代 GC 的次数和时间。
-
Full GC:老年代 GC 的次数和时间。
10. Runtime
-
Uptime:JVM 运行时间。
-
Start Time:JVM 启动时间。
11. Class Loading
-
Loaded:已加载的类数量。
-
Unloaded:已卸载的类数量。
12. Thread Details
-
显示当前占用 CPU 最高的线程信息,包括:
-
ID:线程 ID。
-
NAME:线程名称。
-
STATE:线程状态。
-
CPU%:线程占用的 CPU 百分比。
-
TIME:线程运行时间。
-
4. 常用操作
刷新频率
-
默认情况下,
dashboard
每秒刷新一次。 -
可以通过
-i
参数设置刷新间隔(单位:秒):dashboard -i 2
每 2 秒刷新一次。
退出 dashboard
-
按下
q
键退出dashboard
界面,返回 Arthas 命令行。
5. 使用场景
1. 监控 CPU 使用率
-
查看
CPU
部分,确认 JVM 进程的 CPU 使用率是否过高。 -
查看
Thread Details
,找到占用 CPU 最高的线程。
2. 监控内存使用情况
-
查看
MEMORY
部分,确认内存使用率是否过高。 -
如果内存使用率持续增长,可能存在内存泄漏。
3. 监控线程状态
-
查看
THREAD
部分,确认是否有大量线程处于BLOCKED
或WAITING
状态。 -
如果有,可能存在锁竞争或资源等待问题。
4. 监控 GC 情况
-
查看
GC
部分,确认 Young GC 和 Full GC 的次数和时间。 -
如果 Full GC 频繁发生,可能存在内存不足或内存泄漏问题。
6. 示例
场景 1:CPU 飙升
-
启动 Arthas:
java -jar arthas-boot.jar
-
输入
dashboard
,查看CPU
和Thread Details
。 -
找到占用 CPU 最高的线程,记录其线程 ID。
-
使用
thread <线程ID>
查看线程堆栈,定位问题代码。
具体模拟场景
1、模拟线程一直消耗CPU资源,注意一定要给线程加上一个名字才能更好排查系统问题
package ceam.test.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/poi/thread")
public class ThreadController {@GetMappingpublic void thread() {Thread thread = new Thread(() -> {while (true) {System.out.println("=======模拟线程一直在消耗CPU资源,Arthas中可以看到其CPU很高======");}}, "threadController-test");thread.start();}
}
2、启动Arthas跟进该接口对应的进程
3、dashboard查看可见ID为54的线程CPU最高,即我们自己创建的线程
threadController-test
4、thread -n 3
可见threadController-test这个线程消耗CPU资源是最高的
5、thread 线程ID,排查具体问题代码
可见是在执行run方法时消耗资源的,在ThreadController代码的第15行位置
场景 2:内存泄漏
-
启动 Arthas:
java -jar arthas-boot.jar
-
输入
dashboard
,查看MEMORY
部分。 -
如果内存使用率持续增长,使用
heapdump
导出堆内存快照,进一步分析。
7. 总结
dashboard
是 Arthas 中最常用的命令之一,能够实时监控 Java 应用的运行状态,帮助开发者快速定位以下问题:
-
CPU 飙升:查看
CPU
和Thread Details
。 -
内存泄漏:查看
MEMORY
和GC
。 -
线程问题:查看
THREAD
和Thread Details
。
通过 dashboard
,可以快速了解系统的整体运行状况,为后续的深入排查提供方向。
3