在给客户进行应用程序维护的过程中,我注意到一些关于高负载条件下的性能问题。理论上,增加对应用程序的负载会使性能有所下降,但是我认为性能下降的比率远远高于负载的增加,同时我也发现,性能可以通过改变应用程序的逻辑来提升。为了更详细地了解这一点,我们需要做一些性能分析,这时,我们自然就要用到一些性能分析工具。Java有许多的性能分析工具,可以帮助我们弄清楚这个问题,但是我们应该使用哪一款工具呢?
为了做出正确的选择,我列出性能分析应满足一些最低要求:
必须包括对应用程序的类、方法及时间的监测
必须包括对内存的监测
必须具有易用性
我配置了一个使用RESTful接口的Spring应用程序,使用MongoDB作为数据存储,还使用Solr搜索,并在Tomcat服务器上部署。
参考工具:
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插件。希望本文能帮助你做出正确的选择。
来自:chinaitlab
http://sd.csdn.net/a/20120530/2806167.html
分享到:
相关推荐
本文将详细介绍几款主流的Java性能分析工具,并进行对比分析,帮助开发者选择最适合自己的工具。 #### 1. VisualVM VisualVM是一款开源的工具,自JDK 6 Update 7起被默认包含在内。它能够提供CPU的使用情况、内存...
本文将深入探讨几种不同的XML解析方法,并通过实际的“Java解析XML性能对比分析Demo”来展示它们的性能差异。我们将讨论DOM、SAX、JDOM、DOM4J和JAXB这五种解析器,以及它们各自的特点和适用场景。 1. DOM(文档...
总的来说,GCLogViewer是一款强大的Java性能分析工具,尤其在处理GC日志方面表现出色。通过其图形化的界面和详尽的数据分析,开发者可以深入理解应用程序的内存行为,从而做出有针对性的优化决策。无论你是经验丰富...
MAT,全称Memory Analyzer Tool,是由Eclipse基金会开发的一款强大的Java内存分析工具。它主要用于诊断Java应用程序中的内存泄漏和理解对象内存占用情况,是Java性能优化的重要助手。在这个"MAT Eclipse Memory...
JavaMelody是一款强大的JAVA Web项目服务器性能监控工具,它能够实时、全面地监控应用程序的运行状态,帮助开发者和运维人员了解系统性能瓶颈,及时发现并解决问题。通过在Java Web应用中简单集成,JavaMelody就能...
Java性能分析工具是Java开发过程中不可或缺的利器,它们帮助开发者深入了解应用程序的运行状态,找出性能瓶颈,从而进行有效的优化。本文将围绕Java性能分析工具展开,介绍其工作原理、采样分析器和探查分析器的特点...
总的来说,Java性能优化是一个系统性的工程,涉及到代码优化、JVM调优以及使用像Optimizeit Profiler这样的专业工具。通过深入理解这些工具,开发者能够有效地提升应用的运行效率,降低资源消耗,为用户提供更优质的...
Java文件对比工具是一种用于比较两个或多个文件之间差异的实用程序,特别适用于编程环境中检查代码间的相似性或差异。在Java开发中,这样的工具能够帮助开发者有效地定位代码修改的地方,协同工作时解决合并冲突,...
TDA(Thread Dump Analyzer)是一款强大的Java线程分析工具,它能够帮助开发者深入理解应用在运行时的线程状态,包括线程的阻塞情况、等待资源、死锁等问题。下面将详细介绍TDA的使用方法、功能以及它如何帮助我们...
三、与其他工具对比 虽然HeapAnalyzer功能强大,但也有其他工具如MAT (Eclipse Memory Analyzer Tool) 和VisualVM等可供选择。MAT提供了更丰富的视图和分析功能,而VisualVM则集成了多种监控和分析工具,包括CPU、...
除此之外,JProfiler是一款商业的Java性能分析工具,它提供了详细的内存分配和垃圾收集统计,可以帮助开发者识别内存泄漏的模式。其独特的"内存快照"功能可以比较不同时间点的内存状态,从而找出新增的、未释放的...
MAT是Eclipse项目的一部分,它是一款免费且开源的工具,专门用于分析Java堆转储(Heap Dump)文件,帮助开发者识别内存泄漏、分析内存占用情况以及优化内存使用。MAT提供了丰富的功能和视图,使得复杂的内存问题变得...
Java性能监控工具JProfiler是Java开发中的重要辅助软件,它为开发者提供了深入的性能分析功能,帮助优化应用程序的运行效率。JProfiler 4.3.2版本是该工具的一个历史版本,虽然较新版本可能拥有更多特性,但4.3.2...
IBM提供了几个强大的分析工具,专注于线程、垃圾收集(GC)和内存管理,以帮助开发者更好地理解和解决问题。这些工具包括IBM Thread and Monitor Dump Analyzer for Java、HeapAnalyzer以及可能的GA441(可能是另一...
Java作为一种广泛使用的编程语言,拥有丰富的静态代码分析工具,其中Checkstyle、FindBugs、PMD和Jtest是最为知名的几种。本文将详细介绍这四种工具的特点及其应用场景。 #### 二、静态代码分析工具综述 ##### 1. ...
在本文件"关于Java软件的性能测试分析.pdf"中,我们可能会探讨以下几个关键知识点: 1. **性能测试目标**:性能测试的主要目标包括确定系统的负载承受能力、响应时间、并发用户数以及系统在峰值使用情况下的稳定性...
IBM内存分析工具(IBM Memory Analyzer,简称MAT)是一款强大的、免费的诊断工具,适用于所有Java虚拟机(JVM)。它能够提供详细的内存分配和引用路径信息,帮助开发者深入理解内存消耗情况,找出可能导致内存问题...
jProfiler7是一款强大的Java性能分析工具,尤其在内存分析方面表现出色。它专为开发者设计,帮助他们在Linux环境中深入理解并优化Java应用程序的内存使用情况。本篇文章将详细探讨jProfiler7在Java内存分析上的核心...
Java开发过程中,性能优化是至关重要的一步,而`jProfiler`正是这样一个强大的工具,专为Java开发者设计,用于深入分析应用程序的性能。标题中的“jprofiler java开发软件性能测试工具”表明,jProfiler是一个针对...
jProfiler是一款功能强大的Java性能分析工具,尤其体现在其最新版本jProfiler11上。这款工具专为Java EE和Java SE应用程序开发者设计,提供了全方位的性能监控与优化功能,帮助开发者在开发过程中及时发现并解决性能...