使用Java VisualVM分析您的应用程序

Java VisualVM是Sun JDK自带的探查器,适用于分析应用程序的CPU和内存使用、线程状态和Profiler。在Ubuntu等系统中可能需要手动安装。通过监控器标签,可以观察CPU和内存使用情况,而Profiler标签则能展示CPU分析结果,帮助定位消耗资源的方法。这个工具虽然简单,但功能强大,有助于优化应用性能。
摘要由CSDN通过智能技术生成
当您需要发现应用程序的哪个部分消耗更多的CPU或内存时,必须使用探查器执行此操作。

默认情况下,Sun JDK中附带的一个探查器是Java VisualVM。 这个事件探查器非常简单易用,功能强大。

在这篇文章中,我们将看到如何安装它并使用它来分析应用程序。
通常,无需安装它,因为它与JDK一起安装。 但是在几个Unix系统中,例如Ubuntu,情况并非如此。 如果要安装它,只需使用apt-get(或aptitude):

须藤apt-get install visualvm

要启动它,只需启动jvisualvm(Windows的jdk的bin目录中的jvisualvm.exe)。
这将打开以下窗口:

这里没有很多有趣的东西。 要分析应用程序,只需启动它,VisualVM就会检测到它已启动:

之后,您只需双击以查看有关正在运行的应用程序的信息。 您有四个选项卡可用于您的应用程序(“概述”,“监视器”,“线程”,“探查器”)。 我们将看到所有这四个标签。 首先,默认选项卡,概述:

此选项卡包含有关已启动的应用程序的主要信息。 您可以看到主类,命令行参数和JVM参数。 您还可以查看哪种类型的JVM正在运行您的程序以及JVM所在的位置。 您可以看到该程序中设置的所有属性。
一个更有趣的标签是“监视器”标签:

此选项卡跟踪您的应用程序的CPU和内存使用情况。 您在此视图中有4个图。 第一个从左到右,从上到下显示CPU使用率和Garbage Collector CPU使用率。 第二张图显示堆空间和PermGen空间的使用情况。 下一个图显示了应用程序中加载的类的总数,最后一个图显示了当前正在运行的线程数。 通过这些图,您可以查看应用程序占用的CPU过多还是应用程序占用的内存过多。

第三个选项卡提供有关Threads的一些详细信息:

在此视图中,您可以看到应用程序的不同线程如何改变状态以及它们如何演变。 您还可以查看每次进入每种状态的时间,并且可以了解有关所需线程的详细信息。
现在,我认为最有趣的标签是Profiler之一:

第一次打开此选项卡时,它根本不包含任何信息。 您必须先进行一种分析,然后才能查看信息。 我们将从CPU分析开始。 只需单击CPU按钮,仪器就会启动。 检测期间,该应用程序将被阻止。 检测完成后,您可以再次访问该应用程序,并且将在表中显示概要分析的结果。 当然,分析会对您的应用程序造成负担。 通常它是不可见的,但是对于某些应用程序,您可能会失去很多流动性。 这是我通过简单的应用程序获得的结果:

在我的示例中,我们可以看到waitForTimeout方法占用了CPU时间的81.6%。 我们还可以看到,notifyDecision和getSensor方法是紧随其后的两个最消耗CPU的方法,也许对它们进行优化很有趣。 您还可以查看每个方法的调用次数,也许您会发现一个调用时间过多的方法。

我们可以做的下一个性能分析是内存性能分析。 再次在这里,您必须开始分析,仪器将启动,在此期间,应用程序将被冻结。 这是我的申请结果:

在这里,我们可以看到该应用程序存储了一些大的double []和float []数组,EllipseIterator和BasicStroke类也占用了大量的内存空间。
在内存和CPU性能分析中,您都可以将结果保存到文件中以供日后查看。 例如,您可以让应用程序通宵工作,早上保存结果并检查结果,或者进行三个性能分析并比较三个结果。

总而言之,我不得不说这个探查器非常简单,但是使用起来却非常强大。 我们拥有分析器所需的主要功能,并且效果非常好。 这种工具确实可以帮助您改进应用程序,以减少CPU和内存的使用。 当然,这种工具并不能解决所有问题,它只是帮助显示必须改进应用程序的哪一部分,改进部分是开发人员的任务,而不是最简单的。 但是拥有这种工具是一个好的开始。

参考:通过@Blog(“ Baptiste Wicht”)的 JCG合作伙伴 Baptiste Wicht 使用Java VisualVM对应用程序进行概要分析

相关文章 :


翻译自: https://www.javacodegeeks.com/2012/01/profile-your-applications-with-java.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值