以下内容翻译自(机翻):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/(官网)

使用Java VisualVM配置Java应用程序/分析CPU或内存的使用情况(转)的更多相关文章

  1. linux下分析java程序占用CPU、内存过高

    一.CPU过高分析 1)使用TOP命令查看CPU.内存使用状态可以发现CPU占用主要分为两部分,一部分为系统内核空间占用CPU百分比,一部分为用户空间占用CPU百分比.其中CPU状态中标示id的为空闲 ...

  2. JAVA应用程序占用CPU、内存过高分析过程

    1.查看cpu占有率 top -P 2.查看进程cpu占用率 ps -mp 3749 -o THREAD,tid,time|sort -rn|head -n 20 查看占用cpu高,且占用时间长的线程 ...

  3. java分解质因数,具体程序分析和代码

    题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. 将一个正整数分解质因数分析:对n进行分解质因数,找到最小的质数k如果这个质数恰好等于n则说明分解质因数过程已经结束,打印输出 ...

  4. java基础-配置java的环境变量

    学习java之前首先在https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html上面下载与 ...

  5. 【JAVA】配置JAVA环境变量,安装Eclipse

    Java程序依赖JDK,就像C#程序依赖.NetFrameWork一样. 所以在开发之前,必须在win7或者是linux上,安装jdk(JavaDevelopkit)里面包括java一些工具,还有JR ...

  6. 【JAVA】配置JAVA环境变量

    系统变量新建,添加 变量名JAVA_HOME 变量值为C:\Java\jdk版本号 修改 Path为 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

  7. [译]Java 垃圾回收的监控和分析

    说明:这篇文章来翻译来自于Javapapers 的Java Garbage Collection Monitoring and Analysi 在这个系列的Java垃圾回收教程中,我们将看到可用于垃圾 ...

  8. Java VisualVM使用

    Java VisualVM Java VisualVM官网 Java VisualVM介绍 Java VisualVM is a tool that provides a visual interfa ...

  9. Linux下使用java获取cpu、内存使用率

    原文地址:http://www.voidcn.com/article/p-yehrvmep-uo.html 思路如下:Linux系统中可以用top命令查看进程使用CPU和内存情况,通过Runtime类 ...

随机推荐

  1. json-server的关系图谱详解(Relationships)

    json-server的关系图谱 json-server是非常好用的一款模拟REST API的工具,文档也很详细和全面.详情:json-server而其中的关系图谱是它非常强大的一个功能,可以非常方便 ...

  2. Dsp和ARM的区别

    有一次上课老师在将ARM的时候说到了Dsp. Dsp(Digital Signal Process),数字信号处理技术,而Dsp芯片和ARM的结构也有很多相似之处.比如有流水线.采用哈佛结构(早期的A ...

  3. 过河 2005年NOIP全国联赛提高组(离散化+dp)

    1105 过河 2005年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description 在河上有一 ...

  4. Python细节(一)深浅拷贝

    深浅拷贝 只要涉及拷贝,就会涉及创建新对象 浅拷贝,会创建一个新的容器,列表中的元素和原列表的元素用的是同一个内存空间 第一种方法:从头切到尾,完整的复制一份 lst = [1,2,3,4] lst1 ...

  5. jQuery 事件 - trigger() 方法 和 triggerHandler() 方法

    trigger() 方法触发被选元素的指定事件类型. triggerHandler() 方法触发被选元素的指定事件类型.但不会执行浏览器默认动作,也不会产生事件冒泡. triggerHandler() ...

  6. 生成错误:对路径".dll"的访问被拒绝

    第一步:检查dll所在的目录的访问权限,右键文件夹>属性>安全>设置添加EveryOne用户并将完全控制的权限赋给它. 如果问题还没有解决,请不要一遍遍的重启,看第二步: 第二步:右 ...

  7. [hihocoder][Offer收割]编程练习赛62

    方向 #pragma comment(linker, "/STACK:102400000,102400000") #ifndef ONLINE_JUDGE #include &qu ...

  8. 【译】x86程序员手册07 - 2.5操作数选择

    2.5 Operand Selection 操作数选择 An instruction can act on zero or more operands, which are the data mani ...

  9. SPPNet论文翻译-空间金字塔池化Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    http://www.dengfanxin.cn/?p=403 原文地址 我对物体检测的一篇重要著作SPPNet的论文的主要部分进行了翻译工作.SPPNet的初衷非常明晰,就是希望网络对输入的尺寸更加 ...

  10. eclipse的任务列表

    如上图所示,备注加  TODO  ,可以在tasks列表中显示,提示你还有哪些工作需要完善 昨天遇到一个问题,加了  TODO  任务列表里却不显示,后来发现是因为任务列表只显示了前100条,而我的项 ...