jvisualvm介绍
VisualVM(All-in-One Java Troubleshooting Tool)是到目前为止随JDK发布的功能最强大的运行监视和故障处理程序,它提供了运行监视、故障处理、性能分析(Profiling)等功能。VisuaIVM有一个很大的优点:不需要被监视的程序基于特殊Agent运
行,因此它对应用程序的实际性能的影响很小,使得它可以直接应用在生产环境中。

jdk8的文档中https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html就有jvisualvm的使用介绍,
jvisualvm的官网介绍地址为:https://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/index.html 。
VisualVM基于NetBeans平台开发,因此它一开始就具备了插件扩展功能的特性,通过插件扩展支持,visualVM可以做到:
- 显示虚拟机进程以及进程的配置、环境信息(jps、jinfo)。
- 监视应用程序的CPU、GC、堆、方法区以及线程的信息(jstat、jstack)。
- dump以及分析堆转储快照(jmap、jhat)·
- 方法级的程序运行性能分析,找出被调用最多、运行时间最长的方法。
- 离线程序快照:收集程序的运行时配置、线程dump、内存dump等信息建立一个快照,可以将快照发送开发者处进行Bug反馈。
- 其他plugins的无限的可能性(常用的Visual GC,BTrace,Threads Inspector )……
VisualvM可以监控本地和远程的Java应用程序,可能会有部分功能在监控远程应用程序时无法使用。在jdk安装目录\bin的命令中找到jvisualvm.exe双击打开即可使用。
jvisualvm使用介绍
打开jvisualvm后,可以看到如下界面,其可以监控本地和远程的Java应用程序,图中红框圈住的是本地程序,左侧显示的com.wkp.jvm.ServiceapiApplication (pid 8700)其实相当于 jps -l 命令的输出。可以看到有概述、监视、线程、抽样器和Profiler这几个功能菜单,而Visual GC是添加的插件,默认是没有的(下面会介绍这个插件)。
1、概述里面显示了JDK的版本、PID、JVM参数、系统属性等(相当于java -version,jps,jinfo等命令)。
Java应用程序如果想能够远程连接监控,可以通过JMX和jstatd,如果使用JMX则启动时要添加JMX相关的参数(具体的远程连接感兴趣的话,可以自己找文章看一下哈):
nohup java -jar -Djava.rmi.server.hostname=192.168.74.4 -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false test.jar &
2、监视菜单,可以看到如下界面:展示了CPU使用情况、堆内存大小及占用情况、类的装载和线程情况。点击堆Dump按钮会生成堆dump文件,相当于jmap命令。
双击打开上面生成的dump文件,可以看到如下所示:点击显示线程信息会看到线程dump信息(跟jstack命令输出的一样),然后还有类、实例数和OQL控制台,这个和前面介绍的MAT类似。
点击类按钮,会看到如下所示:可以看到类的实例数、大小等,还有一个重要功能"与另一个堆存储进行比较",
可以在执行GC前后分别产生堆dump文件,然后进行对比分析哪些对象有了变化、是如何变化的。
3、线程菜单, 可以看到所有的线程信息:线程数量、线程状态、线程名称、线程运行时间等,点击线程Dump按钮会跟jstack命令一样生成线程dump文件。
4、抽样器菜单,点击“CPU”按钮启动一个 CPU 性能分析会话 ,VisualVM 会检测应用程序所有的被调用的方法。当进入一个方法时,线程会发出一个“method entry”的事件,当退出方法时同样会发出一个“method exit”的事件,这些事件都包含了时间戳。然后 VisualVM 会把每个被调用方法的总的执行时间和调用的次数按照运行时长展示出来。
此外,我们也可以通过性能分析结果下方的方法名过滤器对分析结果进行过滤。
点击抽样器中的内存会看Java程序中的类的实例数、线程分配的内存等信息。
5、Profiler分析器:跟上面的抽样器类似,也可以选择CPU或者内存进行监控,这里就不贴图了。
如果你是通过双击jvisualvm.exe打开的,则在你点击Profiler中的CPU或者内存的时候会出现 VisualVm的Profiler一直转圈:正在连接到目标VM,解决方式就是通过命令启动,并且添加启动参数即可解决。
jvisualvm -J-Dorg.netbeans.profiler.separateConsole=true //-J即表示JVM OPTION:允许带JVM参数启动
C:\Program Files\java8\jdk1.8.0_112\bin>jvisualvm -J-Dorg.netbeans.profiler.separateConsole=true
点击Profiler中的CPU会显示方法的执行时间、调用次数等
点击Profiler中的内存会对内存进行分析,会显示分配的对象,对象的大小,对象的年龄等信息。
Visual GC插件安装及使用
jvisulaVM如何添加插件:https://visualvm.github.io/index.html,visual GC插件下载地址为:https://visualvm.github.io/pluginscenters.html,根据自己的jdk版本选择对应的插件版本,并复制插件下载链接
点击VisualVm的工具->插件,开始的时候可能可用插件显示为0,可用在设置里面添加,把上面的链接地址复制进去,确定之后可用插件列表里面就可以看到了。在可用插件列表中选中,然后点击安装,安装完成后重启即可看到Visual GC插件。
打开Visual GC插件可以看到整个区域分为三部分:spaces、graphs、histogram
1,spaces区域:代表虚拟机内存分布情况。从图中可以看出,虚拟机被分为Metaspace、Old、Eden、S0、S1
2,Graphs区域:内存使用详细介绍
- Compile Time(编译时间):图中显示编译了4070个类总耗时14.026s,一个驼峰表示一次JIT编译,越窄表示时间越短
- Class Loader Time(类加载时间):表示加载、卸载类的数量、总消耗时间
- GC Time(GC Time):显示GC次数、耗时、最近垃圾收集的原因
- Eden Space(Eden 区):括号内的8.500M表示最大容量,8.500M表示当前容量,后面的2.259M表示当前占用空间,42 collections表示垃圾收集次数,239.693ms表示垃圾收集花费时间
- Survivor 0/Survivor 1(S0和S1区):和Eden Space类似
- Old Gen(老年代):和Eden Space类似
- Metaspace(元空间):表示最大空间、当前空间、当前占用大小。
3,histogram:显示survivor区域对象的年龄
Visual GC的histogram可能会显示不受此JVM支持,因为是垃圾收集器的原因,Java应用默认使用UseParallelGC 并行收集器,这时候是不显示的,不用并行收集器就可以了,例如改为CMS+Parnew就能正常显示。
- Tenuring Threshold:表示新生代年龄大于当前值则进入老年代
- Max Tenuring Threshold:表示新生代最大年龄值。
- Tenuring Threshold与Max Tenuring Threshold区别:Max Tenuring Threshold是一个最大限定,所有的新生代年龄都不能超过当前值,而Tenuring Threshold是个动态计算出来的临时值,一般情况与Max Tenuring Threshold相等,如果在Suivivor空间中,相同年龄所有对象大小的总和大于Survivor空间的一半,则年龄大于或者等于该年龄的对象就都可以直接进入老年代(如果计算出来年龄段是6,则Tenuring Threshold=6,age>=6的Suivivor对象都符合要求),它才是新生代是否进入老年代判断的依据。
- Desired Survivor Size:Survivor空间大小验证阙值(默认是survivor空间的一半),用于Tenuring Threshold判断对象是否提前进入老年代。
- Current Survivor Size:当前survivor空间大小
相关推荐:
什么是seo概念,什么是seo,sem ,ai音标谐音
seo重点工作是什么,seo重点工作是什么意思 ,棋谱检查ai
ChatGPT:OpenAI的创新之作-一款颠覆传统的语言模型,ai球衣号
seo用到什么软件,做seo需要用到什么软件 ,皮皮ai
中外链:打通全球流量的桥梁,提升网站排名与流量的双重保障,行业网站建设思路
SEO获取流量的必杀技:如何通过优化轻松提升网站排名,德州全网营销推广价格
在线AI文章生成器开启智能创作新时代
SEO与SEM:谁才是提升网站流量的王者?,Ai中字体如何变形立体
SEO到底怎么做?揭秘从零到精通的完整SEO优化攻略,鸟瞰ai
ChatGPT连了外网也登不了?如何解决这一问题,重新畅享AI助力!,ai少女大瓜
在线AI生成文章:智能写作的未来趋势
SEO怎么排名?这5大技巧,轻松提升网站排名,人人都可ai
云推SEO:让您的网站在激烈竞争中脱颖而出,网站优化公司欢迎来电
AI会生成同一篇文章吗?揭开智能创作的神秘面纱
seo网页优化什么意思,seo网站优化必知的10个问答,问吧,【解决】百度不知道 ,ai识别点读机
SEO超级,助力企业站点冲刺搜索引擎排名,白云全网营销推广哪家强
不利于seo是什么,不属于seo对网店推广的作用 ,ai渐变下载
Goanno跨级借鉴:推动创新与提升效率的秘密武器,崇明区智能ai艾灸费用
互联网快照:记录数字时代的每个瞬间,全网seo怎么优化内容
丹东抖音seo是什么,抖音seo引流 ,ai工具编写作业指导书
SEO外,如何提升网站整体营销效果?,文轩网络营销推广方案
ChatGLM不能搜索网页内容,你真的了解它的局限性吗?,ai修复情侣
SEO译为:网站排名背后的优化策略,会展中心网站优化
为什么关键词太少会影响你的网络营销效果?,陕西seo网站推广工具
SEO考核:如何通过精准的SEO优化提升网站排名与流量,茶艺营销推广方案怎么写
ChatGPT中文版下载免费版:智能对话新时代,尽在,ai光波
SEO攻略:搜索引擎优化,快速提升网站排名,网站推广网站优化费用
seo需要学会什么编程,seo要会些什么 ,剪映怎样加ai
seo组建需要什么条件,seo建站的步骤 ,ai肌肉宝宝
ChatGPT:智能对话开创新时代,ai做渐变直线
ChatGPT故障:科技背后的秘密与应对策略,华为什么手机带ai功能
AI代写文章:高效创作的新风尚
什么是seo快排,seo快排方案 ,ai剪图形
SEO优化如何提升网站排名,驾驭搜索引擎流量,三亚网站推广方法
SEO观看:如何通过优化提升您的网站流量和品牌影响力,龙里网络营销推广
ChatGPT国内版:为中国用户量身定制的智能助手,开启AI新纪元,ai文章赚钱
AI代谢文章:从灵感到成果的创作革命
ChatGPT显示503:如何应对AI服务不可用的困境?,ai宝贝宝贝
AI写作的崛起-“只能AI写作”背后的巨大潜力,舞狮摄影ai
ChatGPT维护页面-背后的技术与用户体验,ai领域ppt
SEO定价策略:如何根据企业需求定制最佳价格方案,教育培训抖音营销推广
ChatGPT无法加载?检查您的网络设置并尝试重启,轻松解决连接问题!,ai制作艺术字
ChatGPT为什么页面下拉不了?问题解析与解决方案,ai对准
SEO结构优化:助力网站提升排名与流量的关键策略,杭州小网站推广哪家好做
seo网络推广要做什么,seo 网络推广 ,ai少女喝药
SEO总结:如何通过优化提升网站排名与流量,关键词排名消失
为什么要seo排名,为什么要做seo推广 ,AI写作开启创意新世界
SEO优化与SEM广告:提升品牌曝光与流量的双重利器,ai接回头
SEO总计:如何通过SEO优化实现网站流量和排名的飞跃,三元桥网站优化
SEO兼职:如何通过SEO兼职实现收入增长与职业突破,濮阳网站建设官网