Arthas常用方式

javascript 复制代码
# 查看内存概览信息CPU和内存占用率是否需要调整参数
dashboard
javascript 复制代码
# CPU飙高看占用最高的 3 个线程堆栈(比top + jstack 快)
thread -n 3

# 查看特定 ID 线程的详细堆栈和状态
thread <ID>

# 检查是否存在死锁线程
thread -b
javascript 复制代码
# 不重启服务前提临时修改日志级别,用于排除问题,因为生产环境通常是warn 级别的自己打印的日志一般是info,线上就看不到自己的日志
logger --name <你的包名> --level DEBUG
logger --name com.ldj.springboot.importbean.controller --level INFO
javascript 复制代码
# 监控方法的出入参数,深度3,只看5次自动停止
watch <类名> <方法名> '表达式' [可选项]

watch com.ldj.springboot.importbean.ISpringBootApplication test '{params, returnObj}' -x 3 -n 5
javascript 复制代码
# 查看调用链路中那个方法耗时久,哪个方法是性能瓶颈
trace <com.xxx.类名> <方法名>

watch com.ldj.springboot.importbean.ISpringBootApplication test

在线临时少量修复bug代码 (不推荐这样操作,一般是在紧急情况 临时修改开关 或者关键配置参数会这样做)

javascript 复制代码
# 获取 ClassLoader Hashid
sc -d com.ldj.springboot.importbean.controller.TestController

# 反编译java代码
jad --source-only com.ldj.springboot.importbean.controller.TestController > /tmp/TestController.java

# 修改bug代码
vi /tmp/TestController.java

# 重新编译修改后的代码,window系统默认将它输出到E盘
mc -c 18b4aac2 /tmp/TestController.java

# 热加载,把上面的输出路径复制下来
retransform /tmp/com/ldj/springboot/importbean/controller/TestController.class

# 如果是window系统,热加载改成下面这样
retransform "E:\javaWeb\spring-boot-study\com\ldj\springboot\importbean\controller\TestController.class"

window系统实操例子

相关推荐
行者-全栈开发16 小时前
美团后端开发面试题全集(2026最新版):HashMap、JVM、MySQL、Redis高频考点深度解析
jvm·hashmap·java面试题·后端开发·redis缓存·mysql索引·面经汇总
豆沙沙包?17 小时前
C++-程序的内存模型(P84-P88)
java·jvm·c++
未秃头的程序猿18 小时前
凌晨3点被叫醒:线上OOM,我用这套流程40分钟定位根因
java·jvm·后端
执笔画流年呀19 小时前
JVM虚拟机
jvm
lisin-lee-cooper20 小时前
JVM知识体系
java·jvm
zzz_23682 天前
TencentDB-Agent-Memory 深度解析:让多个 Agent 共享项目经验的记忆中枢
java·开发语言·jvm·人工智能·agent·memory·tencent db
阿宇的技术日志2 天前
堆溢出解决思路
jvm
番茄炒鸡蛋加糖2 天前
JVM基础1:内存区域、GC垃圾回收算法
大数据·jvm·算法
bbq粉刷匠2 天前
ArrayList 整体认识
java·jvm·数据结构
math_hongfan2 天前
鸿蒙存储碎片高级清理机制:数据库Vacuum/文件碎片整理/缓存过期清理/主动空间回收策略
jvm·数据库·学习·缓存·华为·harmonyos·鸿蒙