jconsole

从Java5开始,在JDK中自带的Java监控和管理控制台。

用于对JVM中内存、线程和类等的监控,是一个基于JMX(Java Management Extensions)的GUI性能监控工具。

官方文档:https://docs.oracle.com/javase/7/docs/technotes/guides/management/index.html

三种连接方式

1. Local

使用JConsole连接一个正在本地系统运行的JVM,并且执行程序的和运行JConsole的需要是同一个用户。JConsole使用文件系统的授权通过RMI连接到平台的MBean服务器上,这种本地连接的监控能力只有Sun的JDK具有。

2. Remote

使用下面的URL通过RMI连接器连接一个JMX代理,service:jmx:rmi://jndi/rmi://hostName"portNum/jmxrmi。JConsole为建立连接,需要在环境变量中设置mx.remote.credentials来指定用户名和密码,从而进行授权。

3. Advanced

使用一个特殊的URL连接JMX代理。一般情况使用自己定制的连接器而不是RMI提供的连接器来连接JMX代理,或者是一个使用JDK1.4的实现了JMX和JMX Remote的应用。

Visual VM

Visual VM是一个功能强大额多合一故障诊断和性能监控的可视化工具。

它集成了多个JDK命令行工具,使用Visual VM可用于显示虚拟机进程及进程的配置和环境细腻些(jsp,jinfo),监视应用程序的CPU、GC、堆、方法区及线程的信息(jstat、jstack)等,甚至代替JConsole。

在JDK6 Update 7 以后,Visual VM便作为JDK的一部分发布(在JDK/bin目录下)。

此外,Visual VM也可以作为独立的软件安装

下载地址:https://visualvm.github.io/index.html

插件

Visual VM的一大特点是支持插件扩展,并且插件安装非常方便。我们既可以通过离线下载插件文件*.nbm,然后在plugin对话框的已下载页面下,添加已下载的插件;也可以在可用插件页面下,在线安装插件。

插件下载地址:https://visualvm.github.io/pluginscenters.html

连接方式

1. 本地连接

监控本地Java进程的CPU、类、线程等

2. 远程连接

  1. 确定远程服务器的ip地址

  2. 添加JMX(通过JMX技术具体监控远端服务器哪个Java进程)

  3. 修改bin/catalina.sh文件,连接远程的tomcat

  4. .../conf中添加jmxremote.access和jmxremote.password文件

  5. 将服务器地址改为公网ip地址

  6. 设置阿里云安全策略和防火墙策略

  7. 启动tomcat,查看tomcat启动日志和端口监听

  8. JMX中输入端口号、用户名、密码登录

主要功能

  • 生成/读取堆内存快照

  • 查看JVM参数和系统属性

  • 查看运行中的虚拟机进程

  • 生成/读取线程快照

  • 程序资源的实时监控

  • 其他功能(JMX代理连接、远程环境监控、CPU分析和内存分析)

MAT

MAT(Memory Analyzer Tool)工具是一款功能强大的Java堆内存分析器。可以用于查找内存泄漏以及查看内存消耗情况。

MAT是基于Eclipse开发的,不仅可以单独使用。还可以作为插件的形式嵌入在Eclipse中使用。是一款免费的性能分析工具,使用起来非常方便。

下载地址:http://www.eclipse.org/mat/downloads.php

Profiler

在运行Java的时候有时候想测试运行时占用内存情况,这时候就需要使用测试工具查看了。在eclipse里面有MAT插件可以测试,而在IDEA中也有这么一个插件,就是JProfiler。

JProfiler是由ej-technologies公司开发的一款Java应用性能诊断工具。功能强大,但是收费。

下载地址:https://www.ej-technologies.com/products/jprofiler/overview.html

特点

  • 使用方便,界面操作友好(简单且强大)

  • 对被分析的应用影响小(提供模板)

  • CPU、Thread、Memory分析功能尤其强大

  • 支持对jdbc、nosql、jps、servlet、socket等进行分析

  • 支持多种模式(离线、在线)的分析

  • 支持监控本地、远程的JVM

  • 跨平台,拥有多种操作系统的安装版本(Windows、Mac OS、Linux、FreeBSD、Solaris、AIX、HP-UX)

主要功能

  • 方法调用:对方法调用的分析可以帮助你了解应用程序正在做什么,并找到提高其性能的方法

  • 内存分配:通过分析堆上对象、引用链和垃圾收集能帮你修复内存泄漏问题,优化内存使用

  • 线程和锁:JProfiler提供多种针对线程和锁的分析视图助你发现多线程问题

  • 高级子系统:许多性能问题都发生在更高的语义级别上。例如,对于JDBC调用,你可能希望找出执行最慢的SQL语句。JProfiler支持对这些系统进行集成分析

Arthas

Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。

Arthas支持JDK6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

官方网址:https://arthas.aliyun.com/zh-cn/

JMC

Java Mission Control(简称JMC),Java官方提供的性能强劲的工具。时一个用于对Java应用程序进行管理、监视、概要分析和故障排除的工具套件。

它包含一个GUI客户端,以及众多用来收集Java虚拟机性能数据的插件,如JMX Console(能够访问用来存放虚拟机各个子系统运行数据的MXBeans),以及虚拟机内置的高效profiling工具Java Flight Recorder(JFR)。

JMC的另一个优点就是:采用取样,而不是传统的代码植入技术,对应用性能的影响非常非常小,完全可以开着JMC来做压测(唯一影响可能是full gc多了)。