VisualVM是JDK自带的一个用于Java程序性能分析的工具

在JDK安装目录的bin文件夹下名称为 jvisualvm.exe

在左侧选择应用

(1)概述

应用程序和运行时环境的基本信息

基本参数

PID:应用程序的进程ID
主机:应用程序运行的系统地址
主类:运行了main方法的类
参数:应用启动时所传递的参数信息
JVM:当前的JVM信息
Java:当前使用的JDK信息
Java Home:JDK的位置
JVM标志:启动JDK时JVM使用的的标志
出现OOME时生产堆dump:当前出现OOME时生产堆dump功能的开启/禁用状态

保存的数据

  显示VisualVM存储的当前应用程序的信息

详细信息

  JVM参数:配置的JVM启动的参数信息

  系统属性 :JVM运行的系统属性

(2)监视

  展示监听的当前应用程序的整体情况

CPU:CPU的使用百分比

内存:内存的占用情况,包括内存大小、最大值和已经使用的大小

  堆:堆内存的大小和堆内存使用情况

  Metaspace:元空间内存的使用情况

类:显示了已经加载的类数量和共享类的数量

线程:显示了应用程序在JVM中生存和守护线程的数量

堆dump:执行堆dump,在新的标签页打开,查看dump的详细信息

(3)线程

展示了应用程序的线程数据,包括所有线程数、活动线程数、完成线程数

线程dump:执行线程dump,在新标签页打开结果

(4)抽样器

  抽取CPU和内存的样例数据

  设置——设置抽样参数

  CPU抽样:

    CPU样例:展示了方法级别CPU性能(执行的时间及占比)
    线程CPU时间:反映了线程执行占用cpu的时间和占比

  内存抽样

    堆柱状图:展示了内存占用情况

    每个线程分配:展示了每个线程分配的内存以及占比

(5)Profile

  启动和停止本地应用程序的概要分析会话

  CPU:点CPU按钮,启动一个 CPU性能分析会话 ,显示 CPU 的使用率、方法的执行效率和频率等相关数据

  内存:点击“内存”按钮将启动一个内存分析会话,等 VisualVM 收集和统计完相关性能数据信息,将会显示在性能分析结果

(6)Visual GC

安装插件

工具——》插件

就会出现Visual CG 的标签

  Spaces:分为 Perm(Permanent Generation) 永久代,  Old 老年代和新生代

     A.永久代

      通过VM Args设置,eg:

        -XX:PermSize=1024m   (初始值)

        -XX:MaxPermSize=1024m (最大值)

    B.java堆(java heap)——Old 老年代+新生代

      通过VM Args设置,eg:

        -xms2048m (初始堆内存)

        -Xmx2048m (最大堆内存)

        -XX:+HeapDumpOnOutofMemoryError (内存异常打印dump)

        -Xmn800m  (新生代内存)

        -XX:SurvivorRatio=8 (新生代内存分配比例(8:1:1))

        因为Heap分为新生代跟老年代,所以2018M-800M=1218M,老年代就是1218M(初始内存跟最大内存最好相等,防止内存不够时扩充内存或者Full GC,导致性能降低)

      新生代:Eden 区+S0 survivor 区+S1 survivor 区,默认是8:1分配内存

  Graphs:以时间为横坐标的状态面板

    Compile Time:编译时间表示虚拟机的 JIT 编译器编译热点代码的耗时

    Class Loader Time: class 的 load 和 unload 时间

    GC Time:

      18 collections ——自监视以来共 22 次GC, 包括 Minor GC 和 Full GC

      456.653ms 表示 gc 共花费了456.653ms      Last Cause: Allocation Failure 上次发生 gc 的原因为内存分配失败

    Eden Space:

      Eden Space (1.328G,204.000M): 128.430M——Eden Space 最大可分配空间  340.500M,当前分配空间 185.000M,当前占用空间 91.012M

      14 collections, 153.307ms——当前新生代发生 GC 的次数为14次, 共占用时间 153.307ms

    Survivor 0,Survivor 1:

    S0 和 S1 有一个是空闲的,这样方便执行 minor GC,他们的最大分配空间是相同的,在 minor GC 时,S0 和S1 会互相切换

     Survivor 1 (453.500M, 33.500M) : 3.814M——S1 最大分配空间 453.500M, 当前分配空间33.500M, 已占用空间3.814M

    Old Gen:

Old Gen (2.659G, 370.000M) :50.940M—— OldGen最大分配空间2.659G, 当前空间370.000M, 已占用空间50.940M

4 collections, 306.346ms ——老年代发生了 4次 GC, 耗费了306.346ms的时间

老年代 GC 也叫做 Full GC, 在老年代 GC 时会伴随着 Minor GC

    Metaspace:

    Perm Gen (1.096G, 109.375M) : 106.630M——最大可用空间1.096G,当前永久代空间109.375M,已占用空间106.630M

注:

  如果显示指定-XX:+UseParallelGC --新生代并行、老年代串行收集器 ,histogram柱状图会不支持当前收集器

VisualVM使用的更多相关文章

  1. jvm系列(五):tomcat性能调优和性能监控(visualvm)

    tomcat服务器优化 1.JDK内存优化 根据服务器物理内容情况配置相关参数优化tomcat性能.当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃.因此一般建议堆的最 ...

  2. IDEA上安装和使用checkstyle,findbugs,visualVM,PMD插件

    ##安装插件步骤: 1.打开settings 2.选择plugins 3.点击"Browse repositories" 4.搜索对应内插件,点击"install&quo ...

  3. 使用visualvm远程监控JVM LINUX服务器配置方法

    (1)首先要修改JDK中JMX服务的配置文件,以获得相应的权限: 进入$JAVA_HOME所在的根目录的/jre/lib/management子目录下, a. 将jmxremote.password. ...

  4. 使用VisualVM检测

    下载 https://visualvm.github.io/ 检测远程服务器 转自:http://blog.csdn.net/yangkangtq/article/details/52277794 授 ...

  5. 使用VisualVM分析性能

    性能分析神器VisualVM VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量 ...

  6. 性能分析神器VisualVM

    VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回 ...

  7. 使用VisualVM进行性能分析及调优(转)

    VisualVM 是一款免费的\集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回 ...

  8. Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试

    本文是本人前一段时间做一个简单Java监控工具调研总结,主要包括VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,以及对Java微基准测试的简单介绍, ...

  9. Java VisualVM使用:堆OOM

    背景 近期遇到了一个java.lang.OutOfMemoryError: Java heap space的问题,排除了堆设置过小的问题,代码走查没有头绪,所以使用VisualVM工具分析堆内存情况. ...

  10. 使用JDK自带的visualvm进行性能监测和调优

    使用JDK自带的visualvm进行性能监测和调优   1.关于VisualVm工具  VisualVM 提供在 Java 虚拟机 (Java Virutal Machine, JVM) 上运行的 J ...

随机推荐

  1. wordpress在首页列出所有分类及分类下的文章

    前面我们谈了wordpress调用指定分类文章,如果想要调用所有分类的文章如何实现呢?比如在wordpress首页列出所有分类及分类下的文章,其实方法类似 <?php $cats = get_c ...

  2. deque_queue_list

    #include <iostream> #include <deque>//front push pop back push pop [] at() #include < ...

  3. HTTP协议通信过程

    1. 了解HTTP HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器 ...

  4. spring相关—AOP编程—切入点、连接点

    1 切入点表达式 1.1 作用 通过表达式的方式定位一个或多个具体的连接点. 1.2 语法细节 ①切入点表达式的语法格式 execution([权限修饰符] [返回值类型] [简单类名/全类名] [方 ...

  5. centos7.2(一)vultr服务器购买和开通端口

    https://vultr.me/52.html 之前我们已经介绍了如何购买 Vultr 以及如何使用支付宝对 Vultr 进行充值,相关教程: VULTR 购买教程 2018 年最新图文版 VULT ...

  6. springboot与ssm的差异性

    springboot简化了ssm的配置 将外部jar包改为内部pom.xml文件配置 同时 使用了多种注解来进行注解式的开发 [图1:springboot的一些依赖模块] 通过原springmvc机制 ...

  7. 洛谷 P1825 【[USACO11OPEN]玉米田迷宫Corn Maze】

    P1825 传送门 简单的题意 就是一个有传送门的迷宫问题(我一开始以为是只有1个传送门,然后我就凉了). 大体思路 先把传送门先存起来,然后跑一下\(BFS\). 然后,就做完了. 代码鸭 #inc ...

  8. JS中的浅拷贝与深拷贝

    浅拷贝与深拷贝的区别: 浅拷贝: 对基本类型和引用类型只进行值的拷贝,即,拷贝引用对象的时候,只对引用对象的内存地址拷贝,新旧引用属性指向同一个对象,修改任意一个都会影响所有引用当前对象的变量. 深拷 ...

  9. GPU和显卡是什么关系?GPU会取代CPU吗?

      一.GPU是什么?与显卡是什么关系?安装在什么地方?有单独的GPU板卡吗? GPU就是图像处理芯片,外表与CPU有点相似.显卡的芯片,AMD的一个技术,相当于电脑的处理器CPU,只不过它是显卡的大 ...

  10. linux Ubuntu Centos 增加 TCP 连接数

    https://blog.csdn.net/c359719435/article/details/80300433 查看max conn: cat /proc/sys/net/core/somaxco ...