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

在给客户进行应用程序维护的过程当中,我注意到一些关于高负载条件下的性能问题。理论上,增长对应用程序的负载会使性能有所降低,可是我认为性能降低的比率远远高于负载的增长,同时我也发现,性能能够经过改变应用程序的逻辑来提高。为了更详细地了解这一点,咱们须要作一些性能分析,这时,咱们天然就要用到一些性能分析工具。Java有许多的性能分析工具,能够帮助咱们弄清楚这个问题,可是咱们应该使用哪一款工具呢?服务器

为了作出正确的选择,我列出性能分析应知足一些最低要求:工具

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

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

参考工具:spa

1.VisualVM插件

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

2.JProfiler进程

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

3.YourKit资源

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

4.JProbe

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

5.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插件。但愿本文能帮助你作出正确的选择。

相关文章
相关标签/搜索