怎么使用arthas排查oom
时间: 2024-11-28 08:19:22 浏览: 32
Arthas是一款阿里巴巴开源的Java应用动态调试工具,它可以帮助开发者快速定位内存泄漏等问题。如果遇到OOM(Out Of Memory)异常,你可以通过Arthas来进行排查。以下是基本步骤:
1. **启动Arthas**: 首先需要在目标Java应用运行时,通过JVM参数 `-Djavaagent` 加入Arthas的jar包,并指定监听端口。
```bash
java -javaagent:/path/to/artahas-agent.jar=port=8009 ... YourAppClass
```
2. **连接应用**:打开一个新的终端窗口,输入 `jps` 查看应用进程ID,然后用 `arthas jstack pid` 获取堆栈跟踪。
3. **查找嫌疑对象**:分析堆栈跟踪信息,找寻那些占用大量内存的对象。通常,`@RetainedObjects`、`ObjectTree` 或者 `histogram` 等命令能帮助识别可疑对象。
4. **内存统计**:使用 `thread dump` 和 `heap dump` 可以查看线程状态和堆内存情况,确认哪些线程占用了过多内存。
5. **追踪引用**:通过 `referrers` 或 `trace` 命令可以追踪内存泄漏的原因,例如检查是否有大对象循环引用。
6. **清理垃圾**:如果有明确的对象泄露,尝试手动释放,或者使用 `clearReferences` 清除已知的无用引用。
7. **持续监控**:在发现并解决一次oom后,建议长期使用Arthas的`monitor`功能持续监控,以便尽早发现问题。
阅读全文