Java几款性能分析工具的对比

开发 后端
在给客户的应用程序维护的过程中,我注意到在高负载下的一些性能问题。理论上,增加对应用程序的负载会使性能等比率的下降。然而,我认为性能下降的比率远远高于负载的增加。我也发现,性能可以通过改变应用程序的逻辑来提升,甚至达到极限。为了更详细的了解这一点,我们需要做一些性能分析,自然也要用到一些分析工具。

在给客户的应用程序维护的过程中,我注意到在高负载下的一些性能问题。理论上,增加对应用程序的负载会使性能等比率的下降。然而,我认为性能下降的比率远远高于负载的增加。我也发现,性能可以通过改变应用程序的逻辑来提升,甚至达到极限。为了更详细的了解这一点,我们需要做一些性能分析,自然也要用到一些分析工具。

Java有许多的性能分析工具,可以帮助我们弄清楚这个问题,但是我们应该使用哪一款工具呢?

为了做出正确的选择,我列出性能分析应满足一些***要求:

  • 1.必须包括对应用程序的类、方法及时间的监测
  • 2.必须包括对内存的监测
  • 3.必须具有易用性

我配置了一个使用RESTful接口的Spring应用程序,使用MongoDB作为数据存储,还使用Solr搜索,并在Tomcat服务器上部署。

参考工具:

VisualVM

VisualVM是一个资源分析工具,一直从JDK 6更新到7。它默认内存和CPU的监视。它可以告诉你哪个类和方法消耗资源,但它不会显示代码流程。

JProfiler

JProfiler很容易安装,并且通过向导,你可以选择应用服务器用来运行应用程序。我不得不选择使用JPofiler应用服务器的主目录,以及向导生成的一个单独的启动脚本。然后运行服务器。在监听会话的过程中,它会提供了几个选项。它可以记录内存的使用和CPU的使用率。在查看CPU的使用率同时,可以看到执行路径。这让我看到应用程序大部分时间都花在请求上。我们可以将IntelliJ插件安装到IDE上,那么运行JProfiler会更加便利。比如,可以直接帮我启动Tomcat。

YourKit

YourKit是我在另一个项目中偶然发现的一款性能分析工具。它的安装很简单。安装时有一个选项,可以安装一个插件到我的IDE。安装后,运行应用程序,使用该插件,它会自动连接到YourKit。它有一个漂亮的用户界面可以查看到内存和CPU的监测,同时也可以看到请求的执行路径。

JProbe

我刚开始创建JProbe时遇到点困难。安装并不是直接完成,我需要对它进行配置。它采用了类似JProfiler一样的设置。它会在你的Tomcat目录中生成启动脚本。可以通过脚本启动服务器并监听会话。它的界面包含有按钮和表格,其中可以看到内存的使用,但无法在进程中找到执行路径。

Spring Insight

听到TC Server有Spring Insight监控界面,于是我兴奋地尝试了一下。安装完成后,并设置成TC Server的开发者版,然后部署应用程序在TC Server上。我查看Insight界面,它可以很好的监视类和方法,并能看到完成这个方法用了多少时间。我还能看到输入参数值,以及返回值。由于我的应用程序是基于Spring的,Spring Insight能够提供非常有用的数据。TC Server插件在IDE上的配置与Tomcat的配置类似。SpringSource工具套件就自带Spring Insight。

结  论

看到这五款性能分析工具,我可以肯定地说,它们都非常不错。如果你有基于Spring的应用程序,那么选择Spring Insight显然是***的。它一直是免费的,但你需要部署你的应用在TC Server上。

如果你想监听本地和远程的进程,我会选择JProfiler或YourKit。这两个也可以帮助Spring Insight来监测、找到性能瓶颈。

JProfiler和YourKit已经能满足我的上述要求。JProfiler、YourKit和Spring Insight都可以跟踪应用程序的类和方法的流向。JProfiler和YourKit可以显示内存使用情况。虽然Spring Insight不可以显示内存使用情况,但它可以很好的显示吞吐量的趋势。这三款性能分析工具功能很清楚,不混乱,而且容易使用。***,他们都有自己的 IDE插件。希望本文能帮助你做出正确的选择。

英文:http://blog.orange11.nl/2012/03/13/java-profiler-comparison/

原文链接:http://my.oschina.net/liux/blog/51800

【编辑推荐】

  1. 栈的Java实现和栈的应用举例
  2. 实战是硬道理:记Java技术面试
  3. Java设计模式:责任链
  4. JavaScript是一门令人愉悦的语言
  5. Java中的Enum的使用与分析
责任编辑:林师授 来源: 开源中国社区
相关推荐

2022-12-05 17:01:20

MySQL数据库Oracle

2023-12-06 12:51:00

容器编排工具

2011-03-18 13:30:18

Android办公

2020-11-26 15:17:24

SQL数据库工具

2024-07-30 10:45:05

容器化编排工具

2009-12-02 18:38:21

PHP类库

2010-06-28 13:27:51

常用UML建模工具

2009-02-01 11:57:00

服务器性能东芝服务器服务器

2022-06-09 10:19:10

分布式数据库

2020-11-27 11:19:55

开发API工具

2024-01-07 17:11:53

网络IDC机房

2011-05-11 14:32:01

2022-09-28 14:33:49

终端工具Linux

2009-12-18 11:14:26

Ruby On Rai

2021-04-11 09:51:25

Redis可视化工具

2024-07-22 08:16:15

2020-09-14 11:27:32

工具代码开发

2021-06-09 09:52:29

开源Pyroscope代码

2020-08-14 07:54:45

前端开发工具

2010-07-14 13:57:30

Perl开发工具
点赞
收藏

51CTO技术栈公众号