JVM Memory Profiling
Async Profiler最近一直忙着搞AI 的application adoption, 都没空记录点东西。 趁着最近有个memory的profiling,记录一下如何进行memory profiling.
对于大部分大厂,应该有成熟的监控工具,比如dynatrace,消费级产品使用起来很方便。这里不详细介绍。
Dynatrace有个很方便的火焰图,对于本地我也想要这个效果,那么你可以使用 Async Profiler。
安装
去这里安装 Async Profiler
这里是文档
Quick Start(本地最常用三连):
asprof -d 30 -e cpu -o flamegraph -f cpu.html <PID>
asprof -d 30 -e alloc --total -o flamegraph -f alloc.html <PID>
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,最后再停止:
# 启动CPU采样
asprof start -e cpu <PID>
# ... 执行一些操作后 ...
# dump出一份火焰图,但采样并未停止
asprof dump -o flamegraph -f cpu-dump-1.html <PID>
# ... 再次执行一些操作 ...
# 停止采样并生成最终报告
asprof stop -o flamegraph -f cpu-final.html <PID>JFR + JMC
Quick Start
Use VisualVM 创建一个JFR,或者你也可以用命令行,如下图
在JMC里查看
JFR+JMC功能很强大,可以进行很多topic的profiling,比如cpu,锁。
为什么用 JFR
<ul>低开销(生产可常驻,默认 分享、互助 让互联网精神温暖你我
页:
[1]