【JVM学习】Jconsole 配置jmx 监控JVM

2023-05-16

1. 配置jvm启动参数

在使用jconsole监控jvm之前,首先需要先打开jmx。启动jvm时,添加以下参数。jmx通过58088端口对外开放。

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=58088 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

2.启动jconsole

找到jdk安装的目录,在 $INSTALL_PATH/bin 目录下,执行 ./jconsole

3.配置jmx 连接信息

填写机器IP地址,及jmx端口。

点击连接,即可打开jconsole 可视化界面,对java 应用运行情况进行分析。
在这里插入图片描述

4.查看分析

4.1 概览

在概览页面,可以查看堆内存、线程、类、CPU占用率等信息。

在这里插入图片描述

4.2 内存

内存页面,可以查看JVM各个区域内存使用情况。包括:堆内存PS Old Gen、PS Eden Space、PS Survivor Space、Metaspace、Code Cache、Compressed Class Space.
在这里插入图片描述
在这里插入图片描述

4.2.1 堆内存使用量

PS Old Gen 区

老年代内存占用情况,老年代存放经过多次年轻代垃圾回收都没有回收掉的对象。与此同时,对于大对象的分配内存,也是存放在老年代。大对象判断阈值:-XX:PretenureSizeThreshold=0 ** 默认值是0,意味着任何对象都会现在新生代分配内存。**

PS Eden Space 区

新生代内存占用情况,新创建的对象,都是在堆内存年轻代分配。

PS Survivor Space 区

幸存者区内存占用情况,存放年轻代垃圾回收时被标记对象,两个survivor区用于复制算法。

4.2.2 非堆内存使用量

Metaspace

元空间区

Code cache

代码缓存区,它缓存的是JIT(Just in Time)编译器编译的代码,简言之codeCache是存放JIT生成的机器码(native code)。

当然JNI(Java本地接口)的机器码也放在codeCache里,不过JIT编译生成的native code占主要部分。

字节码编译:.java -> .class

机器码编译:.class -> JIT 机器码

JVM 执行一段class字节码,分两种方式:解释执行 和 编译执行。

解释执行是指,在执行字节码时,逐行解释成机器码,然后再执行。

编译执行是指,提前将经常被调用(达到一定次数)的方法字节码编译成功机器码,并进行各层次的优化,提升执行效率,缓存至codeCache里,避免重复编译。

Compressed Class Space

压缩类空间。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 线程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BcMtqYI9-1668758730570)(/Users/rong.li/Library/Application Support/typora-user-images/image-20221117201921172.png)]

4.4 类

在这里插入图片描述

4.5 VM概览

在这里插入图片描述

4.6 MBean

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【JVM学习】Jconsole 配置jmx 监控JVM 的相关文章

  • 是否可以使 java.lang.invoke.MethodHandle 与直接调用一样快?

    我正在比较性能MethodHandle invoke以及直接静态方法调用 这是静态方法 public class IntSum public static int sum int a int b return a b 这是我的基准 Stat
  • 将 JVM 字节码往返于文本表示的故障安全方法

    我正在寻找一种在 JVM 类文件和文本表示之间往返的故障安全方法 一项严格的要求是 只要文本表示形式保持不变 生成的往返 JVM 类文件在功能上与原始 JVM 类文件完全相同 此外 文本表示必须是人类可读和可编辑的 应该可以对文本表示进行小
  • JVM 规范更新

    JVM 规范第 2 版的日期是 1999 年 自那时以来 我应该考虑学习哪些重要更新 如动态调用 这当然是为了了解现代 JVM 实现的内部原理 特别是 HotSpot 访问此链接http wikis sun com display HotS
  • Java 调试器:是否可以有选择地挂起线程?

    在我过去作为 C C 程序员的生活中 在某些平台和调试器组合上可以选择性地挂起线程 到达断点后 可以发出命令 或单击 GUI 中的内容 来冻结 解除冻结 挂起 唤醒 线程 在执行进一步的步骤 下一步 运行 继续命令时 挂起的线程将不会执行任
  • 关于如何处理涉及 API 集成的项目的想法

    我是一名学生 正在开发一个 Java 应用程序 该应用程序将充当一个应用程序的 Web 服务调用与另一个应用程序的 JMX API 之间的 转换层 这两个应用程序驻留在同一网络中的两个不同系统上 因此 本质上 它涉及一个可交付程序 该程序将
  • Java 堆被无法访问的对象淹没

    我们的 Java EE 应用程序开始出现一些严重问题 具体来说 应用程序在启动后几分钟内就运行了高达 99 的老年代堆 不会抛出 OOM 但实际上 JVM 没有响应 jstat 显示老年代的大小根本没有减少 没有垃圾收集正在进行 并且kil
  • 热点 JVM 字节码解释器是跟踪 JIT 吗?

    这个问题几乎说明了一切 我一直在寻找答案 甚至通过 VM 规范 但我没有明确说明 No 不过 还有一些其他 JVM 具有跟踪 JIT HotPath http HotPath GoogleCode Com and Maxine http L
  • STS 无法在我的计算机上启动

    我试图在 eclipse 上设置 Spring mvc 项目 基本项目进展顺利 但是使用 Restful 服务 Jersey 等开始出现许多与依赖项相关的错误 所以我打算转到STS 我正在使用 STS 2 9 2 它给我 无法创建java虚
  • Kafka 消费者通过 JMX 滞后

    我正在尝试监控 Kafka 0 10 中消费者组的滞后情况 我们的消费者在 Kafka 而不是 ZooKeper 中跟踪他们的偏移量 这意味着我可以使用以下方式获取数据 bin kafka consumer groups sh bootst
  • 如何将 JMX 绑定到特定接口?

    我目前正在启动我的 Java VMcom sun management jmxremote 属性 以便我可以通过 JConsole 连接到它进行管理和监控 不幸的是 它监听机器上的所有接口 IP 地址 在我们的环境中 经常会出现多个 Jav
  • 如何计算Java数组的内存大小?

    我知道如何通过添加三个部分来计算Java对象的内存大小 标头 属性 引用 我还知道Java数组也是一个对象 但是当我读到 Understanding the JVM Advanced Features and Best Practices
  • Java 中的引用变量里面有什么?

    我们知道对象引用变量保存表示访问对象的方式的位 它不保存对象本身 但保存诸如指针或地址之类的东西 我正在阅读 Head First Java 第 2 版 一书 书中写道 第 3 章第 54 页 在 Java 中我们并不真正知道什么是 在引用
  • Java 接口合成方法生成,同时缩小返回类型

    我有 2 个接口和 2 个返回类型 interface interfaceA Publisher
  • Scala 中的多个类型下限

    我注意到tuple productIterator总是返回一个Iterator Any 想知道是否无法设置多个下限 因此它可能是最低公共超类型的迭代器 我尝试并搜索了一下 但只发现this https stackoverflow com q
  • 监控 Java 应用程序上的锁争用

    我正在尝试创建一个小基准 在 Groovy 中 以显示几个同步方法上的高线程争用 当监控自愿上下文切换时 应该会出现高争用 在 Linux 中 这可以通过 pidstat 来实现 程序如下 class Res private int n s
  • 当目标是属性时,@Throws 不起作用

    在看的同时这个问题 https stackoverflow com q 47737288 7366707 我注意到申请 Throws to a get or setuse site 没有影响 此外 唯一有效的目标 for Throws ar
  • 如何在Java中计算对象的数字年龄[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道Java中对象的年龄 当我们使用new关键字时 Java中用户定义的对象被创建 但是什么时候它会被销毁 是跨越JVM的perm
  • Java:为什么它使用固定数量的内存?或者它如何管理内存?

    JVM 似乎使用了一些固定数量的内存 至少我经常看到参数 Xmx 对于最大尺寸 和 Xms 对于初始大小 这表明 我感觉 Java 应用程序不能很好地处理内存 我注意到一些事情 即使一些非常小的示例演示应用程序也会加载大量内存 也许这是因为
  • 抛出 Java 异常时是否会生成堆栈跟踪?

    这是假设我们不调用 printstacktrace 方法 只是抛出和捕获 我们正在考虑这样做是为了解决一些性能瓶颈 不 堆栈跟踪是在构造异常对象时生成的 而不是在抛出异常对象时生成的 Throwable 构造函数调用 fillInStack
  • 如果使用的 JVM 是 x86 或 x64,则以不同的方式解决 Maven 依赖关系?

    我设置了一个 Maven 存储库来托管一些 dll 但我需要我的 Maven 项目根据使用的 JVM 是 x86 还是 x64 下载不同的 dll 例如 在运行 x86 版本 JVM 的计算机上 我需要从存储库下载 ABC dll 作为依赖

随机推荐

  • 反汇编定位代码崩溃位置_4

    原帖 xff1a http blog csdn net xiao article details 23177577 GDB如何从Coredump文件恢复动态库信息 标签 xff1a GDBcoredumpso调试动态库 2014 04 08
  • C链表反转

    节点 struct Note int value Note pNext typedef struct Note PList 生成一个链表 Note GenerateList 输出一个链表 void PrintList Note pHead
  • FtpClient.storeFile返回false解决方法

    今天在利用FTP将客户端文件存储到服务器端时 xff0c 在调用ftpClient storeFile方法后 xff0c 总是返回false xff0c 在百度之后 xff0c 有提到说添加一行 ftpClient enterLocalPa
  • 压缩软件介绍

    压缩软件介绍 一 xff0e 关于WINRAR压缩 ZIP 1 最大优点就是普及率 2 相对RAR格式来说它的压缩速度会要快一些 RAR 1 对比ZIP来说RAR是一次长足的进步 它能够提供更好的压缩比率 2 支持固实压缩模式 对存在很多重
  • ubuntu 使用MobaXterm和cpolar配置外网访问ssh和vnc

    目录 1 首先下载MobaXterm xff1a mobaxterm 2 注册并在ubuntu服务器上安装cpolar xff1a cpolar 安装说明 xff1a 3 保留固定TCP地址 xff08 此步骤可跳过 xff0c 但需要每天
  • copy-webpack-plugin HookWebpackError: Not supported

    前言 运行项目时 xff0c 控制台报错 HookWebpackError Not supported 定位问题发现与 copy webpack plugin 相关 本文主要记录下解决方案 一 控制台报错 二 copy webpack pl
  • 字符串子串的查找

    1 考虑用标准函数库中 strstr 函数 包含文件 xff1a string h 函数名 strstr 函数原型 xff1a extern char strstr char str1 char str2 功能 xff1a 从字符串str1
  • Ubuntu20.04下,搭建hexo个人博客

    一些说明和资源 所使用到的软件版本 xff1a UbuntuNginxGithexo20 04 LTS1 18 02 25 15 4 0 其他说明 xff1a 这里所演示的是在 VirtualBox 中进行的 xff0c 实际工作场景可以是
  • **打开virt-manager报错:** (virt-manager:6079): Gtk-WARNING **: 19:57:38.863: cannot open display:

    打开virt manager报错 virt manager 6079 Gtk WARNING 19 57 38 863 cannot open display 安装 xorg x11 font utils包后可以正常打开 xff1a roo
  • 火影推荐程序连载52-什么是Serilog?

    上文说到Nlog日志框架 xff0c 感觉它功能已经很强大 xff0c 今天给大家介绍一个很不错的日志框架Serilog xff0c 根据我的了解 xff0c 感觉它最大的优势是 xff0c 结构化日志 xff0c 它输出的日志是Json的
  • C语言学习记录——矩阵转换(定义一个数组实现或定义两个数组实现)

    目录 题目要求 代码 xff08 定义两个数组 xff09 运行结果图 xff08 定义两个数组 xff09 代码 xff08 定义一个数组 xff09 运行结果图 xff08 定义一个数组 xff09 简易思路图解 编辑 小结 题目要求
  • 【总结】解决Linux机器重装后-免密登录报错问题

    文章目录 1 背景2 问题现象3 原因分析4 解决方法 1 背景 某天 xff0c 因为安装某个软件 xff0c 开发机器的ssh 免密登录被玩坏了 xff0c 随后所有人都登录不上机器 xff0c 导致系统必须重新安装 2 问题现象 机器
  • 【总结】dubbo 服务注册消费正常,但调用失败

    问题描述 dubbo 服务正常注册和消费 xff0c 但调用dubbo 服务时报错 错误信息如下 xff1a org apache dubbo rpc RpcException Failed to invoke the method che
  • 【总结】使用livy 提交spark任务时报错Connection refused

    问题描述 使用livy 提交spark任务时报错 22 06 27 15 14 50 INFO RetryInvocationHandler Exception while invoking getClusterMetrics of cla
  • 【总结】shell 脚本命令执行结果赋值给变量无效

    背景 想要写一个脚本 xff0c 从某台服务器上抓取某个服务的进程信息 将某个命令执行结果保存到变量中 问题现象 xff1a 使用反引号方式获取不到值 这个问题很怪异 xff0c 我上次按照同样的方式 xff0c 获取别的服务进程信息 xf
  • 【总结】maven 打包刷新下载依赖卡死

    问题现象 idea 打包或者刷新maven依赖 xff0c 总是出现卡死情况 之后就不动了 使用同样maven 命令打包也一样 这个问题以前出现过 xff0c 但后来又几次是关机重启idea xff0c 或者重启电脑 xff0c 或者有时候
  • 【总结】mysql 忽然连接不上报CJException: null错误

    目录 问题现象解决办法分析原因 问题现象 某天开发人员告诉我 xff0c spark大数据任务执行时 xff0c docker 环境上的mysql 连接不上了 于是乎 xff0c 打开spark查看日志 xff0c 发现如下错误 xff1a
  • 图像去噪算法简介

    一 xff0c 背景 随着各种数字仪器和数码产品的普及 xff0c 图像和视频已成为人类活动中最常用的信息载体 xff0c 它们包含着物体的大量信息 xff0c 成为人们获取外界原始信息的主要途径 然而在图像的获取 传输和存贮过程中常常会受
  • 解决Ubuntu不能登录的问题(总卡在登录界面)

    首先别慌 xff01 按下Ctrl 43 Alt 43 F1进入命令行 然后手动输入用户名和密码 xff1a 例如用户名是linux xff0c 密码 xff1a xxxx 然后成功登录 xff0c 这个时候除了没有图形化界面 xff0c
  • 【JVM学习】Jconsole 配置jmx 监控JVM

    1 配置jvm启动参数 在使用jconsole监控jvm之前 xff0c 首先需要先打开jmx 启动jvm时 xff0c 添加以下参数 jmx通过58088端口对外开放 Dcom sun management jmxremote Dcom