java虚拟机性能监控工具介绍

简介:
+关注继续查看

最近在做性能测试,在性能调优过程中查阅了些虚拟机相关的知识,下面对虚拟机所用的性能监控的工具做个简单的介绍和汇总。
一、JDK命令行工具
  1.jps:虚拟机进程状况工具
  列出正在运行的虚拟机进程,显示虚拟机执行祝列的名称,已经这些进程的本地虚拟机的唯一ID。此命令虽然功能单一,但它是使用频率最高的JDK命令工具。
Jps 命令格式:
jps  [options] [hostid]
2. jstat:虚拟机统计信息监视工具
  jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。在没有GUI图形界面,只提供了纯文本控制台环境服务器上,它将是运行期定位虚拟机性能问题的首选工具。
jstat命令格式:
jstat [option vmid [ interval [s|ms] [count] ] ]
参数interval和count代表查询的间隔和次数,如果省略这两个参数,说明只查询一次。
例如:jstat –gc 3232 500 20
命令含义为:每500ms查询一次进行3232垃圾收集器的状况,一共查询20次。
选项option代表用户希望查询虚拟机信息,主要分为3类;类装载、垃圾收集和运行期编译状况。
3. jinfo:Java配置信息工具
  jinfo(Configuration Info for Java)实时查看和调整虚拟机的各项参数。想知道未被显示指定的参数的系统默认值,可以使用jinfo的-flag选项进行查询,jinfo还可以使用-sysprops选项把虚拟机进行的System.getProperties()的内容打印出来。
jinfo命令格式:
jinfo [option] pid
4.jmap:Java内存映像工具
  jmap(Memory Map for Java)于生成堆转储快照,查询finalize执行队列,Java堆和永久代的详细信息等。
jmap命令格式:
jmap [option] vmid
5.jstack:Java堆栈跟踪工具
  jstack(Stack Trace for Java)用于生成虚拟机当前时刻的线程快照,定位线程出现长时间停顿的原因。
jstack命令格式:
jstack [option] vmid

  二、 JDK可视化工具
  1. Jconsole:java监视与管理控制台
JConsole可以说是前面介绍的所有功能性JDK工具的一个可视化版本,几乎实现了JVM Manage API中提供的所有的功能。
通过JDK/bin目录下的“jconsole.exe”启动JConsole。如图1,双击其中一个进程即可开始监控,也可以使用“远程进程”功能来连接远程服务器,对远程虚拟机进行监控。

  

图1


图2


 1)图2“概述”页显示整个虚拟机主要运行数据的概览。
2)内存监控
“内存”页签相当于可视化的jstat命令,用于监视收集器管理的虚拟机内存(java堆和永久代)的变化趋势。
3)线程监控
“线程”页签的功能相当于可视化的jstack命令,遇到线程停顿的时候可以时候线程监控进行分析
2.VisualVM:多合一故障处理工具
  VisualVM它除了运行监视、故障处理外,还提供了很多其他方面的功能。如性能分析(profiling),VisualVM的性能分析功能甚至比起JProfiler专业且收费工具都不会逊色多少,而且VisualVM还有一个很大的优点:不需要被监视的程序基于特殊的Agent运行,因此它对应用程序的实际性能影响很小,使得他可以直接应用在生产环境中。
1)启动VisualVM
通过JDK/bin目录下的“jvisualvm”启动VisualVM,可以根据需要给VisualVM装扩展插件,点击“工具”-->“插件”菜单。
2)生成和浏览堆转储快照
可以通过以下2种方式生成:
在“应用程序”窗口中右键单机应用程序节点,然后选择“堆dump”;
在“应用程序”窗口双击应用晨曦节点打开应用程序标签,然后再“监视”标签中单击“堆dump”。
生成了dump文件之后,应用程序页签将在堆的应用程序下增加以[heapdump]开头的子节点,并在主页签中打开该转储快照,如图3。


“摘要”面板可以看到应用程序dump时运行的参数、线程堆栈等信息。
“类”面板以类为统计口径统计的类的实例数量和容量信息。
“实例”面板需要通过“类”面板进去,在“类”中选择关系的类后点击,即可在实例中查看此类的实例信息。
3)分析程序性能
在Profiler页签中,提供了程序运行期间方法级的CPU执行时间分析及内存烦心,进行profiling肯定会对程序运行性能有比较大的影响,所以一般不在生产环境中使用这项功能。
选择“cpu”或“内存”,VisualVM会记录这段时间中应用程序执行过的方法。Cpu分析会统计每个方法执行的次数、执行耗时。分词分析则会统计每个方法关联对象数及这些对象所占用的空间,如图4。

图4

   



最新内容请见作者的GitHub页:http://qaseven.github.io/

   

目录
相关文章
|
2月前
|
存储 监控 算法
探索 Java JVM:深入了解虚拟机的工作原理与优化
Java 虚拟机(JVM)是 Java 语言的核心组成部分,它在代码编译和运行过程中发挥着重要作用。理解 JVM 的工作原理和优化策略对于开发高效、稳定的 Java 应用至关重要。本文将深入探讨 JVM 的工作原理、主要组成部分和性能优化策略,帮助您更好地理解 JVM 在 Java 开发中的关键地位。
|
3月前
|
Java
java基础(一)-虚拟机和第一个命令
用 Java 语言编写的程序由 Java 虚拟机 (JVM) 来执行。JVM 是一个特殊的程序,它知道如何执行用 Java 语言编写的程序。并且它的命令列表涵盖范围很大
39 0
|
5月前
|
消息中间件 NoSQL 架构师
最新Java硬核技能微服务、虚拟机、高并发,掌握拿大厂offer
写在前面 疫情信息仍在不断刷屏,今年春招明显会有所影响。很多企业,比如腾讯、字节跳动,为了保证春招的顺利进行,提高招聘效率,做出了一些调整:首先是更多采用线上面试的形式,有的甚至直接在线发offer。其次,简历筛选环节更加严格,用最短的时间匹配精准人才。 看来,春招难度不小,但也不必太过焦虑。在知乎上看到一条消息,说互联网公司每月对架构师的需求量高达近万人,有点出乎意料。那求职季需求岂不会更多!只要放平心态,调整策略,用心准备,就能抢占先机。那么,对于技术人,尤其是 Java 人来说,到底需要掌握什么技术才能通过筛选呢?这里列出几个流行的技术:
|
5月前
|
存储 Java 程序员
对线面试官:浅聊一下 Java 虚拟机栈?
对于 JVM(Java 虚拟机)来说,它有两个非常重要的区域,一个是栈(Java 虚拟机栈),另一个是堆。堆是 JVM 的存储单位,所有的对象和数组都是存储在此区域的;而栈是 JVM 的运行单位,它主管 Java 程序运行的。那么为什么它有这样的魔力?它存储的又是什么数据?接下来,我们一起来看。
|
5月前
|
安全 Java 大数据
大数据开发基础的编程语言的Java的JVM虚拟机的类加载机制
Java虚拟机(JVM)是Java语言的核心,它是一个虚拟的计算机,可以在不同的操作系统上运行Java程序。在Java中,类加载机制是JVM的重要组成部分,它负责将编译好的Java代码加载到JVM中执行。本文将介绍Java的类加载机制和常见问题。
55 0
|
5月前
|
缓存 Java 大数据
大数据开发基础的编程语言的Java的JVM虚拟机的字节码执行机制
Java虚拟机(JVM)是Java语言的核心,它是一个虚拟的计算机,可以在不同的操作系统上运行Java程序。在Java中,字节码执行机制是JVM的重要组成部分,它负责将编译好的Java代码翻译成机器指令并执行。本文将介绍Java的字节码执行机制和常见问题。
52 0
|
5月前
|
存储 算法 Java
大数据开发基础的编程语言的Java的JVM虚拟机的JVM内存模型
Java虚拟机(JVM)是Java语言的核心,它是一个虚拟的计算机,可以在不同的操作系统上运行Java程序。在Java中,JVM内存模型是JVM的重要组成部分,它负责管理Java程序所需的内存资源。本文将介绍Java的JVM内存模型和常见问题。
64 0
|
5月前
|
存储 算法 Java
大数据开发基础的编程语言的Java的JVM虚拟机的GC垃圾回收
Java虚拟机(JVM)是Java语言的核心,它是一个虚拟的计算机,可以在不同的操作系统上运行Java程序。在Java中,垃圾回收(GC)是JVM的重要组成部分,它负责回收无用的对象,从而释放内存资源。本文将介绍Java的GC垃圾回收和常见问题。
44 0
|
5月前
|
运维 监控 Java
大数据开发基础的编程语言的Java的JVM虚拟机的JVM性能监控与故障定位
Java虚拟机(JVM)是Java语言的核心,它是一个虚拟的计算机,可以在不同的操作系统上运行Java程序。在Java中,JVM性能监控和故障定位是非常重要的一环,可以帮助开发者及时发现和解决问题,提高应用程序的稳定性和可靠性。本文将介绍Java的JVM性能监控与故障定位以及常见工具。
73 0
|
5月前
|
Java 大数据 程序员
大数据开发基础的编程语言的Java的JVM虚拟机的JVM调优
Java虚拟机(JVM)是Java语言的核心,它是一个虚拟的计算机,可以在不同的操作系统上运行Java程序。在Java中,JVM调优是非常重要的一环,可以帮助开发者优化应用程序的性能,提高程序的稳定性和可靠性。本文将介绍Java的JVM调优和常见技巧。
66 0
相关产品
云迁移中心
推荐文章
更多