当您需要发现应用程序的哪个部分消耗更多的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对应用程序进行概要分析 。

相关文章 :

  • 从CLI监视OpenJDK
  • 绩效焦虑–关于绩效不可预测性,度量和基准
  • JVM选项:-client vs -server
  • Java中的低GC:使用原语而不是包装器

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

使用Java VisualVM分析您的应用程序相关推荐

  1. 【Java 虚拟机原理】垃圾回收算法( Java VisualVM 工具 | 安装 Visual GC 插件 | 使用 Java VisualVM 分析 GC 内存 )

    文章目录 一.Java VisualVM 工具安装 Visual GC 插件 二.使用 Java VisualVM 分析 GC 内存 一.Java VisualVM 工具安装 Visual GC 插件 ...

  2. java visualvm分析_使用VisualVM分析性能

    对于java虚拟机,像我这样工作才两年的会是比较陌生和神秘,但是时候,需要对JVM有一定的认识,并且能够设置一些参数.下面是自己学习到的内容. 这里需要使用一个java自带的一个工具,VisualVM ...

  3. Java VisualVM

    文章目录 1.Java VisualVM简介(Introduction to Java VisualVM) 1.1 Java VisualVM简介(Introduction to Java Visua ...

  4. java visualvm 教程_Java性能分析神器--VisualVM Launcher[1]

    Java性能分析神器1--VisualVM Launcher VisualVM 当你日复一日敲代码的时候,当你把各种各样的框架集成到一起的时候,看着大功告成成功运行的日志,有没有那么一丝丝迷茫和惆怅: ...

  5. java visualvm 内存_【Java线程与内存分析工具】VisualVM与MAT简明教程

    前言 本文将简要介绍Java线程与内存分析工具VisualVM和MAT的使用,进一步的学习可参考官网或工具帮助(例如MAT:Help -> Welcome -> Tutorials),并在 ...

  6. java性能瓶颈分析_Java性能优化技巧整理,做一个深度的程序员

    原标题:Java性能优化技巧整理,做一个深度的程序员 在我们身边是一大批的程序员,层次不一,但是放眼观,我们很容易就可以看到那些是业务型程序员,那些是有层次的程序员.注重细节,注重性能,做一个有深度的 ...

  7. java 崩溃监控,求大神分析drwtsn32 监控javaee程序崩溃日记

    当前位置:我的异常网» J2EE » 求大神分析drwtsn32 监控javaee程序崩溃日记 求大神分析drwtsn32 监控javaee程序崩溃日记 www.myexceptions.net  网 ...

  8. Java VisualVM(Java性能分析工具)插件安装及JDK版本对应插件中心地址

    参考文章: VisualVM(3) 插件安装与更新路径配置 Java VisualVM插件地址 安装jvisualvm的时候,发现插件可用为0,错误提示"连接插件中心超时".上网查 ...

  9. java visualvm远程监控_深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战

    本文转自互联网,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutori ...

最新文章

  1. [转载] 大道至简:软件工程实践者的思想——第六章 谁是解结的人
  2. MATLAB实战系列(十四)-如何通过YALMIP和CPLEX求解小规模(CVRP)路径调度问题(附MATLAB代码)
  3. 用java程序操作hadoop,intellij IDEA和maven的使用
  4. Spring IOC 容器启动、Bean生命周期详解
  5. 头条白板面试_如何在白板上组织您的想法并粉碎技术面试
  6. 热传导/物质扩散算法应用于推荐
  7. sklearn模型支持输入list吗?
  8. Leetcode-探索 | 买股票的最佳时机II
  9. hp6960无法连接计算机,惠普6960驱动
  10. 项目管理:如何提高团队效率
  11. Unity RPG 黑暗之光 问题记录 上 (1-63 地形场景 角色选择 行走 相机跟随、旋转、缩放 任务系统 面板栏 背包系统 状态系统)
  12. 【ISO】Windows10系统ISO镜像怎么从微软官网下载?
  13. 这只是起点 ——暨CSDN博客“我的2013”年度征文活动获得特等奖
  14. [WebGL入门]二十一,从平行光源发出的光
  15. Office Word 2016 中Word自带公式编辑器编辑的公式转Mathtype出现omml2mml.xsl 问题的解决方法
  16. STM32F103C8T6控制LED灯轮流闪烁
  17. Redisson(2-1)分布式锁实现对比 VS Java的ReentrantLock之tryLock
  18. Aspose.Words for .NET使用章节教程(2):如何处理文档分段——Aspose.Words中的分段
  19. linux注销登录用户
  20. 【短信】谷歌4.4短信代码学习

热门文章

  1. 局域网物理机怎么访问虚拟机
  2. 单列集合List的实现类
  3. java –cp_Java –缺少字体–崩溃的应用程序!
  4. apache kafka_使用Apache Kafka,Kubernetes和Envoy,Istio,Linkerd的服务网格和云原生微服务...
  5. java 十六进制浮点_Java十六进制浮点文字
  6. swagger api文档_带有Swagger的Spring Rest API –创建文档
  7. github和maven_在github上托管Maven存储库(包含源代码和javadoc)
  8. java sax解析xml_在Java中使用DOM,SAX和StAX解析器解析XML
  9. Neo4j:使用LOAD CSV检测CSV标头中的恶意空间
  10. jbehave_使用JBehave,Gradle和Jenkins的行为驱动开发(BDD)