Arthas
官网:简介 | arthas
Arthas 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
Arthas生成火焰图命令:
profiler start
// 等10s
profiler stop
结束后会产出一个火焰图。
纵坐标:调用栈,即下层函数是上层函数的父函数。(有些火焰图是倒置的,正好相反)
横坐标:函数占用cpu百分比。
横坐标越大,说明该函数越耗时,就越可能是性能瓶颈。
Grace
Grace
Grace是一款开源用于解决应用程序中出现的常见问题的软件,其开源版本为Jifa,前身为Zprofiler。支持内存分析、线程分析、GC日志分析等功能。
GitHub - eclipse/jifa: 🔬 An open-source project that makes troubleshooting easy.
内存分析
从不同维度查看堆内存
在泄漏报表里可以看出内存泄漏对象。
Shallow Size:Shallow Size是指实例自身占用的内存, 可以理解为保存该'数据结构'需要多少内存, 注意不包括它引用的其他实例。
Retained Size:实例A的Retained Size是指, 当实例A被回收时, 可以同时被回收的实例的Shallow Size之和。
根据对象地址在"Inspector"搜索栏里搜索,得到这个对象里的所有字段以及对应的大小,一般Retained Size最大的就是泄漏的字段。
线程分析
GC日志分析