JConsole使用简述

jdk 自带监控工具 Jconsole 介绍与使用 我们在测试java项目的需要对应用程序的资源消耗和性能指标进行监控,特别是进行性能测试的时候,监控尤为重要。点击一个线程在线程列表的名称,显示该线程的信息的权利,包括线程的名称,状态、阻塞和等待的次数、堆栈跟踪。它可以监控本地的jvm,也可以监控远程的jvm,也可以同时监控几个jvm。在选项卡底部的详细信息部分显示类的加载,因为Java虚拟机开始的总数,当前加载和卸载的数量。概览选项卡中显示CPU使用率,堆内存使用率,线程数,Java VM中加载的类的监控信息。图表曲线加载的类的数量随着时间的推移。 阅读详情

JConsole描述

JConsole图形用户界面是一种监视工具,符合Java管理扩展(JMX)规范。JConsole使用Java虚拟机(Java VM)的广泛工具来提供有关在Java平台上运行的应用程序的性能和资源消耗的信息。

在Java SE 6中,对JConsole进行了更新,以显示Windows和GNOME桌面的外观(其他平台将呈现标准的Java图形外观)。本文档中的屏幕截图取自Windows XP上运行的界面的一个实例。

JConsole启动

JConsole的可执行文件到JDK_HOME / bin中可以找到 ,其中JDK_HOME是在安装了Java开发工具包(JDK)的目录。如果此目录在您的系统路径中,则可以通过在命令(shell)提示符下键入jconsole来启动JConsole 。否则,您必须键入可执行文件的完整路径。

JConsole命令语法

您可以使用JConsole监视本地应用程序(即与JConsole在同一系统上运行的本地应用程序)和远程应用程序(即在其他系统上运行的那些远程应用程序)。

注意使用JConsole监视本地应用程序对于开发和创建原型很有用,但不建议在生产环境中使用,因为JConsole本身会消耗大量系统资源。建议进行远程监视,以将JConsole应用程序与要监视的平台隔离。

有关语法的完整参考JConsole的 命令,请参阅手册页JConsole的命令:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jconsole.html

创建与本地进程的连接

在这里插入图片描述
Local Process选项列出了以与JConsole相同的用户ID启动的,在本地系统上运行的所有Java VM,以及它们的进程ID,类和/或自变量信息。要将JConsole连接到您的应用程序,请选择要监视的应用程序,然后单击“连接”按钮。本地进程列表包括在以下类型的Java VM中运行的应用程序。

JConsole连接到远程进程
当连接对话框打开时,您还可以选择连接到远程进程。

要监视在远程Java VM上运行的进程,必须提供以下信息。

主机名:运行Java VM的计算机的名称。

端口号:启动Java VM时指定的JMX代理端口号。

用户名和密码:要使用的用户名和密码(仅当通过需要密码身份验证的JMX代理监视Java VM时才需要)

在这里插入图片描述

JConsole选项卡

将JConsole连接到应用程序后,JConsole由六个选项卡组成。

概述:显示有关Java VM和监视值的概述信息。

内存:显示有关内存使用的信息。

线程:显示有关线程使用的信息。

类:显示有关类加载的信息。

VM:显示有关Java VM的信息。

MBean:显示有关MBean的信息。

概述选项卡

提供了一种简单的方法来关联以前只能通过在多个选项卡之间切换来获得的信息。

保存图表数据
JConsole允许您将图表中显示的数据保存在逗号分隔值(CSV)文件中。要保存图表中的数据,只需右键单击任何图表,选择“ 将数据另存为…”,然后指定要在其中保存数据的文件。您可以通过这种方式保存JConsole的不同选项卡中显示的任何图表中的数据。

CSV格式通常用于电子表格应用程序之间的数据交换。可以将CSV文件导入电子表格应用程序,并可以在这些应用程序中创建图表。数据显示为两个或多个命名列,其中第一列表示时间戳。将文件导入电子表格应用程序后,通常需要选择第一列并将其格式更改为适当的“日期”或“日期/时间”。

内存选项卡

内存”选项卡带有一个“执行GC”按钮,您可以随时单击以执行垃圾回收。该图表显示了Java VM随时间推移对堆和非堆内存以及特定内存池的内存使用情况。可用的内存池取决于所使用的Java VM版本。对于HotSpot Java VM,用于串行垃圾回收的内存池如下。

Eden Space(堆):最初为大多数对象分配内存的池。

幸存者空间(堆):包含在Eden空间的垃圾回收中幸存的对象的池。

永久生成(堆):包含幸存者空间中已存在一段时间的对象的池。

永久生成(非堆):包含虚拟机本身的所有反射数据(例如类和方法对象)的池。对于使用类数据共享的Java VM,这一代被分为只读和读写区域。

代码缓存(非堆):HotSpot Java VM还包括代码缓存,其中包含用于编译和存储本机代码的内存。

通过从“ 图表”下拉菜单中的选项中进行选择,可以显示不同的图表以绘制这些内存池的使用情况 。同样,单击右下角的“堆”或“非堆”条形图将切换显示的图表。最后,您可以通过从“ 时间范围”下拉菜单中的选项中进行选择,来指定跟踪内存使用情况的 时间范围。

有关这些内存池的更多信息,请参见下面的垃圾回收。

在详细信息区域显示了几种当前内存度量:

已用:当前使用的内存量,包括所有对象可访问和不可访问的内存。

承诺:保证Java VM可使用的内存量。提交的内存量可能会随时间变化。Java虚拟机可能会向系统释放内存,并且已提交的内存量可能会少于启动时最初分配的内存量。提交的内存量将始终大于或等于已使用的内存量。

最大:可用于内存管理的最大内存量。其值可能会更改或不确定。如果Java VM尝试将已使用的内存增加到大于已提交的内存,则内存分配可能会失败,即使已使用的数量小于或等于max(例如,当系统的虚拟内存不足时)也是如此。

GC时间:花费在垃圾收集上的累计时间和调用总数。它可能有多行,每行代表Java VM中使用的一种垃圾收集器算法。

右下方的条形图显示了堆和非堆内存中内存池消耗的内存。当使用的内存超过内存使用量阈值时,该条将变为红色。您可以通过MemoryMXBean的属性设置内存使用量阈值。

堆和非堆内存
Java VM管理两种内存:堆内存和非堆内存,这两种内存都是在Java VM启动时创建的。

堆内存是Java VM从中为所有类实例和数组分配内存的运行时数据区域。堆的大小可以固定或可变。垃圾收集器是一个自动内存管理系统,可以回收对象的堆内存。

非堆内存包括Java虚拟机内部处理或优化所需的所有线程和内存之间共享的方法区域。它存储每个类的结构,例如运行时常量池,字段和方法数据,以及方法和构造函数的代码。方法区域在逻辑上是堆的一部分,但是根据实现的不同,Java VM可能不会对其进行垃圾回收或压缩。像堆内存一样,方法区域的大小可以固定或可变。方法区域的内存不必是连续的。

除了方法区域之外,Java VM可能还需要用于内部处理或优化的内存,该内存也属于非堆内存。例如,即时(JIT)编译器需要内存来存储从Java VM代码转换而来的本机代码,以实现高性能。

内存池和内存管理器
内存池和内存管理器是Java VM内存系统的关键方面。

一个内存池表示Java虚拟机管理的存储区。Java VM具有至少一个内存池,并且它可以在执行期间创建或删除内存池。内存池可以属于堆内存,也可以属于非堆内存。

一个内存管理器管理一个或多个存储池。垃圾收集器是一种内存管理器,负责回收无法访问的对象使用的内存。一台Java VM可能具有一个或多个内存管理器。它可能在执行期间添加或删除内存管理器。一个内存池可以由多个内存管理器管理。

垃圾收集
垃圾回收(GC)是Java VM如何释放不再引用的对象所占用的内存。通常将具有活动引用的对象视为“活动”,将未引用(或不可访问)的对象视为“死对象”。垃圾回收是释放死对象使用的内存的过程。GC使用的算法和参数可能会对性能产生巨大影响。

Java HotSpot VM垃圾收集器使用分代GC。分代GC利用了大多数程序都遵循以下概括的观察结果。

它们创建许多寿命短的对象,例如迭代器和局部变量。

它们创建一些寿命很长的对象,例如高级持久性对象。

分代GC将内存分为几代,并为每一代分配一个或多个内存池。当某个世代用完其分配的内存时,VM在该内存池上执行部分GC(也称为次要集合),以回收死对象使用的内存。此部分GC通常比完整GC快得多。

Java HotSpot VM定义了两代:年轻的一代(有时称为“苗圃”)和老一代。年轻一代包括一个“伊甸园空间”和两个“幸存者空间”。VM首先将所有对象分配给Eden空间,大多数对象在那里死亡。执行次要GC时,VM会将所有剩余的对象从Eden空间移至幸存者空间之一。VM将在幸存者空间中生存了足够长的对象移动到旧一代中的“终身”空间。当使用权的一代填满时,会有一个完整的GC,它通常要慢得多,因为它涉及所有活动对象。永久生成保留虚拟机本身的所有反射数据,例如类和方法对象。
在这里插入图片描述
如果垃圾收集器已成为瓶颈,则可以通过定制世代大小来提高性能。使用JConsole,可以通过试验垃圾收集器参数来研究性能指标的敏感性。有关更多信息,请参阅使用5.0 HotSpot VM调整垃圾收集。
https://www.oracle.com/technetwork/java/gc-tuning-5-138395.html

线程选项卡

在这里插入图片描述
左下角的“线程”列表列出了所有活动线程。如果在“过滤器”字段中输入字符串,则“线程”列表将仅显示名称包含您输入的字符串的那些线程。单击“线程”列表中的线程名称,以在右侧显示有关该线程的信息,包括线程名称,状态和堆栈跟踪。

该图显示了一段时间内活动线程的数量。显示了两行。

红色:峰值线程数

蓝色:活动线程数。

线程MXBean提供了“线程”选项卡未涵盖的其他一些有用的操作。

findMonitorDeadlockedThreads:检测对象监视器锁上是否有任何线程死锁。该操作返回一个死锁线程ID数组。

getThreadInfo:返回线程信息。这包括名称,堆栈跟踪和线程当前被阻止的监视器锁(如果有)以及哪个线程持有该锁,以及线程争用统计信息。

getThreadCpuTime:返回给定线程消耗的CPU时间

您可以通过在MBeans树中选择Threading MXBean,通过MBeans选项卡访问这些附加功能。该MXBean列出了用于访问被监视的Java VM中的线程信息的所有属性和操作。请参阅监视和管理MBean。

检测死锁线程
要检查您的应用程序是否已陷入死锁(例如,您的应用程序似乎已挂起),可以通过单击“检测死锁”按钮来检测死锁的线程。如果检测到任何死锁线程,这些线程将显示在“线程”选项卡旁边的新选项卡中,如图3-9所示。

类选项卡

在这里插入图片描述

该图表绘制了随时间推移加载的类的数量。

红线是已加载的类的总数(包括随后卸载的类)。

蓝线是当前加载的类数。

该选项卡底部的“详细信息”部分显示自Java VM启动以来已加载的类总数,当前已加载的数量和已卸载的数量。您可以通过选中右上角的复选框,将类加载的跟踪设置为详细输出。

VM 概要选项卡

在这里插入图片描述

收集DUMP文件

设置JVM启动参数
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/opt/jvmdump

当堆内存溢出时,存储快照。

线上查看堆信息

查看java堆中对象的相关信息,包含数量以及占用的空间大小
1.查看堆的详细信息

	jmap -heap PID 

2.查看java堆中对象的相关信息,包含数量以及占用的空间大小,class name

	jmap -histo PID 
jconsole使用介绍(图文) 大家在学习java的时候,难免会对jvm进行一些深入的了解。推荐大家使用jdk下面的jconsole.exe来辅助理解jvm的一些概念 立即下载

相关推荐

第 3 天:Actor 是什么?创建你的第一个游戏对象!

本文详细介绍 Actor 在 Unreal Engine 5 中的作用,并通过 C++ 创建你的第一个游戏对象。你将学习 Actor 的生命周期(BeginPlay、Tick)、如何添加组件(Static Mesh),并让 Actor 在游戏世界中运作。同时提供 常见问题解决方案,助你快速上手 UE5 C++ 开发!🎮 跟随本教程,构建属于你的第一个游戏对象!

m0_37643873的博客 2630

JConsole使用教程

使用JConsole可以查看Java应用程序的MBean信息,可以查看和修改MBean的属性和操作,进行动态管理和调整。JConsole是一个Java虚拟机的监控和管理工具,可以监控Java应用程序的内存使用、线程和类信息等。监控Java应用程序的类信息,包括已加载的类数、未加载的类数、类加载器等,可以查找类加载异常等问题。监控Java应用程序的内存使用情况,可以查看堆内存和非堆内存的使用情况,以及内存泄漏情况。类:显示Java应用程序的类信息,包括已加载的类数、未加载的类数、类加载器等。

zhaoliubao1的博客 8450

centos8 安装新版bind9源码

bind一直在更新,使用了比较多的新架构 本文记录新版本的bind怎么安装,以及其依赖库的安装 1. 在https://www.isc.org/download/ 下载最新stable版本bind,本文以bind-9.17.9.tar.xz为例。将软件传到/root目录下。 也可以到https://ftp.isc.org/isc/bind9/ 下载更多历史版本 2. 安装基本的依赖库,像gcc、amake等 3. 需要安装libuv库,但直接用yum时可能安装不全 建议使用源码安装,需要安..

linggang_123的博客 2539

JConsole-的使用

JConsole是一种Java监控和管理控制台工具,可以用于监视Java虚拟机(JVM)的性能和资源利用情况。它提供了一种图形化界面,可以实时查看JVM的运行状态、内存使用情况、线程活动、垃圾回收等信息,以及执行一些管理操作。使用JConsole可以帮助开发人员和系统管理员进行性能调优、内存泄漏排查和故障诊断,从而提高应用程序的可靠性和性能。总之,JConsole是一个强大的Java监控和管理工具,可以帮助开发人员和系统管理员实时监控和管理Java应用程序的性能和资源利用情况。

xhmico的博客 1万+

DOTween回调函数的隐藏技巧:优化你的Unity动画流程

本文深入探讨了DOTween回调函数在Unity动画开发中的高级应用技巧,帮助开发者优化动画流程。通过分析回调机制、链式应用模式和大规模动画系统管理,提升性能与可维护性,特别适合需要高效处理复杂动画场景的Unity开发者。

weixin_27945229的博客 319

【C/C++ 性能优化】了解cpu 从而进行C++ 高效编程

在当代软件开发领域,CPU(Central Processing Unit,中央处理器)的性能优化一直是一个核心议题。尤其是对于C++开发者而言,无论是在Linux平台还是其他操作系统中,都需要深刻理解CPU的工作原理以及如何充分利用CPU资源,以确保软件运行的高效性和稳定性。正如计算机科学家Donald Knuth在《计算机程序设计的艺术》中所说:“过早的优化是万恶之源”,然而,这并不意味着我们应该忽视性能优化——相反,我们需要在正确的时间以正确的方式进行优化。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 4748

Jconsole使用介绍

一、Jconsole介绍 Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到。它用于连接正在运行的本地或者远程的JVM,对运行 在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界面。而且本身占用的服务器内 存很小,甚至可以说几乎不消耗。 它可以监控本地的jvm,也可以监控远程的jvm,也可以同时监控几个jvm。 二、Jconsole打开方式 可...

晴天的博客 3207

DBC中如何实现报文传输类型属性的配置

AUTOSAR中CAN报文的传输类型主要有三种,周期型,事件型和混合型。周期型:按固定时间间隔自动发送,无需额外的触发条件。事件型:当信号值变化或满足内部条件时立即发送。混合型:默认按周期发送,但事件触发时可提前发送。

sunchengl的博客 304

JDK神器之JConsole(Java监视与管理控制台)

JDK神器之jconsole!无需复杂操作,展示内存使用、线程状态、类加载等关键信息,让你一眼看透Java程序内部状况,轻松揪出性能瓶颈!

zwz1342的博客 2476

大模型之Spring AI实战系列(二十一):Spring AI + MCP + 本地文件系统实战指南

在上一篇文章中,我们学习了如何使用 Spring AI 集成 Model Context Protocol (MCP),并通过 Brave Search 实现了互联网搜索能力的接入。本文将继续深入 Spring AI 的 MCP 实战能力,介绍如何将 **本地文件系统** 封装为 LLM 可调用的工具

寻道AI,探索AI无限可能! 2519

YOLOv5改进之---EIoU,SIoU,AlphaIoU,FocalEIoU,Wise-IoU

本文主要针对yolov5的iou损失函数进行改进,主要涵盖EIoU,SIoU,AlphaIoU,FocalEIoU,Wise-IoU这几种损失

qq_41920323的博客 1465

JConsole 在 Linux 上的使用

如果 JMX 正常工作,你会看到 Java 进程的监控界面。JConsole 连接 Java 进程后,会展示。启动 Java 应用时,需要加上。端口被映射到本地,避免安全风险。

qq_1763467007的博客 2159

orangepi香橙派用户名及密码修改和VNC远程登陆

1、修改 /etc/passwd用户信息文件 vim /etc/passwd #admin❌503:501::/home/admin:/bin/bash #把用户名admin改成rest #test❌503:501::/home/test:/bin/bash 2、修改 /etc/shadow用户密码文件 vim /etc/shadow #admin:Dnakfw28zf38w:8764:0:168:7::: #由于密码加密方式存放,只修改用户名即可(密码不变) #test:Dnakfw28zf38w:876

weixin_40227845的博客 5663

JConsole工具使用

转自:https://www.cnblogs.com/baihuitestsoftware/articles/6405580.html#top Jconsole,Java Monitoring and Management Console。Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到。它用于连接正在运行的本地或者远程的JVM,对运行在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界面。而且本身占用的服务器内存很小,甚至可以说几乎不消耗。 一、.

渣渣 2477

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

linux怎么用jconsole_jconsole监控linux系统的jvm使用

1.在linux系统下载安装jdk和tomcat2.配置tomcat参数[root@node3 ~]# vim /usr/local/tomcat-7.0.64Front/bin/catalina.shJAVA_OPTS="$JAVA_OPTS-Dcom.sun.management.jmxremote --远程登陆-Dcom.sun.management.jmxremote.port=9...

weixin_39926639的博客 817

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Jconsole工具使用

JConsole 是一个内置 Java 性能分析器,可以从命令行(直接输入jconsole)或在 GUI shell (jdk\bin下打开)中运行。它用于对JVM中内存,线程和类等的监控。可使用JTop插件。它可以监控本地的jvm,也可以监控远程的jvm,也可以同时监控几个jvm。这款工具的好处在于,占用系统资源少,而且结合Jstat,可以有效监控到java内存的变动情况,以及引起变动的原因。在项目追踪内存泄露问题时,很实用。

旧巷里的旧少年 1474

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jconsole工具使用

Jconsole,Java Monitoring and Management Console。 Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到。它用于连接正在运行的本地或者远程的JVM,对运行在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界面。而且本身占用的服务器内存很小,甚至可以说几乎不消耗。 一、介绍 JConsole 是一个内置 Ja...

jmlqqs的博客 832

JConsole使用

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

赵英超的博客 2572

JConsole使用手册详解

一篇Sun项目主页上介绍JConsole使用的文章,前段时间性能测试的时候大概翻译了一下以便学习,今天整理一下发上来,有些地方也不知道怎么翻,就保留了原文,可能还好理解点,呵呵,水平有限,翻的不好,大家多多包涵。 JConsole毕竟是JDK自带的东西,功能虽然没有一些商业软件那么强大,但是稳定性好,在大压力情况下也不会发生什么问题。而且,提供了相对全面的系统监控功能,还是值得一用的。

Java海洋 4万+

jconsole是否可以在生产环境使用_使用rmi jmx JCONSOLE远程监控JVM

[root@localhost SPECjbb2005]# ls /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/management/jmxremote.access jmxremote.password.template management.properties snmp.acl.template需要先在jmxremote....

weixin_39614322的博客 368

MAC下使用Jconsole

Jconsole是JDK自带的分析JVM的工具,在Mac中的具体使用方式,如下: 命令打开 vi ~/.bash_profile 找到 Java 的路径。 cd 到该路径下。 命令 open . 打开finder 访达。 点击jconsole,运行。输入你机器的IP。 端口号是 -Dcom.sun.management.jmxremote.port=9123 (启动命令中这个配置的就是监控端口号)。没有用户名和口令的时候连接就好。 ...

xupengbo527的博客 2572

jconsole远程连接的使用

把controlRole和monitorRole的注释移除即可,这就是你等下用到的登录账户和密码。在项目做性能压测的时候,对程序进行分析,需要用到jconsole工具,以前都没用过,学习了一下。注意:这个端口号不能与程序端口号一样,需要单独的、不重复的端口号,否则会报端口占用。这步一定要做,否则会收到jmxremote.password文件不存在的报错。打开jdk安装目录 -> bin ,找到jconsole.exe 双击打开。点击连接后,提示不安全连接,这时候不慌,点击。

InterestAndFun的博客 7672

JConsole的使用

JConsole的使用:   JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM。可以监控本地和远程的java程序。关于jconsole的使用方法说明如下: 假设你的jdk的安装目录为:C:\Program Files\Java\jdk1.6.0_10,jdk环境变量已经配置好。 1.启动jconsole的两种方式: 1)直接运行C:\Program Files\Java...

skyj129的专栏 279

使用JConsole监控weblogic

使用JConsole监控weblogic 1、确保WLS使用Sun JDK,java-version(如果是使用JRockit JVM,一般用在Intel架构和Windows平台上,则可以使用JRockit Mission Control进行监控) 2、修改WLS配置文件 windows修改E:\bea\user_projects\domains\base_domainJMX\bin\set

上善若水,水善利万物而不争。 7490

linux使用jconsole

从JDK5开始就已经增加了对VM的监控功能jconsole,JDK1.6也有了进一步的改进。 然而对linux特别是Ubuntu用户来说,会碰到一些小问题。 在终端进入java_home/bin目录下, # jconsole 结果报错如下: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 原

jwcjlu的专栏 1万+
上一篇: java并发之synchronized关键字
下一篇: Clean Code 总结
DreamArray
博客等级 码龄10年 2粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值