JVM-12虚拟机性能监控与故障处理工具之【JDK的可视化工具-VisualVM】

简介: JVM-12虚拟机性能监控与故障处理工具之【JDK的可视化工具-VisualVM】

思维导图


20180807192539271.png

概述


Visual VM (All-in-One Java Troubleshooting Tool)是目前为止随JDK发布的功能最强大的运行监视和故障处理程序。 Visual VM除了提供运行监视、故障处理外,还提供了比如性能分析(Profiling),对应用程序的实际性能影响很小,使得它可以直接应用在生产环境,这个优点是JProfiler、YourKit等第三方的性能分析工具无法比拟的.


VisualVM可以做到


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

监视应用程序的CPU、GC、堆、方法区以及线程的信息(jstat、jstack)

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

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

离线程序快照:收集程序的运行配置、线程dump、内存dump等信息建立一个快照,方便分析

基于NetBeans平台开发,可安装各种各样的插件,功能强大,精华所在。

#插件安装


20180807201146245.png


打开 VisualVM图形化界面工具, 工具 --插件



20180807201240955.png

安装完插件后,选择一个需要监视的程序就进入程序的主页面了


2018080720153951.png


生成、浏览堆转储快照

两种方式生成dump

  • 在“应用程序”窗口中右键单击应用程序节点,然后选择“堆Dump”



20180807201805975.png


  • 在“应用程序”窗口中双机应用程序节点以打开应用程序内标签,然后在“监视”标签中单击“堆Dump”


20180807201933386.png


生成dump文件之后,应用程序页签将在该堆的应用程序下增加一个以【heapdump】开头的子节点,并且在主页签中打开了该转储快照。


20180807202230516.png

从堆页签中的“摘要”面案可以看到应用程序dump时运行的参数、System.getProperties()的内容、线程堆栈等信息。


“类”:类面板是以类为统计口径统计类的实例数量、容量信息等


“实例”:实例面板不能直接使用,因为不能确定用户想查哪个类的实例,需要通过类面板进入,在类中选择一个关心的类后双击,即可在实例中看到此类中500个实例的具体属性信息


“OQL控制台”:运行OQL查询语句的


如果想保存该dump, 右键另存为即可。 要打开一个已经存在的dump“文件–装入”即可


分析程序性能


在Profiler页签中,VisaualVM提供了程序运行期间方法级的CPU执行时间分析以及内存分析。 做Profiling分析肯定会对程序性能有比较大的影响,一般不再生产环境使用。


20180807203700806.png


CPU分析会统计每个方法的执行次数、执行耗时

内存分析会统计每个方法关联的对象数以及这些对象占用的空间。


BTrace


BTrace是sun公司推出的一款Java 动态、安全追踪(监控)工具,可以在不用重启的情况下监控系统运行情况,方便的获取程序运行时的数据信息,如方法参数、返回值、全局变量和堆栈信息等,并且做到最少的侵入,占用最少的系统资源。


这项功能对实际生产中的程序很有意义,比如程序出现问题,但排查错误的一些必要信息,比如方法参数、返回值等,但是开发的时候没有输出到日志中,以至于不能不加上日志后重新启动服务。 这时候BTrace插件就很方便了。


限制比较多,并且一定要确保脚本的正确性。


在Visual VM“应用程序”中选择对应的进程,右键会看到“Trace Application”

20180807214120144.png

先了解下,后续再补充。

相关文章
|
13天前
|
Java Docker 索引
记录一次索引未建立、继而引发一系列的问题、包含索引创建失败、虚拟机中JVM虚拟机内存满的情况
这篇文章记录了作者在分布式微服务项目中遇到的一系列问题,起因是商品服务检索接口测试失败,原因是Elasticsearch索引未找到。文章详细描述了解决过程中遇到的几个关键问题:分词器的安装、Elasticsearch内存溢出的处理,以及最终成功创建`gulimall_product`索引的步骤。作者还分享了使用Postman测试接口的经历,并强调了问题解决过程中遇到的挑战和所花费的时间。
|
30天前
|
存储 安全 Java
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别;什么是程序计数器,堆,虚拟机栈,栈内存溢出,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
|
26天前
|
缓存 监控 算法
吃透 JVM 诊断方法与工具使用
【8月更文挑战第4天】深入了解并掌握JVM诊断需把握几大要点:1) 熟悉JVM内存模型,如堆、栈及方法区;2) 掌握垃圾回收机制与算法;3) 运用工具如`jps`(查看Java进程)、`jstat`(监控运行状态)、`jmap`(生成堆快照)、`jhat`(分析堆快照)、`jstack`(检查线程栈); 4) 利用专业工具如Eclipse Memory Analyzer分析堆转储文件查找内存泄漏; 5) 动态监控与调整JVM参数; 6) 结合日志分析性能瓶颈。通过实战案例加深理解,有效应对JVM性能问题。
|
24天前
|
监控 算法 Java
深入理解Java虚拟机:JVM调优与性能提升
本文旨在为Java开发者提供一条清晰的路径,以深入掌握Java虚拟机(JVM)的内部机制和性能调优技巧。通过具体案例分析,我们将探讨如何识别性能瓶颈、选择合适的工具进行监控与调试,以及实施有效的优化策略,最终达到提高应用程序性能的目的。文章不仅关注理论,更注重实践应用,帮助读者在面对复杂的Java应用时能够游刃有余。
40 0
|
24天前
|
Arthas Prometheus 监控
使用JDK自带工具调优JVM的常用命令
使用JDK自带工具调优JVM的常用命令
|
27天前
|
监控 Java Android开发
吃透 JVM 诊断方法与工具使用
【8月更文挑战第3天】要精通JVM诊断,需掌握关键监控指标如内存(堆/非堆)、CPU使用及线程状态;熟悉工具如`jstat`(监控状态)、`jmap`(堆转储)、`jstack`(线程堆栈);并能利用Eclipse Memory Analyzer (MAT)分析堆转储找内存泄漏;同时理解GC日志以优化垃圾回收行为;通过实践案例加深理解。
|
2月前
|
存储 Java 对象存储
Java虚拟机(JVM)中的栈(Stack)和堆(Heap)
在Java虚拟机(JVM)中,栈(Stack)和堆(Heap)是存储数据的两个关键区域。它们在内存管理中扮演着非常重要的角色,但各自的用途和特点有所不同。
33 0
|
3月前
|
Unix Linux 虚拟化
虚拟机VMware知识积累
虚拟机VMware知识积累
|
9天前
|
测试技术 Linux 虚拟化
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
详细的VMware虚拟机安装macOS Big Sur的保姆级教程,包括下载VMware和macOS镜像、图解安装步骤和遇到问题时的解决方案,旨在帮助读者顺利搭建macOS虚拟机环境。
22 3
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
|
11天前
|
编解码 Linux 虚拟化
超详细VMware虚拟机安装Win10操作系统过程图解
这篇文章提供了一个详细的VMware虚拟机安装Windows 10操作系统的图解教程,包括了从创建虚拟机到安装操作系统的全过程,以及安装后的一些基本设置,如屏幕分辨率调整等。作者还提到了后续会分享关于磁盘分区的创建过程。
超详细VMware虚拟机安装Win10操作系统过程图解