常用Java性能测试工具的分析与对比

虽然市场上的 Java Profiler 工具有不少,但是基本功能大多相似,本节首先对这些基本功能进行介绍。

遥测(Telemetry):遥测是一种用来查看应用程序运行行为的最简单的方法。通常会有多个视图(View)分别实时地显示 CPU 使用情况、内存使用情况、线程状态以及其他一些有用的信息,以便用户能很快地发现问题的关键所在。

  • CPU Telemetry 视图一般用于显示整个应用程序的 CPU 使用情况,有些工具还能显示应用程序中每个线程的 CPU 使用情况。

  • Memory Telemetry 视图一般用于显示堆内存和非堆内存的分配和使用情况。

  • Garbage Collection Telemetry 视图显示了 JVM 中垃圾收集器的详细信息。

  • Threads Telemetry 视图一般用于显示当前运行线程的个数、守护进程的个数等信息。

  • Classes Telemetry 视图一般用于显示已经载入和还没有载入的类的数量。

快照(snapshot):应用程序启动后,profiler 工具开始收集各种执行数据,其中一些数据直接显示在遥测视图中,而另外大部分数据被保存在内部,直到用户要求获取快照,基于这些保存的数据的统计信息才被 显示出来。快照包含了应用程序在一段时间内的执行信息,通常有两种类型的快照:CPU 快照和内存快照。

  • CPU 快照主要包含了应用程序中函数的调用关系及运行时间,这些信息通常可以在 CPU 快照视图中进行查看。

  • 内存快照则主要包含了内存的分配和使用情况、载入的所有类、存在的对象信息及对象间的引用关系。这些信息通常可以在内存快照视图中进行查看。

CPU分析:CPU Profiling 的主要目的是统计函数的调用情况及执行时间,或者更简单的情况就是统计应用程序的 CPU 使用情况。通常有两种方式来显示 CPU Profiling 结果:CPU 遥测和 CPU 快照。

内存分析:内存 Profiling 的主要目的是通过统计内存使用情况检测可能存在的内存泄露问题及确定优化内存使用的方向。通常有两种方式来显示内存 Profiling 结果:内存遥测和内存快照

线程分析:线程 Profiling 主要用于在多线程应用程序中确定内存的问题所在。

Profiling 的启动设置:类似于 eclipse 中 Run 和 Debug 的启动设置,进行 Profiling 之前也需要进行启动设置,包括:profiling 的模式 (CPU profiling 或内存 profiling),信息获取类型(遥测 , 抽样统计或者 BCI ) 等等。

Profiler Preference 设置:主要用于 Profiler 过滤器(选择需要关注的包、类)、取样间隔时间的设置等。

Java剖析工具介绍

接下来,我们一起来认识几款常用的Java性能分析工具。

JProfiler--唯一一款获过奖的Java剖析器,被誉为"最好的Java剖析/测试工具"

JProfiler是唯一一款获奖的Java剖析器。JProfiler直观的用户界面能够帮助你解决性能瓶颈,指明你的内存漏洞并解决线程问题。

JProfiler直觉式的GUI让你可以找到性能瓶颈、抓出内存漏失(memory leaks)、并解决执行绪的问题。它让你得以对heap walker作资源回收器的root analysis,可以轻易找出内存漏失;heap快照(snapshot)模式让未被参照(reference)的对象、稍微被参照的对象、或在终结(finalization)队列的对象都会被移除;整合精灵以便剖析浏览器的Java外挂功能。

YourKit Java Profiler--业界领先的 Java 剖析工具

CPU 和内存的剖析历来是很困难的,YourKit 创造出了革命性的剖析工具,应用在研发和生产阶段,为专业的 Java 开发者带来了无比的好处。

YourKit Java Profiler 使 CPU 和内存相关的性能的一系列问题更加容易,它具有自动检测漏洞、分析内存状态的强有力的工具、对象浏览器、作为 JUnit 测试过程一部分对内存进行全面测试等功能,并可与Eclipse、JBuilder、IntelliJ IDEA、NetBeans 和 JDeveloper IDEs 进行集成。

总的来讲,YourKit Java Profiler 是一个目前很受欢迎的 Java Profiler(Java调优器),可以用来分析和监控你的应用程序的性能,从而进行更好地调优。

>>>Java剖析工具对比详情


你可能感兴趣的:(Java剖析工具)