Arthas memory 命令详解:查看 JVM 堆、非堆与缓冲区内存信息
Arthas memory 命令详解查看 JVM 堆、非堆与缓冲区内存信息【免费下载链接】arthasAlibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas项目地址: https://gitcode.com/gh_mirrors/ar/arthasArthas 的memory命令用于查看目标 JVM 的堆heap、非堆non-heap以及各类内存池Memory Pool与缓冲区Buffer Pool的内存使用情况是排查内存占用、定位泄漏与容量规划的第一手工具。读完本文你将掌握memory命令的输出字段含义、各类内存区域的真实数据来源以及如何结合 JVM 的MemoryMXBean/MemoryPoolMXBean/BufferPoolMXBean机制解读诊断结果。命令概览memory命令在 Arthas 中注册于内置命令包见 BuiltinCommandPack.java执行后直接打印一张内存信息表无需任何参数。它在 MCP 场景下同样以memory工具形式暴露见 MemoryTool.java用于查看 JVM 内存使用情况。使用方式# 进入 Arthas 交互终端后执行 memory输出示例$ memory Memory used total max usage heap 32M 256M 4096M 0.79% g1_eden_space 11M 68M -1 16.18% g1_old_gen 17M 184M 4096M 0.43% g1_survivor_space 4M 4M -1 100.00% nonheap 35M 39M -1 89.55% codeheap_non-nmethods 1M 2M 5M 20.53% metaspace 26M 27M -1 96.88% codeheap_profiled_nmethods 4M 4M 117M 3.57% compressed_class_space 2M 3M 1024M 0.29% codeheap_non-profiled_nmethods 685K 2496K 120032K 0.29% mapped 0K 0K - 0.00% direct 48M 48M - 100.00%注意输出内容与运行 JVM 的具体实现如 G1、CMS、ZGC 等垃圾回收器和启动参数如-Xmx、-XX:MaxMetaspaceSize强相关不同环境下的内存区域名称与数值会有所不同。输出字段解读memory命令的输出是一个五列表格各列含义如下列名含义说明Memory内存区域名称包括 heap / nonheap 汇总行与各内存池、缓冲区名称used已使用内存当前使用的字节数自动以 K/M 为单位格式化total已分配committed内存JVM 向操作系统申请并保证可用的内存大小max最大内存该区域可达到的最大值-1表示最大值未定义如动态扩展的 Eden/Survivor 区-表示无 max 概念如 buffer poolusage使用率used / max当 max 未定义时取used / total的百分比关键点的源码依据见 MemoryView.java单位换算当used / 1024 / 1024 0时以 M 为单位否则以 K 为单位展示。-1的处理max为-1时原样输出-1表示该内存池没有上限例如 G1 的 Eden、Survivor 区大小是动态的。Long.MIN_VALUE的处理输出-用于缓冲区buffer pool条目因为BufferPoolMXBean并不提供 max 概念。usage 计算usage used / (max 未定义 ? total : max) × 100当计算结果为 NaN 或无穷大时归零最终保留两位小数输出如0.79%。内存数据从哪来三类 MXBeanmemory命令的数据完全来自 JDK 的java.lang.management标准管理接口核心逻辑位于 MemoryCommand.javaMemoryMXBean#getHeapMemoryUsage()堆内存整体使用情况作为heap汇总行MemoryMXBean#getNonHeapMemoryUsage()非堆内存整体使用情况作为nonheap汇总行MemoryPoolMXBean遍历所有内存池通过ManagementFactory.getMemoryPoolMXBeans()获取按MemoryType.HEAP/MemoryType.NON_HEAP分为堆内内存池与堆外内存池得到g1_eden_space、g1_old_gen、metaspace、codeheap_*、compressed_class_space等明细行BufferPoolMXBean平台 MXBean通过ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class)反射加载见 MemoryCommand.java得到mapped映射缓冲区与direct直接缓冲区两行。在遍历内存池时源码对getUsage()做了防御性处理若某些 JVM 选项下抛出InternalError则返回null并跳过该池见 MemoryCommand.java避免个别 JVM 实现 Bug 导致命令整体失败。数据流命令 → 模型 → 视图命令入口 MemoryCommand.javaName(memory)定义命令名process()中构建MemoryModel并输出数据模型 MemoryModel.java以MapString, ListMemoryEntryVO按heap/nonheap/buffer_pool三个分组存放值对象 MemoryEntryVO.java定义type、name、used、total、max五个字段渲染视图 MemoryView.java把模型渲染成上文的五列表格其中heap与nonheap汇总行加粗显示便于与各内存池明细区分。各内存区域含义与常见解读堆内存heap 分组heap整个 Java 堆的汇总行对应-Xmx/-Xms与 GC 动态伸缩后的现状。max通常等于-Xmxusage 反映堆的整体水位。g1_eden_space / g1_survivor_spaceG1 收集器下的年轻代分区。这两类区域大小会随 GC 动态调整通常max为-1无固定上限因此 usage 按used / total计算。g1_old_genG1 的老年代。max接近堆最大值usage 反映老年代占用水平是判断 Full GC 风险的重要指标。若使用 CMS、Parallel 等其他收集器内存池名称会相应变为PS Eden Space、CMS Old Gen等原理一致。非堆内存nonheap 分组nonheap非堆汇总行包括方法区Metaspace、代码缓存、压缩类空间等所有堆外 JVM 结构。metaspaceJDK 8 的元空间存放类元数据max通常为-1默认无上限受物理内存限制usage 反映类加载膨胀程度类加载过多或泄漏时常逼近 100%。codeheap_non-nmethods / codeheap_profiled_nmethods / codeheap_non-profiled_nmethodsJIT 编译代码缓存Code Cache的三个子区对应-XX:ReservedCodeCacheSize约束。compressed_class_space压缩类空间与-XX:CompressedClassSpaceSize相关存放klass元数据。缓冲区buffer_pool 分组mappedMappedByteBuffer映射的缓冲区FileChannel.map产生total为映射的容量max 无概念因此显示-。directDirectByteBuffer直接缓冲区ByteBuffer.allocateDirect、Netty 等框架常用max无概念因此显示-。其使用率是排查直接内存溢出OutOfMemoryError: Direct buffer memory时的关键观察项。结合其他命令交叉验证memory命令的内存数据与其他 Arthas 命令共享同一套 MXBean 数据源可交叉印证jvm命令输出HEAP-MEMORY-USAGE与NO-HEAP-MEMORY-USAGE分别对应MemoryMXBean#getHeapMemoryUsage()和getNonHeapMemoryUsage()并额外给出init初始值、committed已提交与pendingFinalizeCount待终结对象数等字段见 JvmCommand.java。pendingFinalizeCount长期非零往往是对象泄漏的征兆可配合 memory 观察。dashboard命令概览面板中的 Memory 区域同样复用MemoryCommand.memoryInfo()方法见 DashboardCommand.java因此dashboard与memory的内存数据完全一致只是展示维度不同。实践建议先看 heap 汇总行usage 接近或达到 100% 且老年代持续增长说明堆压力大可结合heapdump命令导出堆转储进一步分析。关注 metaspace类加载泄漏如动态代理、反射生成类时 metaspace usage 会不断攀升建议配合sc/classloader命令排查类加载器。关注 direct/mapped使用 Netty、RocketMQ 等框架时 direct 内存占用上升是常态但若持续增长不回落需警惕直接内存泄漏。配合jvm命令查看pendingFinalizeCount等附加指标辅助判断内存释放是否正常。总结memory命令以 JDK 标准MemoryMXBean、MemoryPoolMXBean、BufferPoolMXBean为数据源将 JVM 内存按堆、非堆、缓冲区三个维度以一张表格呈现是 Arthas 诊断内存问题的最直接入口。理解各列字段used / total / max / usage的取值规则与-1、-的语义即可快速定位内存异常区域再结合jvm、dashboard、heapdump等命令进行深挖。更完整的命令说明可参考官方文档 memory.md英文版见 memory.md字段定义以 Oracle 官方MemoryMXBean文档为准。【免费下载链接】arthasAlibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas项目地址: https://gitcode.com/gh_mirrors/ar/arthas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

你的文献综述,可能一直在“假装学术”

你的文献综述,可能一直在“假装学术”

官网:www.shujiangce.com | 微信 公众号 :书匠策AI 你有没有发现一个诡异的现象: 你明明读了二十篇文献,每一篇都做了笔记,每一篇的核心观点你都能复述出来。但你写出来的文献综述,读起来就是“不对劲…

2026/9/20 23:57:46 阅读更多 →
10 分钟用 TaoToken 跑通 MCP 天气查询 Skill

10 分钟用 TaoToken 跑通 MCP 天气查询 Skill

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 2:20:25 阅读更多 →
Roc 语言 `??` 双问号运算符实战:Err 默认值回退机制与 REPL 快照测试解析

Roc 语言 `??` 双问号运算符实战:Err 默认值回退机制与 REPL 快照测试解析

Roc 语言 ?? 双问号运算符实战:Err 默认值回退机制与 REPL 快照测试解析 【免费下载链接】roc A fast, friendly, functional language. 项目地址: https://gitcode.com/GitHub_Trending/ro/roc ??(双问号)是 Roc 函数式语言中用于…

2026/9/20 22:26:39 阅读更多 →

最新新闻

Naive UI 创建适配主题的自定义组件:n-config-provider、n-element 与 useThemeVars 全面指南

Naive UI 创建适配主题的自定义组件:n-config-provider、n-element 与 useThemeVars 全面指南

前端UI组件 【免费下载链接】naive-ui A Vue 3 Component Library. Fairly Complete. Theme Customizable. Uses TypeScript. Fast. 项目地址: https://gitcode.com/gh_mirrors/na/naive-ui 点击查看 免费下载 Naive UI 不仅内置了数十个开箱即用的主题化组件&…

2026/9/21 3:45:05 阅读更多 →
如何给SumatraPDF贡献代码?从构建、调试到提交PR的完整开发者指南

如何给SumatraPDF贡献代码?从构建、调试到提交PR的完整开发者指南

如何给SumatraPDF贡献代码?从构建、调试到提交PR的完整开发者指南 【免费下载链接】sumatrapdf SumatraPDF reader 项目地址: https://gitcode.com/gh_mirrors/su/sumatrapdf SumatraPDF 是一款免费的开源多格式文档阅读器(支持 PDF、EPUB、MOBI、…

2026/9/21 3:44:04 阅读更多 →
Readest OPDS 分组轮播实现解析:基于 react-virtuoso 的虚拟化横向卡片滑轨与懒加载封面

Readest OPDS 分组轮播实现解析:基于 react-virtuoso 的虚拟化横向卡片滑轨与懒加载封面

桌面应用跨平台前端 【免费下载链接】readest Readest is a modern, feature-rich ebook reader designed for avid readers offering seamless cross-platform access, powerful tools, and an intuitive interface to elevate your reading experience. 项目地址:…

2026/9/21 3:43:04 阅读更多 →
使用 Go 标准库 time 正确处理时间:Uber Go Style Guide 时间处理实践全解析

使用 Go 标准库 time 正确处理时间:Uber Go Style Guide 时间处理实践全解析

文档教程代码质量Lint 【免费下载链接】guide The Uber Go Style Guide. 项目地址: https://gitcode.com/gh_mirrors/gu/guide 点击查看 免费下载 导读 时间处理是 Go 开发中最容易被低估的复杂度来源——"一天有 24 小时""一小时有 60 分钟"…

2026/9/21 3:43:04 阅读更多 →
Toonflow是什么?AI短剧工厂完整指南:2小时把小说变成成片,创作效率提升10倍

Toonflow是什么?AI短剧工厂完整指南:2小时把小说变成成片,创作效率提升10倍

Toonflow是什么?AI短剧工厂完整指南:2小时把小说变成成片,创作效率提升10倍 【免费下载链接】Toonflow-app Toonflow 是一款 AI 短剧漫剧工具,能够利用 AI 技术将小说自动转化为剧本,并结合 AI 生成的图片和视频&#…

2026/9/21 3:42:03 阅读更多 →
Macrotrends 历史金融数据提取实战:基于 browser-harness 的四种无浏览器抓取模式

Macrotrends 历史金融数据提取实战:基于 browser-harness 的四种无浏览器抓取模式

Macrotrends 历史金融数据提取实战:基于 browser-harness 的四种无浏览器抓取模式 【免费下载链接】browser-harness Browser Harness | Self-healing harness that enables LLMs to complete any task. 项目地址: https://gitcode.com/gh_mirrors/br/browser-har…

2026/9/21 3:42:03 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →