本文目录一览:
java内存诊断软件?
对于每一个 Java 进程来说,都有自己的内存池和使用空间,而这也就意味着会出现内存使用错误等问题。这时候我们就需要对 Java 内存进行诊断分析。今天就一起来了解一下,在进行内存诊断上都有哪些软件可以使用。
Java堆:分析诊断数据
堆转储分析
堆转储可以使用如下工具进行分析:
- Eclipse MAT (Memory Analyzer Tool)
Eclipse MAT 是一个社区开发的分析堆转储的工具,它提供了一些很棒的特性,包括:- 可疑的泄漏点:能探测堆转储中可疑的泄露点,报告持续占有大量内存的对象;
- 直方图:列出每个类的对象数量、浅大小(shallow)以及这些对象所持有的堆。直方图中的对象可以很容易地使用正则表达式进行排序和过滤;
- 不可达的对象:允许在工作集对象中包含或排除不可达/死对象;
- 重复的类:展现由多个类加载器所加载的重复的类;
- 到 GC 根的路径:展示到 GC 根(JVM 本身保持存活的对象)的引用链;
- OQL:使用对象查询语言(Object Query Language)来探查堆转储中的对象。
- Java VisualVM
一站式工具,可以监控、分析和排查 Java 应用。它能够为正在监控的应用创建堆转储,也可以加载和解析它们。 - jhat
提供堆转储分析功能,能够在任意浏览器中展现堆转储中的对象,默认情况下 Web 服务器会在 7000 端口启动。 - Java 任务控制(Java Mission Control)的 JOverflow 插件
实验性插件,能够让 Java 任务控制执行简单的堆转储分析并报告哪里可能存在内存浪费。 - Yourkit
商业 Java Profiler,具备堆转储分析器,支持:- 可达性的范围:显示对象的强可达、弱/软可达或不可达状态;
- 内存探查:内置查询,查找反模式并提供常见内存问题的解决方案。
更效率、更优雅 | 阿里巴巴开发者工具不完全盘点
从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展。阿里巴巴将自身在各类业务场景下的技术积淀,通过开源、云上实现或工具等形式对外开放,本文将精选一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率、更优雅地写代码。
Arthas
- 简介:阿里巴巴 2018 年 9 月开源的一款 Java 线上诊断工具。
- 使用场景:支持 JDK 6+,支持 Linux/Mac/Windows,采用命令行交互模式,提供丰富的 Tab 自动补全功能。
- 获取方式:开源地址
Cloud Toolkit
- 简介:IDE 插件,帮助开发者更高效地开发、测试、诊断并部署应用。
- 使用场景:一键部署本地应用到任意机器,内置 Arthas 诊断、高效执行终端命令和 SQL。
- 获取方式:工具地址
ChaosBlade
- 简介:遵循混沌工程实验原理,提供丰富故障场景实现,帮助分布式系统提升容错性和可恢复性。
- 使用场景:注入延迟、异常、返回特定值等故障。
- 获取方式:开源地址
Java 代码规约插件
- 简介:检测 Java 代码中存在的不规范位置,并给予提示。
- 使用教程:
- IDEA 插件使用文档
- Eclipse 插件使用文档
- 获取方式:开源地址
ARMS
- 简介:APM 类监控工具,提供前端、应用、自定义监控 3 类监控选项。
- 使用场景:快速构建实时的应用性能和业务监控能力。
- 获取方式:工具地址
Docsite
- 简介:静态站点解决方案,支持 React、静态渲染、中英文国际化、SEO、Markdown 文档等。
- 获取方式:项目地址
Freeline
- 简介:利用缓存文件,快速编译并部署代码改动。
- 使用教程:安装 Android Studio 插件即可。
- 获取方式:项目地址
PTS
- 简介:模拟大量用户访问业务的场景,支持 JMeter 脚本转换。
- 获取方式:工具地址
KT
- 简介:简化 Kubernetes 下的联调测试复杂度。
- 获取方式:工具地址
AHAS
- 简介:为 K8s 提供架构可视化、故障注入评测和流控降级等功能。
- 获取方式:工具地址
Arthas,7000 字入门篇
Arthas 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。当你遇到以下类似问题而束手无策时,Arthas 可以帮助你解决:
- 应用 CPU 使用率飙升
- 方法执行慢
- 线程阻塞
- 类加载异常
- JVM 参数配置问题
安装与启动
推荐使用 arthas-boot
,下载 arthas-boot.jar
,然后用 java -jar
的方式启动:
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
注意:在运行前,先启动一个 Java 进程,否则会出现找不到 Java 进程的错误。
常用命令
- dashboard:查看当前进程信息,按 Ctrl+C 中断。
- thread:查看线程堆栈信息。
thread -n 3
:显示最忙的前 3 个线程。thread -b
:找出当前阻塞其他线程的线程。
- jad:反编译类。
jad java.lang.String
:反编译 String 类。
- watch:观察方法调用。
watch demo.MathGame primeFactors returnObj
:查看primeFactors
方法的返回值。
- redefine:重新定义类。
- getstatic:查看类的静态属性。
- sc:搜索已加载的类。
- sm:搜索类的方法。
- ognl:执行 OGNL 表达式。
- mc:内存编译
.java
文件生成.class
。 - version:输出当前 Arthas 版本号。
- quit:退出当前 Arthas 客户端。
- stop:关闭 Arthas 服务端。
Web Console
Arthas 支持 Web Console,用户在 attach 成功之后,可以直接访问:
http://<ip>:8000
默认情况下,Arthas 只监听
127.0.0.1
,如果想从远程连接,可以使用--target-ip
参数指定监听的 IP。
快捷键
- Tab:自动补全命令。
- Ctrl+C:中断当前命令。
- Q 或 Ctrl+C:退出当前命令。
- 上下键:浏览历史命令。
官方文档
作者:中间件小哥