一、JConsole是什么

从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码。

二、如何启动JConsole

  1. 如果是从命令行启动,使 JDK 在 PATH 上,运行 jconsole 即可。
  2. 如果从 GUI shell 启动,找到 JDK 安装路径,打开 bin 文件夹,双击 jconsole。

当分析工具弹出时(取决于正在运行的 Java 版本以及正在运行的 Java 程序数量),可能会出现一个对话框,要求输入一个进程的 URL 来连接,也可能列出许多不同的本地 Java 进程(有时包含 JConsole 进程本身)来连接。如图所示:

想分析那个程序就双击那个进程。

三、如何设置JAVA程序运行时可以被JConsolse连接分析

  1. 本地程序(相对于开启JConsole的计算机),无需设置任何参数就可以被本地开启的JConsole连接(Java SE 6开始无需设置,之前还是需要设置运行时参数 -Dcom.sun.management.jmxremote )
  2. 无认证连接 (下面的设置表示:连接的端口为8999、无需认证就可以被连接)

    Java代码

    1. -Dcom.sun.management.jmxremote.port=8999 \
    2. -Dcom.sun.management.jmxremote.authenticate=false \
    3. -Dcom.sun.management.jmxremote.ssl=false
  3. 如果考虑到安全因素,需要认证,需要安全连接,也是可以搞定的。参考:Monitoring and Management Using JMX Technology - Java SEMonitoring and Management Guide

四、JConsole如何连接远程机器的JAVA程序(举例说明)

1、写一个简单的一直运行的JAVA程序,运行在某台机器上如(192.168.0.181)

Java代码

  1. java -cp . -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.managent.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false JConsoleTest

2、另外一台机器进行连接

可以直接使用命令:

Java代码

  1. jconsole.exe 192.168.0.181:8999

也可以在已经打开的JConsole界面操作 连接->新建连接->选择远程进程->输入远程主机IP和端口号->点击“连接”,如图:

然后就会进入分析界面:

性能分析

下面说说如何分析,如何使用这六个标签

概述

概述很简单没啥说的,自己看看吧,不过值得一提的是对着图点击右键可以保存数据到CSV文件,以后可以使用其他工具来分析这些数据。

内存

这个比较有价值,参看堆内存,非堆内存,内存池的状况总体内存的分配和使用情况以及不同的GC进行垃圾回收的次数和时间。可以手动进行GC查看内存变化。

在分析JAVA内存问题进行调优时候非常有用,你要学习JVM内存模型,之后会发现这里的每个值都具有意义。

GC的算法和参数对性能有显著的影响,注意垃圾回收次数、时间、以及partial GC和full GC,调整你所使用的不同GC和以及各个GC下的参数,然后在这个视图下观察,以得到好的性能。

这里贴一下 Java HotSpot VM garbage collector 下generational GC 的各代的划分图:

关于GC,可以参考:Tuning Garbage Collection with the 5.0 Java Virtual Machine

线程

左下角显示所有的活动线程(如果线程过多,可以在下面的过滤栏中输入字符串过滤出你想要观察的线程)。点击某个显示会显示这个线程的名称、状态、阻塞和等待的次数、堆栈的信息。

统计图显示的是线程数目的峰值(红色)和当前活动的线程(蓝色)。

另外下面有个按钮“检测到死锁”,有时候会有用处。

没啥要说的。

VM摘要

也没啥要说的,看看吧,内存状况,操作系统...

MBean

这里可以有一些额外的操作。

插件

Java代码

  1. jconsole -pluginpath C:\Java\jdk1.6.0_22\demo\management\JTop\JTop.jar

一看便知,是个什么东西。

4. 可以添加我微信:17621616591
5. 可以添加我微信:17621616591
1:**拉勾Java高级工程师高薪训练营 (2021年2月左右完结超级推荐 年度热卖 Hot)

2**:**图灵-Java架构师(第二期,第三期,第四期)(四期同步更新Hot—四期是和鲁班的讲师一起讲的!)

3**:**开课吧-JavaEE企业级分布式高级架构师第十期(完结)

4**:**极客-架构师实https://static001.geekbang.org/static/common/browser_update/index.html战营P9(李运华)(新款 —同步更新)

5**:**开课吧-百万架构师第十期(P8)(更新中)

6**:**极客-小马哥项目实战营 (在更新)

7**:**开课吧-Java架构师P7进阶之路-技术专家(新课-在更新)

JConsole详解相关推荐

  1. JDK14性能管理工具:Jconsole详解

    文章目录 简介 JConsole 概览 内存 线程 类 VM信息 MBean 总结 简介 我们在开发java项目的时候,或多或少都会去用到Java的性能管理工具.有时候是为了提升应用程序的性能,有时候 ...

  2. 详解 Tomcat 的连接数与线程池

    原文出处:编程迷思 前言 在使用tomcat时,经常会遇到连接数.线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector). 在前面的文章 详解Tomcat配置文 ...

  3. 详解tomcat的连接数与线程池

    前言 在使用tomcat时,经常会遇到连接数.线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector). 在前面的文章 详解Tomcat配置文件server.xm ...

  4. 详解动态规划最长公共子序列--JavaScript实现

    前面两篇我们讲解了01背包问题和最少硬币找零问题.这篇将介绍另一个经典的动态规划问题--最长公共子序列.如果没看过前两篇,可点击下面链接. 详解动态规划最少硬币找零问题--JavaScript实现 详 ...

  5. tomcat线程释放时间_详解tomcat的连接数与线程池

    前言 在使用tomcat时,经常会遇到连接数.线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector). 在前面的文章 详解Tomcat配置文件server.xm ...

  6. Java虚拟机详解(五)------JVM参数(持续更新)

    JVM参数有很多,其实我们直接使用默认的JVM参数,不去修改都可以满足大多数情况.但是如果你想在有限的硬件资源下,部署的系统达到最大的运行效率,那么进行相关的JVM参数设置是必不可少的.下面我们就来对 ...

  7. 干货 | Tomcat 连接数与线程池详解

    转载自  干货 | Tomcat 连接数与线程池详解 前言 在使用tomcat时,经常会遇到连接数.线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector). 在 ...

  8. 用JDBC直连方式访问SQL Server 2005详解

    用JDBC直连方式访问SQL Server 2005详解 1.安装JDK,配置其环境变量:(笔者所用版本为1.6版) (1)从官方网http://java.sun.com/jdk下载安装文件. (2) ...

  9. 4大JVM性能分析工具详解,及内存泄漏分析方案

    谈到性能优化分析一般会涉及到: Java代码层面的,典型的循环嵌套等 还会涉及到Java JVM:内存泄漏溢出等 MySQL数据库优化:分库分表.慢查询.长事务的优化等 阿里P8架构师谈:MySQL慢 ...

  10. Java高并发编程详解系列-Java线程入门

    根据自己学的知识加上从各个网站上收集的资料分享一下关于java高并发编程的知识点.对于代码示例会以Maven工程的形式分享到个人的GitHub上面.   首先介绍一下这个系列的东西是什么,这个系列自己 ...

最新文章

  1. BZOJ2331:[SCOI2011]地板——题解
  2. 经验之谈|别再在CNN中使用Dropout了
  3. 【计算理论】图灵机 ( 非确定性图灵机 与 计算树 | 非确定性 | 非确定性图灵机 与 确定性图灵机 相互模仿 | 非确定性图灵机 -> 确定性图灵机 )
  4. ITK:将颜色贴图应用于图像
  5. 图像像素点赋值_Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像...
  6. form中action属性后面?传递参数 获取不到
  7. poj1958 Strange Towers of Hanoi 题解报告
  8. React组件生命周期-正确执行运行阶段的函数
  9. php apd,PHP debug 工具 之 APD
  10. 学习笔记--SQLyog的使用
  11. CARNIVAL包的介绍(根据生信技能树Jimmy老师分享的R包资料整理)
  12. python导入包的输入法_鼠须管输入法 傻瓜版配置 - 基于 rime_pro 增强包
  13. 携手业内专家赋能AI时代--EpiK铭识协议发起开源知识运动
  14. 怎么把mp4转换成html,html5-video – VLC:如何从mp4转换为webm
  15. linux 关闭桌面休眠,Linux关闭休眠和屏保模式
  16. mc服务器fabric安装位置,也许这是史上最详细的Fabric安装教程,助你在1.14/1.15安装mod...
  17. 关于眼镜的后续。。。。
  18. 全球案例 | 一家有着百年历史的航空公司如何扩展和转型,推动航空业创新
  19. myeclipse8.5 TPTP插件的使用问题
  20. 京东到家数据构造平台设计与实践

热门文章

  1. 这家估值83亿美元的公司,是「侠盗」还是「割韭菜」?
  2. 深度学习训练模型的硬件条件(点评)
  3. 前端学习笔记之品优购项目(一) 3.15
  4. coco2017数据集百度网盘链接
  5. 下三角99乘法表 C语言
  6. AD转换实验c语言原理图,我的AD/DA转换单片机实验,含原理图和源码
  7. adc0832工作原理详解_adc0834工作原理及AD转换
  8. 激光能类毕业论文文献都有哪些?
  9. nginx配置解决跨域问题
  10. 激光雷达RPLidar的配置(arduino和rasberrypi)