几种Java性能工具的事儿

2019-03-27 01:20|来源: 网路

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

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 ServerSpring 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://my.oschina.net/xianggao/blog/85642

相关问答

更多
  • FileInputSream类 FileInputStream(String name) FileInputStream(File file) 第一个构造方法是用给定的文件名name创建一个FileInputStream对象 第二个方法使用File对象创建FileInputStream对象 使用文件输入流读取文件 例如 FileInputStream istream=new FileInputStream(“myfile.dat”); 或 File f=new File(“myfile.dat”); Fil ...
  • java常见的排序分为: 1 插入类排序 主要就是对于一个已经有序的序列中,插入一个新的记录。它包括:直接插入排序,折半插入排序和希尔排序 2 交换类排序 这类排序的核心就是每次比较都要“交换”,在每一趟排序都会两两发生一系列的“交换”排序,但是每一趟排序都会让一个记录排序到它的最终位置上。它包括:起泡排序,快速排序 3 选择类排序 每一趟排序都从一系列数据中选择一个最大或最小的记录,将它放置到第一个或最后一个为位置交换,只有在选择后才交换,比起交换类排序,减少了交换记录的时间。属于它的排序:简单选择排序, ...
  • 除了楼上说的布局器还有SpringLayout BoxLayout 具体 用法 就看API就可以了.. 网上都能下.. 学java多看那个 基础类用法都在上面
  • 工厂模式负责将大量有共同接口的类实例化。工厂模式可以决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。 工厂模式的几种形态: l 简单工厂模式。又称静态工厂模式。 l 工厂方法模式。Factory Method,又称多态工厂或虚拟构造子模式(Virtual Constructor)。 l 抽象工厂模式。Abstract Factory,又称工具箱(Kit或ToolKit)模式。 工厂模式的逐步递演反映了抽象的步步加深、解决问题 参考资料: http://dev.csdn.net/develop/art ...
  • Random r=new Random();//创建一个新的随机数生成器。 for (int i=0;i
  • 对于Java社区来说,9月和10月间最重要的事件是一年一度的JavaOne大会的召开。JavaOne 2011的 主题是“推动Java向前发展(Moving Java Forward)”。从这个主题可以看出,Oracle正试图以领导者的身份带领Java社区来共同推动Java的发展。Java SE 7的发布,是这个过程中的一个重要里程碑。相对于上一次JavaOne会议来说,JavaOne 2011在社区中的评价比较不错,被认为是一次成功的会议。Oracle也更加重视社区在推动Java发展中的作用。遗憾的是,由 ...
  • 可以安装腾讯手机管家备份文件的,云端保存,安全保障,换机无忧。 新增文件共享功能,便捷共享照片、视频、文档。 1,备份可以借助腾讯手机管家的文件备份进行备份,重要文件可以随时上传进行备份; 2,备份之后登陆管家的账号可以进行手机数据的恢复,防止文件的丢失。
  • Java编程中junit是比较常用的,loadrunner是比较软件测试的标准工具,针对软件的运行性能等测试。
  • Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器,网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。 JMeter主要特性: 能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。 完全的可移植性和100% 纯java。 完全 Swing 和轻量 ...
  • 这没有工具,但是你可以尝试jVisualVM。 http://download.oracle.com/javase/6/docs/technotes/tools/share/jvisualvm.html 它通常伴随着你的jdk。 @ C:\Program Files\Java\jdk1.6.0_21\bin There's no tool for that, but you can try out jVisualVM, however. http://download.oracle.com/javase/6 ...