
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
生产环境必须用 Redisson,不要手写 Redis 锁原子加锁、唯一标识、Lua 解锁、看门狗续期、可重入高可用:普通业务用普通锁,核心业务用 Redlock 红锁代码可直接复制到生产环境使用,无坑、稳定可靠。
已产生的死锁:MySQL 自动回滚一个事务,无需手动处理查死锁原因:用根治死锁:固定访问顺序 + 加索引 + 短事务 + 代码重试兜底:业务捕获死锁异常自动重试,用户无感知。
jstat -gc确认频繁GCjmap -dump导出堆MAT分析谁占内存90% 是static集合、ThreadLocal、缓存无回收导致泄漏。
top找 Java 进程 PIDtop -H找耗 CPU 线程 TID转 16 进制定位代码行按栈特征判断是死循环/GC/锁/密集计算整个流程不重启、不影响业务、1~3 分钟定位根因。
CPU高:用threadtrace定位耗CPU线程与慢方法频繁GC:用dashboardgcheapdump定位内存问题Arthas 全程无侵入、不重启、线上直接用。
Java 线程生命周期有6种状态RUNNABLE是核心状态,包含等待CPU和正在运行BLOCKED只针对 synchronized 锁等待WAITING无限等待,限时等待线程终止后不可重启。
execute():轻量、无返回、异常直接抛 → 适合简单异步执行。submit():强大、有返回、可捕获异常 → 适合需要结果/管控的任务。简单任务用 execute,复杂任务用 submit + Future。
线程是 GC Root,线程里的引用全部泄漏线程池任务里持有大对象,且任务无限等待看趋势:老年代只涨不跌 = 泄漏抓快照:Full GC 后 jmap 抓 hprof用MAT:看 Leak Suspects查引用:静态集合、ThreadLocal、线程池、缓存看代码:谁长期持有对象不释放。
工具核心用途最常用命令jstat看 GC、内存使用率、性能监控jstack看线程、死锁、CPU 飙高jmap导出堆快照、看对象数量jhat分析堆快照(Web 界面)jstat:监控 GC 和内存使用,不暂停应用jstack:抓线程堆栈,查死锁、CPU 高jmap:导出堆快照,查对象泄漏jhat:简单分析堆快照(推荐用 MAT 替代)这四个工具是 Java 线上问题排查的基础必备技能,记住常用命令就
队列满/空时线程阻塞,条件满足时唤醒ReentrantLock + Condition + 环形数组手写核心是理解原理,生产环境直接用官方实现必须用while判断队列状态,防止虚假唤醒。








