• 使用Java VisualVM配置Java应用程序/分析CPU或内存的使用情况(转)


    以下内容翻译自(机翻):https://baptiste-wicht.com/posts/2010/07/profile-applications-java-visualvm.html

    当您需要发现应用程序的哪些部分消耗更多的CPU或内存时,必须使用分析器来执行此操作。

    默认使用Sun JDK打包的一个分析器是Java VisualVM。这个分析器真的很简单的使用,真的很强大。

    在这篇文章中,我们将看到如何安装它并使用它来配置应用程序。

    通常,要安装它,您无所事事,因为它与JDK一起安装。但是在几个Unix系统中,像Ubuntu一样,情况并非如此。如果你想安装它,只需使用apt-get(或aptitude):

    sudo apt-get install visualvm

    要启动它,只需启动jvisualvm(jvisualvm.exe在jdk for Windows的bin目录中)。

    这将打开以下窗口:

    在这里看不到很多有趣的事情。要配置一个应用程序,您只需启动它,VisualVM会将其检测为已启动:

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

    此选项卡包含有关启动的应用程序的主要信息。您可以看到主类,命令行的参数,JVM参数。您还可以看到运行程序的JVM类型以及JVM所在的位置。您可以看到程序中设置的所有属性。

    一个更有趣的选项卡是“监视器”选项卡:

    此选项卡遵循您的应用程序的CPU和内存使用。您在此视图中有4个图形。第一个,从左到右,从上到下,显示CPU使用情况和垃圾收集器CPU使用情况。第二个图形显示堆空间和PermGen空间的用法。下一个图显示应用程序中加载的类的总数,最后一个显示当前运行的线程数。使用这些图表,您可以看到应用程序是否占用了CPU,或者应用程序是否使用了内存。

    第三个选项卡提供了有关线程的一些细节:

    在这个视图中,您可以看到应用程序的不同线程如何改变状态以及它们的演进过程。您还可以看到每次通过每个状态的时间,您可以获得有关所需线程的详细信息。

    现在,我认为最有趣的选项卡是Profiler的一个:

    当您首先打开此选项卡时,它根本不包含任何信息。在查看信息之前,您必须先进行一次剖析。我们将从CPU分析开始。只需点击CPU按钮,仪器将开始。在仪器仪表期间,应用程序将被阻止。仪器完成后,您可以再次访问该应用程序,您将看到在该表中显示的分析结果。当然,分析在您的应用程序上有一个开销。通常这是不可见的,但对于某些应用程序,您可以松动大量的流动性。以下是我通过简单应用获得的结果:

    在我的例子中,我们可以看到waitForTimeout方法占用CPU时间的81.6%。我们还可以看到,notifyDecision和getSensor方法是两个接下来的大多数CPU消耗方法,也许是优化它们是有趣的。您还可以查看每个调用的次数,也许您会发现一个被调用太多时间的方法。

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

    这里我们可以看到这个应用程序存储一些大的double []和float []数组,而且EllipseIterator和BasicStroke类也占用了大量的内存空间。

    在内存和CPU分析中,您可以将结果保存到文件以便稍后查看。例如,你可以让一个应用程序工作一整夜,保存结果早上检查,或进行三个分析比较三。

    总而言之,我不得不说,这个分​​析器是非常简单的,但也是非常强大的使用。我们有一个我们想要的分析器的主要功能,结果非常好。这种工具真的可以帮助您改进应用程序以减少CPU和内存。当然,这种工具不会做任何事情,它只是帮助显示应用程序的哪些部分必须改进,改进部分是开发人员的任务,而不是最简单的任务。但是拥有这种工具是个好的开始。

    而且这东西还可以安装插件,【工具】->【插件】

    参考:

    https://baptiste-wicht.com/posts/2010/07/profile-applications-java-visualvm.html(以上内容转自此篇文章)

    http://jiajun.iteye.com/blog/1180230

    https://visualvm.github.io/(官网)

  • 相关阅读:
    移动触摸事件之二
    移动touch事件之一
    Phonegap创建项目语法
    JS自定义去除字符串左右两边的指定字符
    video标签常用属性及说明
    html5开发之viewport使用
    页面事件总结
    缓存与预取
    修改JQM的默认配置属性
    JQM事件详解
  • 原文地址:https://www.cnblogs.com/EasonJim/p/7483480.html
Copyright © 2020-2023  润新知