VisualVM使用
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使用的更多相关文章
- jvm系列(五):tomcat性能调优和性能监控(visualvm)
tomcat服务器优化 1.JDK内存优化 根据服务器物理内容情况配置相关参数优化tomcat性能.当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃.因此一般建议堆的最 ...
- IDEA上安装和使用checkstyle,findbugs,visualVM,PMD插件
##安装插件步骤: 1.打开settings 2.选择plugins 3.点击"Browse repositories" 4.搜索对应内插件,点击"install&quo ...
- 使用visualvm远程监控JVM LINUX服务器配置方法
(1)首先要修改JDK中JMX服务的配置文件,以获得相应的权限: 进入$JAVA_HOME所在的根目录的/jre/lib/management子目录下, a. 将jmxremote.password. ...
- 使用VisualVM检测
下载 https://visualvm.github.io/ 检测远程服务器 转自:http://blog.csdn.net/yangkangtq/article/details/52277794 授 ...
- 使用VisualVM分析性能
性能分析神器VisualVM VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量 ...
- 性能分析神器VisualVM
VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回 ...
- 使用VisualVM进行性能分析及调优(转)
VisualVM 是一款免费的\集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回 ...
- Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试
本文是本人前一段时间做一个简单Java监控工具调研总结,主要包括VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,以及对Java微基准测试的简单介绍, ...
- Java VisualVM使用:堆OOM
背景 近期遇到了一个java.lang.OutOfMemoryError: Java heap space的问题,排除了堆设置过小的问题,代码走查没有头绪,所以使用VisualVM工具分析堆内存情况. ...
- 使用JDK自带的visualvm进行性能监测和调优
使用JDK自带的visualvm进行性能监测和调优 1.关于VisualVm工具 VisualVM 提供在 Java 虚拟机 (Java Virutal Machine, JVM) 上运行的 J ...
随机推荐
- 获取对象State的方法
一.通过Scaffold.of(context)可以获取父级最近的Scaffold Widget的State对象 二.通过GlobalKey来获取.步骤有两步: 给目标StatefulWidget添加 ...
- 推荐系统(recommender systems):预测电影评分--构造推荐系统的一种方法:低秩矩阵分解(low rank matrix factorization)
如上图中的predicted ratings矩阵可以分解成X与ΘT的乘积,这个叫做低秩矩阵分解. 我们先学习出product的特征参数向量,在实际应用中这些学习出来的参数向量可能比较难以理解,也很难可 ...
- Java中String对象的存储位置(学习笔记)
首先,String是final修饰的.immutable对象,它以一个个字符的方式存储在字符数组中.其次,String类型创建对象有两种方式:①通过字面量赋值:会先去常量池中查找是否存在相同的字符串, ...
- luogu_2831: 愤怒的小鸟
洛谷2831:愤怒的小鸟(状压\(dp\)) 题意: 在二维平面上给定\(n\)个点\((1\leq n\leq18)\). 其中每个点用\((x_i,y_i)\)表示\((0<x_i,y_i& ...
- Cronicle 基于nodejs 的分布式任务调度工具
Cronicle 是一款不多的分布式任务调度工具,基于nodejs 开发,同时包含看web UI,从官方介绍看到的UI还是 挺不错的,而且功能很丰富,值得试用下 参考资料 http://cronicl ...
- [HNOI2016]序列 CDQ+DP
[HNOI2016]序列 CDQ 链接 loj 思路 一个点最小变为l,最大变为r,不变的时候为v 那么j能在i前面就要满足. \(j<i\) \(r[j]<=v[i]\) \(v[j]& ...
- git 初始用法
Git global setup git config --global user.name "xiaoming" git config --global user.email & ...
- 一种SpaceClaim抽取流道的方法——利用缺失的面功能
针对不干净的几何,内部存在诸多碎面小缝隙,采用此方法可能会有较好的效果,不过需要耐心. 测试几何需要SpaceClaim19.0以上软件可以打开,下载链接: https://pan.baidu.com ...
- python 操作es
Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上. Lucene 可能是目前存在的,不论开源还是私有的,拥有最先进,高性能和全功能搜索 ...
- <每日 1 OJ> -LeetCode 13 . 罗马数字转正数
题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1 ...