Jconsole和VisualVM使用指南

2023-12-06 14:18

本文主要是介绍Jconsole和VisualVM使用指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

    • 1. Jconsole
      • 1.1 Jconsole简介
      • 1.2 Jconsole常用功能
    • 2. VisualVM
      • 2.1 VisualVM简介
      • 2.2 安装插件
    • 3.总结

上篇文章我们一起学习了MAT工具的使用方式,除了第三方提供的JVM工具之外,JDK也自带了Jconsole和VisualVM,功能也都很强大;

1. Jconsole

1.1 Jconsole简介

JDK1.5开始新增的java监控和管理控制吧,它提供对JVM内存、线程和类的监控;
可以直接在java的安装目录,找到bin/jconsole.exe双击打开:
在这里插入图片描述
首先选择你想要连接的java进程,点击连接;
在这里插入图片描述
包括一些堆、类、线程、CPU情况;

1.2 Jconsole常用功能

Jconsole的使用还是相对比较简单;通过Jconsole主要可以了解到堆、类、线程的情况;
1.2.1 内存信息
在这里插入图片描述
可以查看堆(Eden、S0、S1、Old)的使用情况,了解这些使用情况为你的JVM参数优化提供重要的参考指标;

1.2.2 线程信息
这块可以查看当前进程中开启的线程数量,以及检查线程之间是否存在死锁问题;
运行这段代码:

public class JconsoleTest {public static void main(String[] args) throws InterruptedException {Thread thread1 = new Thread(new Lock1(),"线程A:");Thread thread2 = new Thread(new Lock2(),"线程B:");thread1.start();thread2.start();}
}
class Resource{// 对静态资源加锁,相当于是对class加锁;public static String resource1 = "lock1";public static String resource2 = "lock2";
}class Lock1 implements Runnable{@Overridepublic void run(){try{while(true){synchronized(Resource.resource1){Thread.sleep(3000);synchronized(Resource.resource2){System.out.println("lock1获取资源2");}}}}catch(Exception e){e.printStackTrace();}}
}
class Lock2 implements Runnable{@Overridepublic void run(){try{while(true){synchronized(Resource.resource2){Thread.sleep(3000);synchronized(Resource.resource1){System.out.println("lock2获取资源1");}}}}catch(Exception e){e.printStackTrace();}}
}

在这里插入图片描述
可以看出,线程A已经阻塞,想获取一个字符串,但被线程B占用;

2. VisualVM

2.1 VisualVM简介

VisualVM与Jconsole相比,VisualVM的功能更全面,并且它有比较好用的插件功能;
在java的安装目录下,找到 jvisualvm.exe 双击打开:
在这里插入图片描述
从这首页可以看出一些内存情况,选择线程,可以查看是否有死锁问题,如果有,点击生成 dump会生成一份dump文件;
在这里插入图片描述

2.2 安装插件

感兴趣的同学可以安装一个插件:VisualGC,看一下功能图,你就会爱上它:
在这里插入图片描述
2.2.1 下载插件
下载地址:https://visualvm.github.io/pluginscenters.html

2.2.2 安装插件
在这里插入图片描述

3.总结

通过上面的小例子,差不多就对这两款工具有了大致的了解,其它工作中真正用它的机会不多,并且工作中大部分都接入的有APM,但本地开发过程中遇到问题,拿出来排查个线程、JVM等相关问题,还是非常有帮助的;

这篇关于Jconsole和VisualVM使用指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/462120

相关文章

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Java JSQLParser解析SQL的使用指南

《JavaJSQLParser解析SQL的使用指南》JSQLParser是一个Java语言的SQL语句解析工具,可以将SQL语句解析成为Java类的层次结构,还支持改写SQL,下面我们就来看看它的具... 目录一、引言二、jsQLParser常见类2.1 Class Diagram2.2 Statement

正则表达式r前缀使用指南及如何避免常见错误

《正则表达式r前缀使用指南及如何避免常见错误》正则表达式是处理字符串的强大工具,但它常常伴随着转义字符的复杂性,本文将简洁地讲解r的作用、基本原理,以及如何在实际代码中避免常见错误,感兴趣的朋友一... 目录1. 字符串的双重翻译困境2. 为什么需要 r?3. 常见错误和正确用法4. Unicode 转换的

Python Selenium动态渲染页面和抓取的使用指南

《PythonSelenium动态渲染页面和抓取的使用指南》在Web数据采集领域,动态渲染页面已成为现代网站的主流形式,本文将从技术原理,环境配置,核心功能系统讲解Selenium在Python动态... 目录一、Selenium技术架构解析二、环境搭建与基础配置1. 组件安装2. 驱动配置3. 基础操作模

Spring Validation中9个数据校验工具使用指南

《SpringValidation中9个数据校验工具使用指南》SpringValidation作为Spring生态系统的重要组成部分,提供了一套强大而灵活的数据校验机制,本文给大家介绍了Spring... 目录1. Bean Validation基础注解常用注解示例在控制器中应用2. 自定义约束验证器定义自

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

2025最新版Python3.13.1安装使用指南(超详细)

《2025最新版Python3.13.1安装使用指南(超详细)》Python编程语言自诞生以来,已经成为全球最受欢迎的编程语言之一,它简单易学易用,以标准库和功能强大且广泛外挂的扩展库,为用户提供包罗... 目录2025最新版python 3.13.1安装使用指南1. 2025年Python语言最新排名2.

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

Rsnapshot怎么用? 基于Rsync的强大Linux备份工具使用指南

《Rsnapshot怎么用?基于Rsync的强大Linux备份工具使用指南》Rsnapshot不仅可以备份本地文件,还能通过SSH备份远程文件,接下来详细介绍如何安装、配置和使用Rsnaps... Rsnapshot 是一款开源的文件系统快照工具。它结合了 Rsync 和 SSH 的能力,可以帮助你在 li