JConsole 在 Linux 上的使用

JConsole 在 Linux 上的使用指南

1. 启动 JConsole 远程监控 Linux 服务器上的 JVM 进程

1.1 修改 JMX 配置,允许远程访问

Linux 服务器 启动 Java 应用时,需要加上 -Djava.rmi.server.hostname=<服务器IP>,完整的启动参数如下:

java -Dcom.sun.management.jmxremote \-Dcom.sun.management.jmxremote.port=9010 \-Dcom.sun.management.jmxremote.rmi.port=9010 \-Dcom.sun.management.jmxremote.authenticate=false \-Dcom.sun.management.jmxremote.ssl=false \-Djava.rmi.server.hostname=你的服务器IP \-jar your-app.jar

参数说明:

  • -Djava.rmi.server.hostname=你的服务器IP:指定 JMX 监听的 IP 地址,必须是服务器的外网/内网 IP,否则无法远程连接。
  • -Dcom.sun.management.jmxremote.rmi.port=9010:显式指定 RMI 端口,避免 RMI 端口随机化。

1.2 允许防火墙放行端口

如果你的服务器有 防火墙,需要放行 9010 端口:

# Ubuntu/Debian
sudo ufw allow 9010# CentOS
sudo firewall-cmd --add-port=9010/tcp --permanent
sudo firewall-cmd --reload

1.3 在本地 Windows/Mac 连接

本地电脑(Windows/Mac) 上运行:

jconsole 你的服务器IP:9010

如果 JMX 正常工作,你会看到 Java 进程的监控界面。

1.4 使用 SSH 端口转发(更安全)

如果你不想直接暴露 9010 端口,可以使用 SSH 端口转发

ssh -L 9010:localhost:9010 user@你的服务器IP

然后在本地运行:

jconsole localhost:9010

这样,远程服务器的 9010 端口被映射到本地,避免安全风险。


最后结果如下:
在这里插入图片描述

2. JConsole 监控的 JVM 指标和图表

JConsole 连接 Java 进程后,会展示 JVM 运行状态的多个图表和指标,主要包括以下几个部分:

2.1 概述(Overview)

  • CPU 使用率(折线图)
  • 线程(Threads) 数量变化
  • 堆内存(Heap Memory Usage)(折线图)
  • 类加载(Classes) 统计

2.2 内存(Memory)

  • 堆(Heap)
    • Eden Space(伊甸区):新对象存放,GC 频繁。
    • Survivor Space(幸存者区):存活的对象从 Eden 复制到这里。
    • Old Gen(老年代):长期存活的对象存放区域。
  • 非堆(Non-Heap)
    • Metaspace(元空间):存放类元数据。
    • Code Cache(代码缓存区):存储 JIT 编译后的本地代码。

在这里插入图片描述

2.3 线程(Threads)

  • 线程状态统计
  • 线程堆栈(Thread Dump)

在这里插入图片描述

2.4 GC(Garbage Collection)

  • GC 次数和耗时(折线图)
    • Minor GC(年轻代 GC)
    • Major GC / Full GC(老年代 GC)

3. JDK 11 的 JVM 内存结构

3.1 堆(Heap)

  • 年轻代(Young Gen)
    • Eden 区:新对象存放,触发 Minor GC。
    • Survivor 区(S0/S1):存活对象从 Eden 复制到 Survivor 区。
  • 老年代(Old Gen)
    • 存放长期存活的对象,触发 Full GC。

3.2 非堆(Non-Heap)

  • Metaspace(元空间):JDK 8 移除了永久代(PermGen),改用 Metaspace 存放类元数据。
  • Code Cache(代码缓存区):存放 JIT 编译后的机器码。

3.3 线程栈(Thread Stack)

  • 栈帧(Stack Frame):存放方法调用的局部变量、操作数栈等。
  • 本地方法栈(Native Stack):存放 JNI 方法。

3.4 直接内存(Direct Memory)

  • ByteBuffer.allocateDirect() 申请,避免堆内存复制,提高 IO 性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33226.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C#学习】协程等待

来源GPT&#xff0c;仅记录学习 yield return WaitForEndOfFrame() 适用于 渲染结束后再执行代码&#xff0c;但 WebGL 可能不适合这个操作&#xff0c;会拖慢帧率。(渲染得太慢&#xff09; yield return null; 让代码在下一帧的 Update() 里继续运行&#xff0c;更加流畅。 …

店匠科技携手 PayPal 升级支付体验,助力独立站商家实现全球增长

在全球化电商竞争加剧的背景下,独立站为无数商户插上了通向事业成功的翅膀。然而,搭建店铺框架容易,真正实现有效运营却充满挑战。只有当各个环节如齿轮般严丝合缝,独立站运营才能更好地助推行进,实现稳健增长。如今,独立站商家面临着全链路运营的多重挑战。从品牌塑造、营销推…

【算法】数组、链表、栈、队列、树

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 持续更新中...数组、链表点击消除环形链表环形链表 II 栈、队列树 持续更新中… 数组、链表 点击消除 AB5 点击消除 这个题很容…

机器学习实战——音乐流派分类(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​​​ 1. 简介 音乐流派分类是音乐信息检索&#xff08;Music Information Retrieval, MIR&#xff09;中的一个重要任务&#xff0c;旨在…

【操作系统安全】任务2:用户与用户组

目录 一、用户与用户组介绍 1.1 用户 1.2 用户组 1.3 用户与用户组的关系 二、用户与用户组管理 2.1 用户管理 2.1.1 创建用户 2.1.2 设置用户密码 2.1.3 删除用户 2.2 用户组管理 2.2.1 创建用户组 2.2.2 删除用户组 2.2.3 将用户添加到用户组 三、影子账户创建…

色板在数据可视化中的创新应用

色板在数据可视化中的创新应用&#xff1a;基于色彩感知理论的优化实践 引言 在数据可视化领域&#xff0c;色彩编码系统的设计已成为决定信息传递效能的核心要素。根据《Nature》期刊2024年发布的视觉认知研究&#xff0c;人类大脑对色彩的识别速度比形状快40%&#xff0c;色…

Python数据类型进阶——详解

—— 小 峰 编 程 目录 1.整型 1.1 定义 1.2 独有功能 1.3 公共功能 1.4 转换 1.5 其他 1.5.1 长整型 1.5.2 地板除(除法&#xff09; 2. 布尔类型 2.1 定义 2.2 独有功能 2.3 公共功能 2.4 转换 2.5 其他 做条件自动转换 3.字符串类型 3.1 定义 3.2 独有功能…

生化混合智能技术(Biochemical Hybrid Intelligence, BHI)解析与应用

李升伟 综合 生化混合智能&#xff08;Biochemical Hybrid Intelligence, BHI&#xff09;是一种结合人工智能&#xff08;AI&#xff09;与生物化学技术的跨学科领域&#xff0c;旨在通过整合计算能力和生物系统的复杂性&#xff0c;推动药物研发、生物工程和医疗健康等领域的…

【原创】在高性能服务器上,使用受限用户运行Nginx,充当反向代理服务器[未完待续]

起因 在公共高性能服务器上运行OllamaDeepSeek&#xff0c;如果按照默认配置启动Ollama程序&#xff0c;则自己在远程无法连接你启动的Ollama服务。 如果修改配置&#xff0c;则会遇到你的Ollama被他人完全控制的安全风险。 不过&#xff0c;我们可以使用一个方向代理&#…

Elasticsearch 7.x入门学习-系统架构与工作流程

1 核心概念 1.1 索引&#xff08;Index&#xff09; Elasticsearch 索引的精髓&#xff1a;一切设计都是为了提高搜索的性能。 一个索引就是一个拥有相似特征的文档集合。比如说&#xff0c;你可以有一个客户数据的索引&#xff0c;另一个产品目录的索引&#xff0c;还有一个…

Mysql - 自增主键的使用细节

通过一些问题来谈论 Mysql 中的自增主键 默认情况下我们会使用自增主键&#xff0c;你觉得为什么要用自增的主键&#xff1f;有什么好处&#xff1f;自增主键的话&#xff0c;如果用 INT&#xff0c;会有 int 最大数限制&#xff0c;如果超过 int 最大数&#xff0c;你觉得应该…

《SQL性能优化指南:新手如何写出高效的数据库查询

新手程序员如何用三个月成为SQL高手&#xff1f;万字自学指南带你弯道超车 在数据为王的时代&#xff0c;掌握SQL已成为职场新人的必修课。你可能不知道&#xff0c;仅用三个月系统学习&#xff0c;一个零基础的小白就能完成从数据库萌新到SQL达人的蜕变。去年刚毕业的小王就是…

UE5.5 Niagara初始化粒子模块

粒子生成模块列表是每个创建的粒子都会调用一次对应的模块。此阶段中的模块设置每个粒子的初始值。粒子将从上到下的顺序执行模块。 下面&#xff0c;将列一下粒子生成常用的模块。 Initialize Particle 初始化粒子 所有粒子必需的基础模块&#xff0c;用于初始化粒子的基本属…

蓝耘携手通义万相2.1:引领AI创作革新,重塑视觉体验

前言 在人工智能技术迅猛发展的时代&#xff0c;AI算力平台成为推动产业升级的关键力量。蓝耘元生代智算云平台作为领先的智能计算平台&#xff0c;致力于为企业和研究机构提供高效、稳定的AI算力支持。近期&#xff0c;该平台对通义万相2.1进行了全面适配和优化&#xff0c;为…

【开源免费】基于SpringBoot+Vue.JS光影视频平台(JAVA毕业设计)

本文项目编号 T 239 &#xff0c;文末自助获取源码 \color{red}{T239&#xff0c;文末自助获取源码} T239&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

JVM 垃圾回收器的选择

一&#xff1a;jvm性能指标吞吐量以及用户停顿时间解释。 二&#xff1a;垃圾回收器的选择。 三&#xff1a;垃圾回收器在jvm中的配置。 四&#xff1a;jvm中常用的gc算法。 一&#xff1a;jvm性能指标吞吐量以及用户停顿时间解释。 在 JVM 调优和垃圾回收器选择中&#xff0…

VSCode 搭建C++编程环境 2025新版图文安装教程(100%搭建成功,VSCode安装+C++环境搭建+运行测试+背景图设置)

名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。——苏轼《稼说送张琥》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、VScode下载及安装二、安装 MinGW-w64 工具链三、Windows环境变量配置四、检查 M…

FANUC机器人几种常用的通讯网络及接口

FANUC机器人几种常用的通讯网络及接口 Devicenet 网络通讯接口&#xff0c;接口为5针线 (规定用的机架为 81-84&#xff09; PROFIBUS 网络通讯接口&#xff0c;针脚为2针&#xff08;规定用的机架为 67&#xff09; Intemet 网络通讯接口&#xff08;常用的网线接口&#xf…

分布式锁技术全景解析:从传统锁机制到MySQL、Redis/Redisson与ZooKeeper实现

文章目录 一、分布式锁介绍1.1 为什么需要分布式锁1.2 什么是分布式锁&#xff1f;1.3 分布式锁特点 二. 传统锁回顾2.1商品超卖演示2.2 JVM锁演示2.3 JVM锁失效的三种情况2.3.1 多例模式2.3.2 事务2.3.3 分布式集群 三. 基于mysql实现分布式锁3.1 一条SQL3.2 悲观锁3.3 乐观锁…

【GPT入门】第18课 langchain介绍与API初步体验

【GPT入门】langchain第一课 langchain介绍与API初步体验 1. langchain介绍定义特点1. 模块化与灵活性2. 链式调用机制3. 数据连接能力4. 记忆管理功能5. 提示工程支持6. 可扩展性 2.langchain核心组件架构图3. 最简单的helloworld入门 1. langchain介绍 LangChain 是一个用于…