JVM系列-001-JVM监控工具

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。如需授权请联系微信:878799579 https://blog.csdn.net/qq_878799579/article/details/83300996 JVM系列-001-JVM监控工具在我们安装的jdk里面的bin目录下有一个jconsole.exe程序。
版权声明:本文为博主原创文章,未经博主允许不得转载。如需授权请联系微信:878799579 https://blog.csdn.net/qq_878799579/article/details/83300996

JVM系列-001-JVM监控工具

在我们安装的jdk里面的bin目录下有一个jconsole.exe程序。这就是一个JVM的监控工具。我们可以直接打开它,如果配置了环境变量,也可以在命令中直接输入jconsole命令来打开它
在这里插入图片描述

  • 在控制台输入jconsole,当我们打开jconsole之后,界面如下:
    在这里插入图片描述

  • 本地进程中列出了本地所有运行的java进程(使用jps命令可以查看到当前所有的java进程)。如下图
    在这里插入图片描述

注:jps进程只是在当时出现,敲击完成之后就结束了。

在jconsole中选择了进程,点击连接就能进入监控。

  • 下图为连接后的jvm监视和管理控制台页面,此页面可以体现出堆栈使用情况。以及可以直接调用GC方法进行垃圾回收。

在这里插入图片描述

Jconsole界面由以下六个选项卡组成:

  1. Summary选项卡:显示JVM和被监视值的汇总信息
  2. Memory选项卡:显示内存使用信息。
  3. Threads选项卡:显示线程使用信息。
  4. Classes选项卡:显示类(class)加载信息。
  5. MBeans选项卡:显示MBeans信息
  6. VM选项卡:显示JVM信息。

下面我们写一段测试代码来看一下对应内存消耗曲线图

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName:TestJConsole
 * @Description: 测试JConsole
 * @Author: bilaisheng
 * @Date 2018/10/23 6:12
 */
public class TestJConsole {

    private byte[] bytes = new byte[1024*5];

    public static void main(String[] args) {
        // 给使用jconsole连接的程序留下5秒时间

        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("开始测试 :");
        fill(1000);
    }

    /**
     * ===========================================================
     * @Description:不断的在List中添加对象,使得堆内存消耗量增加
     * @param: count
     * @return: void
     * @Author: bilaisheng
     * @date: 2018/10/23 6:15
     * ===========================================================
     */
    private static void fill(int count) {

        List jConsoleList = new ArrayList();
        for (int i = 0; i <count ; i++) {
            // 减慢程序运行速度,否则速度过快容易抛出java.lang.OutOfMemoryError: Java heap space
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            jConsoleList.add(new TestJConsole());
        }
    }
}

在这里插入图片描述

监控结果如下图

  • 大家可以看到jconsole.exe本身只有17K,其实实现功能是在jdk的lib目录下中的tools实现的此功能
    在这里插入图片描述
目录
相关文章
|
监控 Java Unix
6个Java 工具,轻松分析定位 JVM 问题 !
本文介绍了如何使用 JDK 自带工具查看和分析 JVM 的运行情况。通过编写一段测试代码(启动 10 个死循环线程,分配大量内存),结合常用工具如 `jps`、`jinfo`、`jstat`、`jstack`、`jvisualvm` 和 `jcmd` 等,详细展示了 JVM 参数配置、内存使用、线程状态及 GC 情况的监控方法。同时指出了一些常见问题,例如参数设置错误导致的内存异常,并通过实例说明了如何排查和解决。最后附上了官方文档链接,方便进一步学习。
3432 4
|
Arthas 监控 Java
(十一)JVM成神路之性能调优篇:GC调优、Arthas工具详解及各场景下线上最佳配置推荐
“在当前的互联网开发模式下,系统访问量日涨、并发暴增、线上瓶颈等各种性能问题纷涌而至,性能优化成为了现时代开发过程中炙手可热的名词,无论是在开发、面试过程中,性能优化都是一个常谈常新的话题”。
2223 3
|
JavaScript 前端开发 Java
jvm的jshell,学生的工具
本文介绍了JVM的jshell工具,它为Java平台添加了REPL(读取-评估-打印循环)功能,使得学习、探索编码和原型代码变得更加便捷,但作者认为其在实际开发中较为鸡肋。
303 2
jvm的jshell,学生的工具
|
Arthas Prometheus 监控
监控堆外使用JVM工具
监控堆外使用JVM工具
666 7
|
Arthas 监控 数据可视化
JVM进阶调优系列(7)JVM调优监控必备命令、工具集合|实用干货
本文介绍了JVM调优监控命令及其应用,包括JDK自带工具如jps、jinfo、jstat、jstack、jmap、jhat等,以及第三方工具如Arthas、GCeasy、MAT、GCViewer等。通过这些工具,可以有效监控和优化JVM性能,解决内存泄漏、线程死锁等问题,提高系统稳定性。文章还提供了详细的命令示例和应用场景,帮助读者更好地理解和使用这些工具。
|
存储 监控 算法
JVM调优深度剖析:内存模型、垃圾收集、工具与实战
【10月更文挑战第9天】在Java开发领域,Java虚拟机(JVM)的性能调优是构建高性能、高并发系统不可或缺的一部分。作为一名资深架构师,深入理解JVM的内存模型、垃圾收集机制、调优工具及其实现原理,对于提升系统的整体性能和稳定性至关重要。本文将深入探讨这些内容,并提供针对单机几十万并发系统的JVM调优策略和Java代码示例。
614 2
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
527 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
缓存 监控 算法
吃透 JVM 诊断方法与工具使用
【8月更文挑战第4天】深入了解并掌握JVM诊断需把握几大要点:1) 熟悉JVM内存模型,如堆、栈及方法区;2) 掌握垃圾回收机制与算法;3) 运用工具如`jps`(查看Java进程)、`jstat`(监控运行状态)、`jmap`(生成堆快照)、`jhat`(分析堆快照)、`jstack`(检查线程栈); 4) 利用专业工具如Eclipse Memory Analyzer分析堆转储文件查找内存泄漏; 5) 动态监控与调整JVM参数; 6) 结合日志分析性能瓶颈。通过实战案例加深理解,有效应对JVM性能问题。
316 5
|
运维 监控 Java
(十)JVM成神路之线上故障排查、性能监控工具分析及各线上问题排错实战
经过前述九章的JVM知识学习后,咱们对于JVM的整体知识体系已经有了全面的认知。但前面的章节中,更多的是停留在理论上进行阐述,而本章节中则更多的会分析JVM的实战操作。
942 1
|
监控 Java 开发者
Java面试题:如何使用JVM工具(如jconsole, jstack, jmap)来分析内存使用情况?
Java面试题:如何使用JVM工具(如jconsole, jstack, jmap)来分析内存使用情况?
1333 2