`
g21121
  • 浏览: 684179 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JVM 图形化监控工具

 
阅读更多

        前篇文章已经介绍了一些JDK 中自带的监控工具,但是这些工具都是基于文本界面的,无法很直观的看出程序运行的波动情况,这节就介绍一些图形化的监控工具供大家更简单容易的监控使用。

        首先说几个官方开发的图形监控工具:

 

        1.jvmstat
        jvmstat是图形版的jstat,由Java 官方提供,目前最新版本为3.0。

        下载地址:http://www.oracle.com/technetwork/java/jvmstat-142257.html

 

        下载之后解压缩得到以下目录结构:


        目录结构比较清晰,很容易就能分辨出各目录的功能及作用:
        bat:windows启动程序

        bin:linux启动程序

        docs:相关文档

        etc:linux相关依赖库

        jars:相关jar包 

 

        使用jvmstat 之前需要配置相应环境变量,环境变量配置如下:

JVMSTAT_HOME:jvmstat安装目录
JVMSTAT_JAVA_HOME:JDK所在目录,与JAVA_HOME值相同

 

        配置好两个环境变量之后就可以运行jvmstat 了,运行命令为:

visualgc pid
#windows 系统进入bat 目录后运行该命令
#linux 系统进入bin 目录后运行该命令

 

        运行后界面自动打开并显示相应内容,如图所示:


 

         从jvmstat 中可以清晰的观察到汇编,加载,垃圾回收消耗的时间与各区域内存使用情况,在图中s0与s1的内存使用永远都是相斥的,即至多只有一个会在使用。所以jvmstat 只能作为一款基本的图形监控工具。


        评论:jvmstat 作为一款基本的JVM 图形化监控工具,优点就是简单易用,我们可以非常直观的观察堆内存的使用情况,当然仅仅为堆内存,所以jvmstat 具有一定的局限性。 

 

        2.JConsole

        JConsole 是一个基于JMX 的图形监控工具,用于连接正在运行的JVM,与前面提到的jvmstat 类似的图形监控程序,可以以图表化的形式显示各种数据,并可通过远程连接监视远程的服务器VM 情况,此类工具可以较直观观察各种变化,但比较耗费资源。

        在JDK 1.5之后JConsole 已经成为JDK 自带监控工具,只需要在命令行状态下输入:

jconsole

        即可开启监控界面,界面如下:


        选择本地监控还是远程监控。

        进入监控界面后,会有一些基本选项可以选择,例如内存,线程,类等。

        选择内存选项后会显示堆与非堆内存等使用情况。

 

        概述选项:监控JVM和一些监控变量的信息。 
        内存选项:内存使用信息 
        线程选项:线程使用信息 
        类选项:类调用信息 
        VM摘要:JVM的信息 
        MBean选项:所有MBean 的信息MBean 展示了所有以一般形式注册到JVM 上的MBean 。MBean 允许你获取所有的平台信息,包括那些不能从其他标签页获取到的信息。注意,其他标签页上的一些信息也在MBean 这里显示。另外,你可以使用 MBean 标签管理你自己的应用的MBean。

 

        评论:与jvmstat 相比jconsole 就要强大的多了,从jconsole 中可以不光光监控到内存情况,还可以监控例如:线程,类,JVM参数等等高级信息。jconsole 还可以根据内存等使用情况手动执行GC 清理,这给我们的程序监控与良好运行带来了很大的便利。值得注意的是jconsole可以同时监控多个JVM 进程,在jconsole 中可以轻松的切换监控界面。


        3.Java VisualVM 
        JDK1.6 中Java 引入了一个新的可视化的JVM 监控工具:Java VisualVM。

        VisualVM 官方网站:http://visualvm.java.net/

        VisualVM 提供在Java 虚拟机上运行的Java 应用程序的详细信息。在VisualVM 的图形用户界面中可以方便、快捷地查看多个Java 应用程序的相关信息。


        运行VisualVM 非常简单,只需在命令行状态下输入:

jvisualvm

 
        VisualVM 便会自动启动,之后可以看到如下界面:



        通过起始页的提示进入相应的学习文档页面,里面有丰富的教程及讲解,并且都是中文的!


        "本地"列表下列出在本机运行的Java 程序的资源占用情况,如果本地有Java程序在运行的话启动VisualVM 即可看到相应的程序名,点击程序名打开相应的资源监控菜单,以图形的形式列出程序所占用的CPU、Heap、PermGen、类、线程的 统计信息,如图所示:


概述选项

监控选项

线程选项
   

        "远程"列表下列出远程主机上的Java 程序的资源占用情况,但需要在远程主机上运行jstatd 守护程序

        更多的应用及用法可以参照官方文档:

        http://visualvm.java.net/zh_CN/gettingstarted.html?Java_VisualVM

 

        评论:VisualVM 较JConsole 又强大了不少,其中又增加了许多功能与信息,通过VisualVM 可以更加直观的观察各种内容的详细信息。

 

        4.YourKit Java Profiler

        YourKit 是一个用于分析Java 与.NET 应用程序的智能工具,YourKit Java Profiler 已经被IT 专业人士与分析师公认为最好的分析工具。通过YourKit 技术解决方案可以以非常高的的专业水平分析出CPU 与内存使用情况。
        YourKit Java Profiler 还获得了Java Developer's Journal(Java 开发者杂志)的编辑选择奖,其功能的强大可见一斑。

        YourKit 网站官方:http://www.yourkit.com
        YourKit Java Profiler 下载地址:http://www.yourkit.com/download/index.jsp
        YourKit Java Profiler 提供了Java 与.NET 两种语言的支持,并且支持基本所有操作系统,目前最新版本为12.0.6。


        下载界面如下:


 

        下载并安装:
 

 

        安装完成后一次运行会提示授权本软件,对于个人用户其实可以免费使用YourKit Java Profiler,只需在下载页面下方填写相应授权信息即可获得授权码,如图所示:

 

        授权后运行会显示欢迎页面,如下所示:

        在欢迎页面可以选择监控运行中的JVM 进程,安装eclipse 插件,使用教程等等内容。

 

        勾选"Show all running JVMs"会在下拉列表中显示所有JVM 进程,选择其中之一点击即可进入监控界面:
        上图即为CPU 相关信息的监控界面,从此界面可以观察CPU 的使用情况等信息。

 

        还可以打开内存管理界面,查看JVM 中各种内存的占有情况:

 

        当然YourKit Java Profiler 的功能绝不仅仅于此,我们还可以参照YourKit Java Profiler 管文档学习更加高级的监控功能使用,官方教程地址:http://www.yourkit.com/docs/index.jsp

 

       评论:YourKit Java Profiler 可以说异常的强大,你能想到的YourKit Java Profiler 基本都实现了,所以如此之强悍的工具已经不需要我多说什么,甚至你还可以购买它的付费版本,相信绝对会让小伙伴们惊呆的。本节也只是抛砖引玉的作用,更多更高级的特性需要大家在实践中自我摸索。

 

       图形化的监控工具可以使我们在程序运行期间更直观的查看当前程序的运行情况,从而做出相应判断,监控程序可以让工作更加便利,但构建一个稳定高效的系统却是不断追求的终极目标。
 

5
4
分享到:
评论

相关推荐

    基于SpringBoot2.0 实现的jvm远程监工图形化工具,可以同时监控多个web应用,支持远程监控.zip

    包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python...

    boot-actuator:基于SpringBoot2.0 实现的jvm远程监工图形化工具,可以同时监控多个web应用,支持远程监控

    简介项目介绍基于SpringBoot2.0 实现的jvm远程监工图形化工具,可以同时监控多个web应用该项目是借鉴另个一开源项目JavaMonito初始版演变而来,剔除了一些功能,增加了可远程监控模块,只需要在需要监控的项目集成...

    【转】Java内存泄露_JVM监控工具介绍jstack_jconsole_jinfo_jmap_jdb_jstat

    NULL 博文链接:https://kennylee26.iteye.com/blog/1402260

    Cubic java应用诊断工具.rar

    其中,JConsole和JVisualVM是图形化工具,可以用来监控JVM的运行状态、查看内存和CPU使用情况等;而jmap、jstack和jcmd是命令行工具,可以用来诊断内存泄漏、死锁等问题。 JConsole 作用:JConsole是一个监视和管理...

    Mongodb-WeAdmin:操作简单的Mongodb图形化Web工具,基于Spring Boot2.0,前端采用layerUI实现

    :基于Spring Boot实现的监控远程服务器多个Java应用JVM性能图形化工具 :一种简单的微信小程序个人博客 :SpringBoot版Mongodb工具 效果图如下 登录 显示所有的数据源 显示指定数据源下的表 查询指定表的数据 表...

    jprofiler_windows-x64_9_2_1

    监控jvm的图形工具,内附激活码,下载后,按照激活码激活即可使用

    一款简单微信小程序个人博客。后端基于SpringBoot实现

    : 基于Spring Boot 实现的监控远程服务器多个Java应用JVM性能图形化工具 : 一款简单微信小程序个人博客 : SpringBoot版Mongodb工具 项目介绍 简单微信笔记小程序 文档 项目架构 SpringBoot2.0 h2数据库 用于微信小...

    jconsole源码

    jconsole – jconsole是基于Java Management Extensions (JMX)的实时图形化监测工具,这个工具利用了内建到JVM里面的JMX指令来提供实时的性能和资源的监控,包括了Java程序的内存使用,Heap size, 线程的状态,类的...

    leetcode手册JAVA-JavaLearn:学习java的路线和项目实战,javalearner快来看一看吧!

    图形化(如Swing) 1.1.2 JVM 类加载机制 字节码执行机制 jvm内存模型: GC垃圾回收 jvm性能监控与故障定位 jvm调优 1.1.3 并发与多线程 并发编程基础 线程池 锁 并发容器 原子类 juc并发工具类 1.2 数据结构与算法 ...

    alfresco-nagios:IcingaNagios设置为监视Alfresco CommunityEnterprise 5.x

    通过JMX监控的Alfresco一个众所周知的例子是可,但这个最有趣的信息是关系到企业版(EE)。 通用的直接监视命令(不是基于JMX的命令)也可以通过OOTB支持工具网页脚本(系统性能,活动会话和SOLR)用于Community ...

    java开源包1

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包11

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包2

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包3

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包6

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包5

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包10

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包4

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

    java开源包8

    JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的...

Global site tag (gtag.js) - Google Analytics