JVM-VisualVM:多合-故障处理工具

VisualVM是什么?

    VisualVM(All-in-One Java Troubleshooting Tool)是功能最强大的运行监视和故障处理程序之一,曾经在很长一段时间内是Oracle官方主力发展的虚拟机故障处理工具。

VisualVM可以干什么?

    VisualVM可以运行监视、故障处理外,还将提供其他方面的能力,譬如性能分析(Profiling)。VisualVM的性能分析功能比起JProfiler、YourKit等专业且收费的Profiling工具都不遑多让。

VIsualVM功能

    显示虚拟机进程以及进程的配置、环境信息(jps、jinfo)。

·监视应用程序的处理器、垃圾收集、堆、方法区以及线程的信息(jstat、jstack)。

·dump以及分析堆转储快照(jmap、jhat)。

·方法级的程序运行性能分析,找出被调用最多、运行时间最长的方法。

·离线程序快照:收集程序的运行时配置、线程dump、内存dump等信息建立一个快照,可以将快照发送开发者处进行Bug反馈。

·其他插件带来的无限可能性。

下载安装

https://visualvm.github.io/index.html

JVM-VisualVM:多合-故障处理工具_第1张图片

JVM-VisualVM:多合-故障处理工具_第2张图片

解压

进入etc 打开visualvm.conf

JVM-VisualVM:多合-故障处理工具_第3张图片

编辑jdk路劲,你自己的jdk路劲

JVM-VisualVM:多合-故障处理工具_第4张图片

运行

JVM-VisualVM:多合-故障处理工具_第5张图片

JVM-VisualVM:多合-故障处理工具_第6张图片

安装插件

https://visualvm.github.io/pluginscenters.html

JVM-VisualVM:多合-故障处理工具_第7张图片

JVM-VisualVM:多合-故障处理工具_第8张图片

toos->plugins->修改地址

iy uj

JVM-VisualVM:多合-故障处理工具_第9张图片

JVM-VisualVM:多合-故障处理工具_第10张图片

下载插件

注意如果是虚拟机就用虚拟机下载

JVM-VisualVM:多合-故障处理工具_第11张图片

JVM-VisualVM:多合-故障处理工具_第12张图片

tools->Plugins->Downloaded

JVM-VisualVM:多合-故障处理工具_第13张图片

将插件导入然后install,再打开VigualVM

JVM-VisualVM:多合-故障处理工具_第14张图片

需的话可以把其他也装下

JVM-VisualVM:多合-故障处理工具_第15张图片

idea安装插件

进入 settings->plugins->Browse Repositories 搜索:VisualVM

JVM-VisualVM:多合-故障处理工具_第16张图片

JVM-VisualVM:多合-故障处理工具_第17张图片

配置路劲运行和jdk目录

JVM-VisualVM:多合-故障处理工具_第18张图片

运行选择

JVM-VisualVM:多合-故障处理工具_第19张图片

JVM-VisualVM:多合-故障处理工具_第20张图片

相关说明:

堆(Heap) :JVM管理的内存叫堆

分代:根据对象的生命周期长短,把堆分为3个代:Young,Old和Permanent,根据不同代的特点采用不同的收集算法,扬长避短也。

    Young(年轻代)

年轻代分三个区。一个Eden区,两个Survivor区。大部分对象在Eden区中生成。当Eden区满时,还存活的对象将被复制到Survivor区(两个中的一个),当这个Survivor区满时,此区的存活对象将被复制到另外一个Survivor区,当这个Survivor区也满了的时候,从第一个Survivor区复制过来的并且此时还存活的对象,将被复制“年老区(Tenured)”。需要注意,Survivor的两个区是对称的,没先后关系,所以同一个区中可能同时存在从Eden复制过来对象,和从前一个Survivor复制过来的对象,而复制到年老区的只有从第一个Survivor复制过来的对象。而且,Survivor区总有一个是空的。

    Tenured(年老代)

年老代存放从年轻代存活的对象。一般来说年老代存放的都是生命期较长的对象。

    Perm(持久代)

用于存放静态文件,如今Java类、方法等。持久代对垃圾回收没有显著影响,但是有些应用可能动态生成或者调用一些class,例如Hibernate等,在这种时候需要设置一个比较大的持久代空间来存放这些运行过程中新增的类。持久代大小通过-XX:MaxPermSize=进行设置。

    Metaspace(元空间)

          随着JDK8的到来,JVM不再有Perm。但类的元数据信息(metadata)还在,只不过不再是存储在连续的堆空间上,而是移动到叫做“Metaspace”的本地内存(Native memory)中。元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。

线程查看

JVM-VisualVM:多合-故障处理工具_第21张图片

CPU查看

JVM-VisualVM:多合-故障处理工具_第22张图片

JVM-VisualVM:多合-故障处理工具_第23张图片

生成dump

JVM-VisualVM:多合-故障处理工具_第24张图片

最后

    用visualvm来分析应用的性能也是一个非常好用的利器,在云服务及各大平台的开源工具没有出来之前,该工具一直是被当成神器一样来对待,随着现在各大云服务提供自带的一些分析工具更加便捷、更加高效所以visualvm虽然没有以前一样是被当成性能分析必须掌握的要求,但是该工具价值还是很高,有需要的同学可以自行了解掌握,说不定哪天升级打怪会用到该神器。

参考文章:

    https://blog.csdn.net/xlecho/article/details/103814673

    https://www.ibm.com/developerworks/cn/java/j-lo-visualvm/

JVM-VisualVM:多合-故障处理工具_第25张图片

你可能感兴趣的:(java,jvm,大数据,python,jdk)