Java分析器工具可以明显的提高问题定位、分析、处理的效率,下面会给大家简单的介绍几款日常工作过程中使用到的Java分析器。
0.什么是 Java 分析器?
Java 分析器是一种用于测量和检查 Java 应用程序性能的工具。它收集程序执行数据,包括每个函数所用的时间、内存使用情况和函数调用频率。
Java 分析有助于查明软件应用程序中的性能瓶颈。分析分析器收集的数据可让开发人员确定导致最明显延迟或资源消耗的代码部分。这些数据可以增强代码、提高性能并减少资源消耗。
因此,Java 分析器是一种在 JVM 级别检查 Java 字节码构造和操作的工具。这些编程结构和操作包括创建对象、重复进程(包括递归调用函数)、执行方法、运行线程和执行垃圾收集。
1.Java 分析器的分类
- 采样分析器:这些分析器定期对正在运行的程序进行快照,并分析调用堆栈以识别热点。
- 仪表分析器:这些分析器修改程序的代码以收集更详细的性能数据。
2.Java 分析器的使用场景
Java 分析工具基本上有三种使用方式:
-
性能优化:开发人员可以利用 Java 分析器来精确定位导致性能问题的代码部分,例如函数调用缓慢或内存使用率过高。可以利用这些数据来增强代码以获得更好的性能。
-
内存管理:Java 分析器可以帮助检测内存泄漏,即程序无法释放未使用的内存。这些泄漏可能导致内存不足,从而导致程序崩溃。通过精确定位内存泄漏,开发人员可以纠正代码以释放不再需要的内存。
-
测试:Java 分析器可以评估各种场景下的程序性能,例如不同的输入大小或用户数量。这有助于在程序启动之前识别可能的性能问题。
3.Java 分析器如何工作?
JVM 允许 Java 开发人员将代理附加到正在运行的 JVM(Java 虚拟机)。当开发人员将代理附加到 JVM 时,JVM 将在加载类之前向代理提供一个类。然后,代理将转换该类。代理可以更改任何类的代码。
Java 分析器基本上是代理。它们在方法的开头和结尾添加检测代码,以跟踪它们花费的时间。它们还向每个类的构造函数和 finalize 方法添加代码,以跟踪使用了多少内存。
在 Java 中,可以通过一系列工具实现代码分析,包括内置工具和第三方工具。
一些广受欢迎的工具包括:
- JVM 工具
- Digma
- VisualVM
- YourKit
- JProfiler
- NetBeans Profiler
- IntelliJ Profiler
- Async Profiler
- Arthas
OpenTelemetry 和 Java Flight Recorder (JFR) 涵盖了大多数基础。如果您想要自动检测,请使用 OpenTelemetry Java 代理;如果您想要进行自己的检测,则只需使用 API。
4.Java分析工具
4.1. JVM 工具
这些 Java 分析工具与标准 JDK 捆绑在一起,无需单独安装或设置。大约有五个:jstat、jmap、jcmp、jhat 和 hprof。
4.1.1. jstat
此内置命令行工具随标准 JDK 一起提供,无需