找回密码
 立即注册
首页 业界区 安全 JVM Memory Profiling

JVM Memory Profiling

嘀荼酴 2025-11-24 16:55:00
Async Profiler

最近一直忙着搞AI 的application adoption, 都没空记录点东西。 趁着最近有个memory的profiling,记录一下如何进行memory profiling.
对于大部分大厂,应该有成熟的监控工具,比如dynatrace,消费级产品使用起来很方便。这里不详细介绍。
Dynatrace有个很方便的火焰图,对于本地我也想要这个效果,那么你可以使用 Async Profiler。
1.png

安装

去这里安装 Async Profiler
这里是文档
Quick Start(本地最常用三连):
  1. asprof -d 30 -e cpu -o flamegraph -f cpu.html <PID>
  2. asprof -d 30 -e alloc --total -o flamegraph -f alloc.html <PID>
  3. asprof -d 30 -e alloc --live -o flamegraph -f heap.html <PID>
复制代码
CPU 看热点;alloc 看高频瞬时分配;alloc --live 看仍存活对象来源(等价于之前的 -e heap)。
基本操作

asprof 提供了 start, stop, dump, status 等基本操作,可以更灵活地控制采样过程。-d 参数只是 start -> sleep -> stop 的一个快捷方式。

  • start: 启动采样。分析器会持续在后台运行。
  • stop: 停止采样并输出报告。
  • dump: 在不停止采样的情况下,生成一份当前已采集数据的快照。
  • status: 查看当前采样状态。
例如,你可以手动开始,在需要的时候dump,最后再停止:
  1. # 启动CPU采样
  2. asprof start -e cpu <PID>
  3. # ... 执行一些操作后 ...
  4. # dump出一份火焰图,但采样并未停止
  5. asprof dump -o flamegraph -f cpu-dump-1.html <PID>
  6. # ... 再次执行一些操作 ...
  7. # 停止采样并生成最终报告
  8. asprof stop -o flamegraph -f cpu-final.html <PID>
复制代码
JFR + JMC

Quick Start

Use VisualVM 创建一个JFR,或者你也可以用命令行,如下图
2.png

在JMC里查看
3.png

JFR+JMC功能很强大,可以进行很多topic的profiling,比如cpu,锁。
为什么用 JFR

<ul>低开销(生产可常驻,默认

相关推荐

您需要登录后才可以回帖 登录 | 立即注册