JAVA dump 堪称 JVM 运行时的"高清 CT 影像":其中 heap dump 以二进制 hprof 格式完整记录堆内每一个存活对象、类加载器及错综复杂的引用链,借助 retained size 计算可精准量化内存泄漏源头;thread dump 则瞬间捕获全部 JAVA 线程的调用栈、锁竞争、等待队列与 CPU 使用快照,一眼即可识别死锁、线程池耗尽或慢调用瓶颈。
观测云在此基础上进一步"把望远镜送进机房":通过中心式 Agent 向任意 IP/端口上的目标 JVM 下发加密指令,一键触发 jmap 内置命令,本地生成标准 hprof 格式 dump 后,立即调用内嵌 OSS SDK 以流式分片上传,文件不落本地磁盘、不暴露 AccessKey,上传完毕自动回传元数据与 SHA256 摘要到观测云控制台,完成"一键拍照、云端阅片"的闭环,让曾经高门槛的 JVM 级诊断变成随取随用的 SaaS 能力。
通过观测云平台,能把传统"登录机器→手动 jmap→scp 下载→本地 MAT/VisualVM 分析"这一动辄数小时的繁琐流程,压缩到 30 秒内完成,真正实现"现场冻结、秒级取证"。
实践
当前最佳实践是基于 Kubernetes 环境,通过观测云平台一键生成 JAVA dump 信息并上报至 AWS S3 。
前置条件
- 已注册观测云帐号
- Kubernetes 环境已集成 DataKit
- 拥有可写入 AWS S3 桶权限的 AK/SK
- DataKit 版本≥1.83.0
创建 S3 桶
S3 桶用于存储 dump 文件。

DataKit 开启 dump 文件存储
调整 datakit.yaml,新增以下内容,填写 aws 相关配置。调整完成后,重新执行 apply 操作。
yaml
- name: ENV_REMOTE_JOB_ENABLE
value: 'true'
- name: ENV_REMOTE_JOB_ENVS
value: >-
REMOTE=aws,AWS_DEFAULT_REGION=cn-northwest-1,AWS_ACCESS_KEY_ID=xxxxxxx,AWS_SECRET_ACCESS_KEY=xxxxxx,AWS_BUCKET_NAME=java-dump
- name: ENV_REMOTE_JOB_INTERVAL
value: 100s

其他云厂商存储参考文档 docs.guance.com/datakit/dat...
创建任务
登录观测云平台,应用性能监测 - 服务 - 服务清单,选择对应的 java 服务,点击创建内存快照按钮进行创建。
内存快照需要找到对应的目标方可创建。

点击历史快照按钮,可以查看创建的历史记录及快照状态、日志信息。

快照执行日志详情。

验证 S3 是否存储成功
登录 S3 控制台查看是否有对应的文件生成。

验证快照文件是否可用
从 S3 下载快照后,在本地尝试解析。
可以使用 jhat 命令解析 dump文件,并用浏览器直接查看,格式 jhat <dump-file-name> 。

浏览器访问 7000 端口。

F&Q
服务清单找不到对应的服务
服务清单数据是基于链路信息按照每小时一次进行构建的,页面上会展示上次更新的时间,所以需要先有链路访问才会有对应的服务。
有服务,但找不到执行目标
如果一个服务长期没有链路,比如一天都没有链路,则不会有执行目标,需要进行业务访问对应服务产生链路后才会看到执行目标。
