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.mzph.cn/web/72172.shtml

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

相关文章

个人记录,Unity资源解压和管理插件

就是经典的两个AssetStudio 和 Ripper 没有什么干货&#xff0c;就是记录一下&#xff0c;内容没有很详细 AssetStudio 说错了&#xff0c;AssetStudio比较出名&#xff08;曾经&#xff09;&#xff0c;但好像堕落了 是&#xff0c;AssetBundlExtractor 这个工具有个好处就…

编译skia

1.准备工具 (1)vs2019,到微软官方下载下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux (2)ninja,下载地址:Releases ninja-build/ninja GitHub (3)gn,下载地址:https://chrome-infra-packages.appspot.com/p/gn/gn/windows-amd64 (4)skia,下载地址:git …

vue 知识点整理

1.data为什么是一个函数而不是对象 维度对象形式函数形式数据隔离性所有实例共享同一对象&#xff0c;导致数据污染每个实例拥有独立数据副本复用安全性不适用于可复用组件支持组件安全复用语言机制引用传递引发副作用函数返回值实现作用域隔离&#xff08;闭包&#xff09;框…

DeepSeek-Open WebUI部署

1.DeepSeek部署-Win版本 2.DeepSeek部署-Linux版本 3.DeepSeek部署-一键部署(Linux版本) 4.DeepSeek部署-进阶版本(LinuxGPU) 5.DeepSeek部署-基于vLLM部署 前面部署了vLLM版本以后&#xff0c;访问它比较麻烦。如何才能更好的实现访问呢&#xff0c;这个就是我们今天要讲的…

(vue)elementUi中el-upload上传附件之后 点击附件可下载

(vue)elementUi中el-upload上传附件之后 点击附件可下载 handlePreview(file) {console.log(file)const fileUrl https://.../zzy/ file.urlconst a document.createElement(a)a.href fileUrla.download file.namea.style.display none// a.setAttribute(download, file.…

你认为 Java 的优势是什么?

你认为 Java 的优势是什么? 回答重点 我觉得可以从跨平台、垃圾回收、生态、面向对象四个方面来阐述。 跨平台 首先 Java 是跨平台的,不同平台执行的机器码是不一样的,而 Java 因为加了一层中间层 JVM,所以可以做到一次编写多平台(如 Windows、Linux、macOS)运行,即…

SpringBoot——Maven篇

Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的工具。它具有许多特性&#xff0c;其中一些重要的特性包括&#xff1a; 1. 自动配置&#xff1a;Spring Boot 提供了自动配置的机制&#xff0c;可以根据应用程序的依赖和环境自动配置应用程序的各种组件&#xff…

搭建基于chatgpt的问答系统

一、语言模型&#xff0c;提问范式与 Token 1.语言模型 大语言模型&#xff08;LLM&#xff09;是通过预测下一个词的监督学习方式进行训练的&#xff0c;通过预测下一个词为训练目标的方法使得语言模型获得强大的语言生成能力。 a.基础语言模型 &#xff08;Base LLM&…

leetcode0056. 合并区间 - medium

1 题目&#xff1a;合并区间 官方难度 - 中等 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1…

系统开发资源

一、前端篇 1.1 菜鸟CSS教程 1.2 HTML/CSS/JS 在线工具 二、后端篇 三、其他篇 3.1 菜鸟官网 3.2 黑马程序员学习路线 3.3 根据地区获取经纬度

计算机视觉cv2入门之图像的读取,显示,与保存

在计算机视觉领域&#xff0c;Python的cv2库是一个不可或缺的工具&#xff0c;它提供了丰富的图像处理功能。作为OpenCV的Python接口&#xff0c;cv2使得图像处理的实现变得简单而高效。 示例图片 目录 opencv获取方式 图像基本知识 颜色空间 RGB HSV 图像格式 BMP格式 …

k8s面试题总结(十五)

1.如何使用Kubernetes进行多环境部署&#xff08;如开发&#xff0c;测试和生产环境&#xff09;&#xff1f; 使用命名空间&#xff08;namespaces&#xff09;&#xff1a; 命名空间是用于逻辑隔离和资源分组的一种方式&#xff0c;可以为每个环境创建单独的命名空间。 2.使…

linux中yum和wget指令的区别

yum 和 wget 都是 Linux 上的下载工具&#xff0c;但它们的用途、下载方式和适用场景不同。以下是它们的 主要区别&#xff1a; 1. yum 是软件包管理器&#xff0c;wget 是文件下载工具 功能yumwget用途安装、更新和管理 RPM 软件包从 HTTP/HTTPS/FTP 下载文件工作方式通过 yu…

性能优化:服务器性能影响网站加载速度分析

问题&#xff1a;网站访问加载慢是受部署服务器的核数、带宽、内存影响吗&#xff1f;&#xff1f; 文章目录 前言一、服务器核数&#xff08;CPU&#xff09;二、带宽三、内存&#xff08;RAM&#xff09;四、其他潜在影响因素五、排查与优化步骤六、总结 前言 网站访问加载速…

【python】一文掌握 Conda 指令 (anaconda备忘清单)

文章目录 入门常用基础命令环境与包管理包与源管理更改环境导出环境配置其它额外提示这是开始使用 conda 命令的快速参考备忘单,初次学习可参考 这里 参考: Anaconda文档官网命令Cheat sheetConda cheatsheet PDF入门 常用基础命令 命令说明conda info查看 conda 的一系列基…

Qt:绘图API

目录 初识绘图 绘图API的使用 绘制形状(QPaintEvent) 绘制文字(画笔QPen) 内部填充(画刷QBrush) 绘制图片(QPixmap) 初识绘图 我们前面学习 Qt 主要是学 Qt 的各种控件&#xff0c;本质上都是画出来的 都是一些常用的东西&#xff0c;Qt 已经提前画好了&#xff0c;拿过…

【附JS、Python、C++题解】Leetcode面试150题(9)——三数之和

一、题目​​​​​ 15. 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足&#xff1a; i!j、i!k 且 j! k &#xff0c;同时还满足&#xff1a;nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意…

开源、创新与人才发展:机器人产业的战略布局与稚晖君成功案例解析

目录 引言 一、开源&#xff1a;机器人产业的战略布局 促进技术进步和生态建设 吸引人才和合作伙伴 建立标准和网络效应 降低研发风险与成本 二、稚晖君&#xff1a;华为"天才少年计划"的成功典范 深厚的技术积累与动手能力 强烈的探索和创新意识 持续公开…

Android笔记:Android平台下SVG格式的解析与实践

在移动应用开发的广阔天地里,开发者们始终致力于打造视觉效果卓越、适配各类设备屏幕的优质应用。SVG(Scalable Vector Graphics,可缩放矢量图形)作为基于 XML 的图形格式,以其鲜明特性,为 Android 开发者提供了实现这一愿景的关键路径。接下来,本文将全方位深入解析在 …

mac本地部署Qwq-32b记录

导语 昨天看到阿里开源了Qwq-32b&#xff0c;号称性能可以媲美Deepseek-R1。今天晚上有空就在Mac上折腾了一下&#xff0c;使用ollma进行了部署&#xff0c;效果感觉还不错&#xff0c;特此记录。 环境 硬件 型号&#xff1a;Macbook M1 Pro 14寸内存&#xff1a;32G 环境…