visualVM

jvm监测工具-Visual VM

1.1 Visual VM 简介
VisualVM 提供在 Java 虚拟机 (Java Virutal Machine, JVM) 上运行的Java 应用程序的详细信息。在 VisualVM 的图形用户界面中,您可以方便、快捷地查看多个 Java 应用程序的相关信息。(摘自官方)
简单说来,VisualVM 是一种集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力。所有这些都是免费的!它囊括的命令行工具包括jstat, JConsole, jstack, jmap 和 jinfo,这些工具与 JDK 的标准版本是一致的。
可以使用 VisualVM 生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,       同时它还支持在 MBeans 上进行浏览和操作。尽管 VisualVM自身要在 JDK6 这个版本上运行,但是 JDK1.4 以上版本的程序它都能监控.对于我们来说,这些功能都是至关重要的。以前大家可能会用 YourKit 这样
的付费软件来检测我的应用软件,但现在可以用 VisualVM 这样一个开源工具来实现同样的功能了。更何况,有谁比能 Sun 公司更了解 JVM 呢?
1.2 如何获取 VisualVM
VisualVM 的一个最大好处就是,它已经在你的 JDK bin 目录里了,只要你使用的是 JDK1.6 Update7 之后的版本。点击一下 jvisualvm.exe 图标它就可以运行了。
这里是 VisualVM 的官方网站:       https://visualvm.dev.java.net,资料很全,
同时提供 VisualVM 最近版本下载。
2      Visual VM 实战
2.1 开启 Visual VM 之旅
如果你使用的是 JDK 是 1.6Update7 之后的版本,那么 Visual VM 已经包含在 bin 目录下了,否则需要去官方下载,目前最新版本是 1.2.1。
2.1.1 启动问题
如果你在 windows 上使用 Visual VM,需要做的只是点一下 jvisualvm.exe,就能启动它;绿色,好用。但是 Visual VM 所在的分区如果是 NTFS 格式,那么第一个问题就出现了:sun 对 NTFS 格式的硬盘支持有问题!但可通过参数可避免,并完成启动。步骤如下:
1. 创建一个 visualvm.exe 的快捷方式
2. 在“目标”中添加如下参数
-XX:+PerfBypassFileSystemCheck


2.1.2        界面简介
Visual VM 启动成功!可以看到 Visual VM 的界面了。通过 Visual VM 可以看到本机运行中的所有 Java 应用。你会发现根本不需要在 VisualVM 里为 Java应用程序注册,它们就会自动显示出来。甚至还可以在导航栏里查看到远程的Java 应用。  导航栏即为 Applications,其中分为 Local (本地 Java 应用) Remote 和(远程的 Java 应用)。

2.1.3 安装插件
Visual VM 有很多好用的插件;    而且 Sun 为了推广 Visual VM,还举办的 VisualVM 插件开发大赛,一等奖奖金为 2000 刀,非常诱人。如何安装插件呢? 点击 Tools -> Plugins

2.1.4 监控本地 Java 应用
Visual VM 本身就是一个 Java 应用,所以打开 Visual VM 看到的第一个可监控应用就是 Visual VM 本身;可以用它热热身,小试下牛刀。在 Visual VM 可视化界面中可以监控到 Visual VM 本身的内存使用情况、线程情况、Jvm 启动参数、cpu 消耗情况、垃圾回收情况等很多参数。当然如果在本地启一个 Tomcat 一样
可以看到这些参数,可以方便我们在本地对 JVM 进行调优。但是且接如果你是在windows 下起应用,如果你的 Java 应用是在 NTFS 格式的盘附上,记得加参数:-XX:+PerfBypassFileSystemCheck

2.1.5 监控远程 Java 应用
监视远程 Java 应用稍微复杂些。Visual VM 是通过 JMX 来和远程 Java 应用联系的。
JMX:Java Management Extensions,即 Java 管理扩展,是一个为应用程序、设备、系统等植入管理功能的框架。JMX 可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,  灵活的开发无缝集成的系统、网络和服务管理应用。
下面以 192.168.0.249 上的 tomcat 为例,叙述下监视远程 Java 应用的步骤如下:
1. 为 249 上的 tomcat 配置 jvm 启动参数。在 tomcat 的 catalina.sh 中添 加如下参数:
JAVA_OPTS=' -Dcom.sun.management.jmxremote.port=8999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false'
其中-Dcom.sun.management.jmxremote.port=8999 指定了 JMX 启动的代理端口;这个端口就是 Visual VM 要连接的端口
其中--Dcom.sun.management.jmxremote.ssl=false 指定了 JMX 是否启用ssl
其中-Dcom.sun.management.jmxremote.port=8999 指定了 JMX 是否启用
鉴权(需要用户名,密码鉴权)
2. 在 Visual VM 添加远程连接的 Host。右键点击 Remote 后 选Add Remote  Host。
3. 添加 249 为需要监控的 Host


4. 使用 JMX 连接 249 的 8999 端口




5. 连接 JMX 开始监控远程 Java 程序

### VisualVM 使用指南:性能监控与故障排查 #### 1. VisualVM 的基本概念 VisualVM 是一款由 Oracle 提供的强大工具,用于监控、分析和优化 Java 应用程序的运行状态。它集成了多个 JDK 工具的功能,如 `jstat`、`jinfo` 和 `jconsole` 等,提供了一个统一的操作界面[^2]。 #### 2. 安装与启动 对于 Mac 用户而言,默认安装路径通常位于 `/Library/Java/JavaVirtualMachines/<jdk版本>/Contents/Home/bin/jvisualvm` 中。如果未找到该文件,请确认已正确安装 JDK 并将其加入系统的 PATH 变量中[^4]。 #### 3. 功能模块详解 以下是 VisualVM 主要功能模块及其用途: ##### 3.1 JVM 概览及关键指标 通过 **Applications** 面板可以连接到本地或远程的 Java 进程,并实时查看其 CPU 占用率、堆内存使用情况以及线程数量等基本信息。这些数据有助于快速判断是否存在资源瓶颈问题[^1]。 ##### 3.2 内存管理分析 - **Heap Dump**: 当怀疑存在内存泄漏时,可生成 Heap Dump 文件并加载至 VisualVM 中进一步研究对象分配模式。 - **Garbage Collection (GC)**: 利用内置插件观察 GC 行为频率及时长变化趋势图谱,从而评估当前垃圾回收策略效率如何影响整体应用表现水平。 ##### 3.3 线程活动跟踪 借助于 Thread 标签页下的视图展示各个正在执行中的线程详情列表;同时支持导出完整的线程转储记录以便后续离线审查潜在死锁状况或其他同步机制方面的问题所在之处。 ##### 3.4 性能剖析器 Profiler 启用采样或者仪器化方式来测量方法调用耗时时长分布统计结果图表形式呈现出来给开发者作为改进代码逻辑依据之一。 #### 4. OOM 错误处理流程 当遇到 OutOfMemoryError (简称OOM)错误提示消息时候应该采取如下措施来进行有效解决: - 收集发生崩溃时刻对应的 heap dump 数据包; - 打开上述提到过的heap dumps 分析工具寻找占据过多空间的对象实例集合; - 考虑调整初始最大允许分配大小参数值(-Xms,-Xmx),亦或是更换更适合业务场景需求特点的新一代收集算法类型设置选项等等。 #### 5. 外部因素干扰应对方案 假如经过一系列内部检测之后依旧无法定位根本原因,则有必要考虑外界条件可能带来的负面影响。比如关注云计算平台官方发布的技术通告文档里有没有提及相似案例描述说明材料可供参考借鉴意义重大;另外还可以尝试联络互联网服务提供商请求协助调查诸如域名解析失败或者是跨区域间传输延时过高之类现象背后隐藏真相线索[^3]。 ```bash # 启动命令示例 /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/bin/jvisualvm & ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值