利用jvisualvm分析JVM,进行性能调优

简介: 什么是jvisualvm?jvisualvm是JDK自带分析工具。可分析JDK1.6及其以上版本的JVM运行时的JVM参数、系统参数、堆栈、CPU使用等信息。可分析本地应用及远程应用。在JDK1.6以上版本中自带。

什么是jvisualvm?

jvisualvm是JDK自带分析工具。

可分析JDK1.6及其以上版本的JVM运行时JVM参数系统参数堆栈CPU使用等信息。可分析本地应用及远程应用。

在JDK1.6以上版本中自带。

工具在哪找?

在jdk包中:%JAVA_HOME%binjvisualvm.exe

怎么用?

1.进入JVM进程

进入工具后,在工具左侧即可选中当前运行的JAVA进程,双击可查看进程详情。

_1

2.查看运行环境及JVM参数

2

3.查看JVM垃圾回收、进程等

主要是为了查看垃圾回收次数,频繁的垃圾回收对系统性能也有影响。

image2018_7_12_17_34_18

4.分析应用性能

利用这个工具分析应用性能效果杠杠的,主要是利用抽样器统计每个线程中,每个方法的执行时间,这样就能看到一次请求过程中,到底是哪个方法/查询导致响应时间长。

4.1点开抽样器,点击CPU,进行CPU抽样

5

4.2抽样一段时间后,点击快照,对从点击抽样开始的这段时间,进行CPU使用的统计。

6

4.3然后就能看到这段时间里,每个方法被使用的总时间以及时间占比啦,调用堆栈可一直追踪至native方法。
这样就可以很轻松的分析出,到底是哪个方法占了我宝贵的时间!

22222

5.分析远程应用

如果要分析远程应用,需要远程服务暴露JMX服务,然后本地再用该工具进行连接。所以需要对远程服务的JVM启动参数进行配置。

5.1在JVM启动参数中增加JMX配置:

#建立链接的端口
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=8090"
#不启用ssl
JAVA_OPTS="-Dcom.sun.management.jmxremote.ssl=false $JAVA_OPTS"
#不启用登陆验证
JAVA_OPTS="-Dcom.sun.management.jmxremote.authenticate=false $JAVA_OPTS"
#rmiServer
JAVA_OPTS="-Djava.rmi.server.hostname=10.137.126.42 $JAVA_OPTS"

#启动命令
java $JAVA_OPTS -jar jarName.jar  >/dev/null 2>&1 &

5.2注意服务器开放端口

远程服务启动后,除配置端口外,还会开放两个随机端口,本地服务还会访问这两个随机端口,所以在有网络权限限制的时候,需要把本地 -> 服务器高位端口(10000-65535) 都申请允许访问。

image2018_7_12_18_8_39

5.3最后本地远程添加主机,建立JMX链接即可。
image2018_7_12_18_10_19

相关文章
|
监控 Java Unix
6个Java 工具,轻松分析定位 JVM 问题 !
本文介绍了如何使用 JDK 自带工具查看和分析 JVM 的运行情况。通过编写一段测试代码(启动 10 个死循环线程,分配大量内存),结合常用工具如 `jps`、`jinfo`、`jstat`、`jstack`、`jvisualvm` 和 `jcmd` 等,详细展示了 JVM 参数配置、内存使用、线程状态及 GC 情况的监控方法。同时指出了一些常见问题,例如参数设置错误导致的内存异常,并通过实例说明了如何排查和解决。最后附上了官方文档链接,方便进一步学习。
3110 4
|
监控 Java 编译器
Java虚拟机调优指南####
本文深入探讨了Java虚拟机(JVM)调优的精髓,从内存管理、垃圾回收到性能监控等多个维度出发,为开发者提供了一系列实用的调优策略。通过优化配置与参数调整,旨在帮助读者提升Java应用的运行效率和稳定性,确保其在高并发、大数据量场景下依然能够保持高效运作。 ####
427 58
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
监控 算法 Java
jvm-48-java 变更导致压测应用性能下降,如何分析定位原因?
【11月更文挑战第17天】当JVM相关变更导致压测应用性能下降时,可通过检查变更内容(如JVM参数、Java版本、代码变更)、收集性能监控数据(使用JVM监控工具、应用性能监控工具、系统资源监控)、分析垃圾回收情况(GC日志分析、内存泄漏检查)、分析线程和锁(线程状态分析、锁竞争分析)及分析代码执行路径(使用代码性能分析工具、代码审查)等步骤来定位和解决问题。
371 6
|
Arthas 监控 Java
JVM进阶调优系列(9)大厂面试官:内存溢出几种?能否现场演示一下?| 面试就那点事
本文介绍了JVM内存溢出(OOM)的四种类型:堆内存、栈内存、元数据区和直接内存溢出。每种类型通过示例代码演示了如何触发OOM,并分析了其原因。文章还提供了如何使用JVM命令工具(如jmap、jhat、GCeasy、Arthas等)分析和定位内存溢出问题的方法。最后,强调了合理设置JVM参数和及时回收内存的重要性。
|
监控 Java 测试技术
Elasticsearch集群JVM调优垃圾回收器的选择
Elasticsearch集群JVM调优垃圾回收器的选择
590 1
|
监控 Java 编译器
Java虚拟机调优实战指南####
本文深入探讨了Java虚拟机(JVM)的调优策略,旨在帮助开发者和系统管理员通过具体、实用的技巧提升Java应用的性能与稳定性。不同于传统摘要的概括性描述,本文摘要将直接列出五大核心调优要点,为读者提供快速预览: 1. **初始堆内存设置**:合理配置-Xms和-Xmx参数,避免频繁的内存分配与回收。 2. **垃圾收集器选择**:根据应用特性选择合适的GC策略,如G1 GC、ZGC等。 3. **线程优化**:调整线程栈大小及并发线程数,平衡资源利用率与响应速度。 4. **JIT编译器优化**:利用-XX:CompileThreshold等参数优化即时编译性能。 5. **监控与诊断工
|
存储 监控 Java
JVM进阶调优系列(8)如何手把手,逐行教她看懂GC日志?| IT男的专属浪漫
本文介绍了如何通过JVM参数打印GC日志,并通过示例代码展示了频繁YGC和FGC的场景。文章首先讲解了常见的GC日志参数,如`-XX:+PrintGCDetails`、`-XX:+PrintGCDateStamps`等,然后通过具体的JVM参数和代码示例,模拟了不同内存分配情况下的GC行为。最后,详细解析了GC日志的内容,帮助读者理解GC的执行过程和GC处理机制。
|
Arthas 监控 数据可视化
JVM进阶调优系列(7)JVM调优监控必备命令、工具集合|实用干货
本文介绍了JVM调优监控命令及其应用,包括JDK自带工具如jps、jinfo、jstat、jstack、jmap、jhat等,以及第三方工具如Arthas、GCeasy、MAT、GCViewer等。通过这些工具,可以有效监控和优化JVM性能,解决内存泄漏、线程死锁等问题,提高系统稳定性。文章还提供了详细的命令示例和应用场景,帮助读者更好地理解和使用这些工具。