mirror of
https://github.com/alibaba/arthas.git
synced 2026-10-20 00:17:01 +00:00
138 lines
114 KiB
HTML
138 lines
114 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<meta name="generator" content="VuePress 2.0.0-beta.51">
|
||
<style>
|
||
:root {
|
||
--c-bg: #fff;
|
||
}
|
||
html.dark {
|
||
--c-bg: #22272e;
|
||
}
|
||
html, body {
|
||
background-color: var(--c-bg);
|
||
}
|
||
</style>
|
||
<script>
|
||
const userMode = localStorage.getItem('vuepress-color-scheme');
|
||
const systemDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||
if (userMode === 'dark' || (userMode !== 'light' && systemDarkMode)) {
|
||
document.documentElement.classList.toggle('dark', true);
|
||
}
|
||
</script>
|
||
<link rel="icon" href="/images/favicon.ico"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta property="og:title" content="Arthas"><meta property="og:image:alt" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta property="og:image" content="/images/arthas_mate_image.png"><meta property="og:description" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="600"><meta property="twitter:image:src" content="/images/arthas_mate_image.png"><meta property="twitter:image:alt" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta itemprop="name" content="Arthas"><meta itemprop="image" content="/images/arthas_mate_image.png"><meta itemprop="description" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><script>
|
||
var _hmt = _hmt || [];
|
||
(function() {
|
||
var hm = document.createElement("script");
|
||
hm.src = "https://hm.baidu.com/hm.js?d5c5e25b100f0eb51a4c35c8a86ea9b4";
|
||
var s = document.getElementsByTagName("script")[0];
|
||
s.parentNode.insertBefore(hm, s);
|
||
})();
|
||
</script><meta name="aes-config" content="pid=xux-opensource&user_type=101&uid=&username=&dim10=arthas"><script src="//g.alicdn.com/alilog/mlog/aplus_v2.js" id="beacon-aplus" exparams="clog=o&aplus&sidx=aplusSidx&ckx=aplusCkx"></script><script src="//g.alicdn.com/aes/??tracker/1.0.34/index.js,tracker-plugin-pv/2.4.5/index.js,tracker-plugin-event/1.2.5/index.js,tracker-plugin-jserror/1.0.13/index.js,tracker-plugin-api/1.1.14/index.js,tracker-plugin-perf/1.1.8/index.js,tracker-plugin-eventTiming/1.0.4/index.js"></script><title>profiler | arthas</title><meta name="description" content="arthas 使用文档">
|
||
<link rel="modulepreload" href="/assets/app.e2427bec.js"><link rel="modulepreload" href="/assets/profiler.html.8e2f4114.js"><link rel="modulepreload" href="/assets/arthas-output-svg.30f64f53.js"><link rel="modulepreload" href="/assets/profiler.html.0cd67a30.js"><link rel="prefetch" href="/assets/index.html.cd23e113.js"><link rel="prefetch" href="/assets/index.html.6dcd1531.js"><link rel="prefetch" href="/assets/index.html.787b4b50.js"><link rel="prefetch" href="/assets/advanced-use.html.2b80fa7d.js"><link rel="prefetch" href="/assets/advice-class.html.3778e1f2.js"><link rel="prefetch" href="/assets/agent.html.55a8cd63.js"><link rel="prefetch" href="/assets/ai.html.530e41ed.js"><link rel="prefetch" href="/assets/arthas-properties.html.1c61e69c.js"><link rel="prefetch" href="/assets/arthas3.html.11401e69.js"><link rel="prefetch" href="/assets/async.html.89c66164.js"><link rel="prefetch" href="/assets/auth.html.10e5d242.js"><link rel="prefetch" href="/assets/base64.html.26159b8a.js"><link rel="prefetch" href="/assets/batch-support.html.2f7463e9.js"><link rel="prefetch" href="/assets/cat.html.317b776a.js"><link rel="prefetch" href="/assets/classloader-metaspace.html.1c3e8440.js"><link rel="prefetch" href="/assets/classloader.html.3876b1e0.js"><link rel="prefetch" href="/assets/cls.html.60c40d73.js"><link rel="prefetch" href="/assets/commands.html.f93b9fc8.js"><link rel="prefetch" href="/assets/contact-us.html.f14b9ed1.js"><link rel="prefetch" href="/assets/dashboard.html.f3712bf4.js"><link rel="prefetch" href="/assets/docker.html.7291090b.js"><link rel="prefetch" href="/assets/download.html.1a63d650.js"><link rel="prefetch" href="/assets/dump.html.0eae962a.js"><link rel="prefetch" href="/assets/echo.html.4b25719e.js"><link rel="prefetch" href="/assets/external-command.html.9a47f025.js"><link rel="prefetch" href="/assets/faq.html.36186b06.js"><link rel="prefetch" href="/assets/getstatic.html.99701f59.js"><link rel="prefetch" href="/assets/grep.html.6ba4e7cd.js"><link rel="prefetch" href="/assets/groovy.html.6c982925.js"><link rel="prefetch" href="/assets/heapdump.html.2cfa3407.js"><link rel="prefetch" href="/assets/help.html.026cd72d.js"><link rel="prefetch" href="/assets/history.html.9f5e30aa.js"><link rel="prefetch" href="/assets/http-api.html.132670cd.js"><link rel="prefetch" href="/assets/idea-plugin.html.57e8f57c.js"><link rel="prefetch" href="/assets/install-detail.html.93881ff8.js"><link rel="prefetch" href="/assets/jad.html.49ef2409.js"><link rel="prefetch" href="/assets/jfr.html.bab2ebee.js"><link rel="prefetch" href="/assets/jvm.html.684dd27a.js"><link rel="prefetch" href="/assets/keymap.html.96d9632d.js"><link rel="prefetch" href="/assets/line.html.bfbf7f2b.js"><link rel="prefetch" href="/assets/logger.html.3d035db4.js"><link rel="prefetch" href="/assets/manual-install.html.c9b06816.js"><link rel="prefetch" href="/assets/mbean.html.0bf95e2b.js"><link rel="prefetch" href="/assets/mc.html.e292ce83.js"><link rel="prefetch" href="/assets/mcp-server.html.3cd2eec5.js"><link rel="prefetch" href="/assets/memory.html.a1b2b15c.js"><link rel="prefetch" href="/assets/monitor.html.5a803975.js"><link rel="prefetch" href="/assets/ognl-express.html.f156515d.js"><link rel="prefetch" href="/assets/ognl.html.67f38565.js"><link rel="prefetch" href="/assets/options.html.7de13b4f.js"><link rel="prefetch" href="/assets/perfcounter.html.02a2f773.js"><link rel="prefetch" href="/assets/pwd.html.fe379ca1.js"><link rel="prefetch" href="/assets/quick-start.html.4a4a854b.js"><link rel="prefetch" href="/assets/quit.html.e375b368.js"><link rel="prefetch" href="/assets/redefine.html.02b78145.js"><link rel="prefetch" href="/assets/release-notes.html.daaf684d.js"><link rel="prefetch" href="/assets/reset.html.334188fe.js"><link rel="prefetch" href="/assets/retransform.html.8ab36d20.js"><link rel="prefetch" href="/assets/save-log.html.6b300b97.js"><link rel="prefetch" href="/assets/sc.html.7cdf140e.js"><link rel="prefetch" href="/assets/session.html.0168cb9d.js"><link rel="prefetch" href="/assets/sm.html.fe572b7b.js"><link rel="prefetch" href="/assets/spring-boot-starter.html.89e33109.js"><link rel="prefetch" href="/assets/stack.html.67e8e31b.js"><link rel="prefetch" href="/assets/start-arthas.html.6198e218.js"><link rel="prefetch" href="/assets/stop.html.c39fd416.js"><link rel="prefetch" href="/assets/sysenv.html.152ba8c4.js"><link rel="prefetch" href="/assets/sysprop.html.f03585de.js"><link rel="prefetch" href="/assets/tee.html.dccc689b.js"><link rel="prefetch" href="/assets/thread.html.c9f7c599.js"><link rel="prefetch" href="/assets/trace.html.05e818e5.js"><link rel="prefetch" href="/assets/tt.html.ec638e55.js"><link rel="prefetch" href="/assets/tunnel.html.5c03c09c.js"><link rel="prefetch" href="/assets/version.html.08321a1e.js"><link rel="prefetch" href="/assets/vmoption.html.d219c85b.js"><link rel="prefetch" href="/assets/vmtool.html.b5c2a935.js"><link rel="prefetch" href="/assets/watch.html.a9d6b6e1.js"><link rel="prefetch" href="/assets/web-console.html.7d232bc6.js"><link rel="prefetch" href="/assets/index.html.e6b12e55.js"><link rel="prefetch" href="/assets/advanced-use.html.5dddb9fa.js"><link rel="prefetch" href="/assets/advice-class.html.12568df6.js"><link rel="prefetch" href="/assets/agent.html.d7974fce.js"><link rel="prefetch" href="/assets/ai.html.0d965d9d.js"><link rel="prefetch" href="/assets/arthas-properties.html.962908f3.js"><link rel="prefetch" href="/assets/async.html.58415566.js"><link rel="prefetch" href="/assets/auth.html.9f2ff1c7.js"><link rel="prefetch" href="/assets/base64.html.4b84930d.js"><link rel="prefetch" href="/assets/batch-support.html.2fd7dfc3.js"><link rel="prefetch" href="/assets/cat.html.8d80e219.js"><link rel="prefetch" href="/assets/classloader-metaspace.html.466bb431.js"><link rel="prefetch" href="/assets/classloader.html.3c2e72a7.js"><link rel="prefetch" href="/assets/cls.html.8f3a5491.js"><link rel="prefetch" href="/assets/commands.html.4d2820b1.js"><link rel="prefetch" href="/assets/contact-us.html.f31aa912.js"><link rel="prefetch" href="/assets/dashboard.html.1a8e32e4.js"><link rel="prefetch" href="/assets/docker.html.ab7f2873.js"><link rel="prefetch" href="/assets/download.html.c5d48124.js"><link rel="prefetch" href="/assets/dump.html.24ea4d2e.js"><link rel="prefetch" href="/assets/echo.html.fdda77b4.js"><link rel="prefetch" href="/assets/external-command.html.3e8d782b.js"><link rel="prefetch" href="/assets/faq.html.188c09a3.js"><link rel="prefetch" href="/assets/getstatic.html.06e13f21.js"><link rel="prefetch" href="/assets/grep.html.831320e0.js"><link rel="prefetch" href="/assets/groovy.html.d70f2cba.js"><link rel="prefetch" href="/assets/heapdump.html.aa31b283.js"><link rel="prefetch" href="/assets/help.html.66e76dc7.js"><link rel="prefetch" href="/assets/history.html.62683097.js"><link rel="prefetch" href="/assets/http-api.html.a3d3ab18.js"><link rel="prefetch" href="/assets/idea-plugin.html.ae6aa4f7.js"><link rel="prefetch" href="/assets/install-detail.html.743978fa.js"><link rel="prefetch" href="/assets/jad.html.039013c5.js"><link rel="prefetch" href="/assets/jfr.html.b77304ea.js"><link rel="prefetch" href="/assets/jvm.html.eac591a0.js"><link rel="prefetch" href="/assets/keymap.html.4bc836ba.js"><link rel="prefetch" href="/assets/line.html.a9e8e2e4.js"><link rel="prefetch" href="/assets/logger.html.e09aeaa6.js"><link rel="prefetch" href="/assets/manual-install.html.85f99b8b.js"><link rel="prefetch" href="/assets/mbean.html.927e96dd.js"><link rel="prefetch" href="/assets/mc.html.d96eb37d.js"><link rel="prefetch" href="/assets/mcp-server.html.609551f2.js"><link rel="prefetch" href="/assets/memory.html.3bde6b86.js"><link rel="prefetch" href="/assets/monitor.html.fc2a02d0.js"><link rel="prefetch" href="/assets/ognl-express.html.0cd6cdc8.js"><link rel="prefetch" href="/assets/ognl.html.c20b61d9.js"><link rel="prefetch" href="/assets/options.html.7c3bfae1.js"><link rel="prefetch" href="/assets/perfcounter.html.27f41458.js"><link rel="prefetch" href="/assets/profiler.html.67035c12.js"><link rel="prefetch" href="/assets/pwd.html.5af5f815.js"><link rel="prefetch" href="/assets/quick-start.html.0a841ca8.js"><link rel="prefetch" href="/assets/quit.html.47228ba9.js"><link rel="prefetch" href="/assets/redefine.html.68e8d9d1.js"><link rel="prefetch" href="/assets/release-notes.html.bb1f1375.js"><link rel="prefetch" href="/assets/reset.html.94ebcaf7.js"><link rel="prefetch" href="/assets/retransform.html.5a86cbf5.js"><link rel="prefetch" href="/assets/save-log.html.f871291e.js"><link rel="prefetch" href="/assets/sc.html.13503b4f.js"><link rel="prefetch" href="/assets/session.html.602a88b1.js"><link rel="prefetch" href="/assets/sm.html.a226714f.js"><link rel="prefetch" href="/assets/spring-boot-starter.html.78d66843.js"><link rel="prefetch" href="/assets/stack.html.aa5021d8.js"><link rel="prefetch" href="/assets/start-arthas.html.614c57c4.js"><link rel="prefetch" href="/assets/stop.html.481c9049.js"><link rel="prefetch" href="/assets/sysenv.html.f7014c3b.js"><link rel="prefetch" href="/assets/sysprop.html.93843170.js"><link rel="prefetch" href="/assets/tee.html.796f8441.js"><link rel="prefetch" href="/assets/thread.html.96dd9ac3.js"><link rel="prefetch" href="/assets/trace.html.4fabc19b.js"><link rel="prefetch" href="/assets/tt.html.ab370b4f.js"><link rel="prefetch" href="/assets/tunnel.html.6d15b349.js"><link rel="prefetch" href="/assets/version.html.acfdfafa.js"><link rel="prefetch" href="/assets/vmoption.html.698e78cd.js"><link rel="prefetch" href="/assets/vmtool.html.ab938841.js"><link rel="prefetch" href="/assets/watch.html.72a5979d.js"><link rel="prefetch" href="/assets/web-console.html.6349f4a1.js"><link rel="prefetch" href="/assets/404.html.1b87fa04.js"><link rel="prefetch" href="/assets/index.html.086821c2.js"><link rel="prefetch" href="/assets/index.html.18118d67.js"><link rel="prefetch" href="/assets/index.html.760efd19.js"><link rel="prefetch" href="/assets/advanced-use.html.2466ac6e.js"><link rel="prefetch" href="/assets/advice-class.html.79697a1e.js"><link rel="prefetch" href="/assets/agent.html.2480ffd9.js"><link rel="prefetch" href="/assets/ai.html.4fc4211a.js"><link rel="prefetch" href="/assets/arthas-properties.html.7dc17e44.js"><link rel="prefetch" href="/assets/arthas3.html.98a1b21b.js"><link rel="prefetch" href="/assets/async.html.60215e2c.js"><link rel="prefetch" href="/assets/auth.html.15a8fda2.js"><link rel="prefetch" href="/assets/base64.html.9f351db1.js"><link rel="prefetch" href="/assets/batch-support.html.f1130b14.js"><link rel="prefetch" href="/assets/cat.html.5c2eddad.js"><link rel="prefetch" href="/assets/classloader-metaspace.html.249e56bc.js"><link rel="prefetch" href="/assets/classloader.html.1dbda3bd.js"><link rel="prefetch" href="/assets/cls.html.14369b3c.js"><link rel="prefetch" href="/assets/commands.html.3d045ea7.js"><link rel="prefetch" href="/assets/contact-us.html.bca72555.js"><link rel="prefetch" href="/assets/dashboard.html.113af276.js"><link rel="prefetch" href="/assets/docker.html.da50033d.js"><link rel="prefetch" href="/assets/download.html.6df5a02f.js"><link rel="prefetch" href="/assets/dump.html.894aad59.js"><link rel="prefetch" href="/assets/echo.html.8bd53ad3.js"><link rel="prefetch" href="/assets/external-command.html.f331f51e.js"><link rel="prefetch" href="/assets/faq.html.0b4e272a.js"><link rel="prefetch" href="/assets/getstatic.html.0079aa66.js"><link rel="prefetch" href="/assets/grep.html.a6f74b81.js"><link rel="prefetch" href="/assets/groovy.html.74effc34.js"><link rel="prefetch" href="/assets/heapdump.html.3c58b047.js"><link rel="prefetch" href="/assets/help.html.0f234388.js"><link rel="prefetch" href="/assets/history.html.a9fdd95c.js"><link rel="prefetch" href="/assets/http-api.html.99c4fcf0.js"><link rel="prefetch" href="/assets/idea-plugin.html.34a25f10.js"><link rel="prefetch" href="/assets/install-detail.html.40e05e2a.js"><link rel="prefetch" href="/assets/jad.html.2e62e37f.js"><link rel="prefetch" href="/assets/jfr.html.fc123fb3.js"><link rel="prefetch" href="/assets/jvm.html.9b922226.js"><link rel="prefetch" href="/assets/keymap.html.33e7213e.js"><link rel="prefetch" href="/assets/line.html.70ec176e.js"><link rel="prefetch" href="/assets/logger.html.c09808a8.js"><link rel="prefetch" href="/assets/manual-install.html.81853c98.js"><link rel="prefetch" href="/assets/mbean.html.ee4f07f1.js"><link rel="prefetch" href="/assets/mc.html.9ed50f47.js"><link rel="prefetch" href="/assets/mcp-server.html.b2d1ada5.js"><link rel="prefetch" href="/assets/memory.html.8e88a19c.js"><link rel="prefetch" href="/assets/monitor.html.b4c17a07.js"><link rel="prefetch" href="/assets/ognl-express.html.1fb465fc.js"><link rel="prefetch" href="/assets/ognl.html.c39364dd.js"><link rel="prefetch" href="/assets/options.html.dae019ce.js"><link rel="prefetch" href="/assets/perfcounter.html.96a88381.js"><link rel="prefetch" href="/assets/pwd.html.a1551912.js"><link rel="prefetch" href="/assets/quick-start.html.7059ebe7.js"><link rel="prefetch" href="/assets/quit.html.44df6ca4.js"><link rel="prefetch" href="/assets/redefine.html.05bba39f.js"><link rel="prefetch" href="/assets/release-notes.html.c5c1003b.js"><link rel="prefetch" href="/assets/reset.html.5e039e96.js"><link rel="prefetch" href="/assets/retransform.html.cee06ec8.js"><link rel="prefetch" href="/assets/save-log.html.fea95237.js"><link rel="prefetch" href="/assets/sc.html.982b84c0.js"><link rel="prefetch" href="/assets/session.html.35f7a4aa.js"><link rel="prefetch" href="/assets/sm.html.552b6b44.js"><link rel="prefetch" href="/assets/spring-boot-starter.html.adad135d.js"><link rel="prefetch" href="/assets/stack.html.39dc52db.js"><link rel="prefetch" href="/assets/start-arthas.html.497d3293.js"><link rel="prefetch" href="/assets/stop.html.9224e553.js"><link rel="prefetch" href="/assets/sysenv.html.e76b6bf3.js"><link rel="prefetch" href="/assets/sysprop.html.0dfbbffb.js"><link rel="prefetch" href="/assets/tee.html.26f6c8a9.js"><link rel="prefetch" href="/assets/thread.html.f8f09dc5.js"><link rel="prefetch" href="/assets/trace.html.27ac97ec.js"><link rel="prefetch" href="/assets/tt.html.a410b6a0.js"><link rel="prefetch" href="/assets/tunnel.html.3a98510a.js"><link rel="prefetch" href="/assets/version.html.e13ddf0e.js"><link rel="prefetch" href="/assets/vmoption.html.7a568db9.js"><link rel="prefetch" href="/assets/vmtool.html.27325bff.js"><link rel="prefetch" href="/assets/watch.html.2383ed88.js"><link rel="prefetch" href="/assets/web-console.html.e58ea91b.js"><link rel="prefetch" href="/assets/index.html.34145a94.js"><link rel="prefetch" href="/assets/advanced-use.html.38aef1b4.js"><link rel="prefetch" href="/assets/advice-class.html.7352d445.js"><link rel="prefetch" href="/assets/agent.html.d870df79.js"><link rel="prefetch" href="/assets/ai.html.76467e93.js"><link rel="prefetch" href="/assets/arthas-properties.html.c45f5949.js"><link rel="prefetch" href="/assets/async.html.4eaabb46.js"><link rel="prefetch" href="/assets/auth.html.031f3521.js"><link rel="prefetch" href="/assets/base64.html.a74ba9fa.js"><link rel="prefetch" href="/assets/batch-support.html.8e77cbb4.js"><link rel="prefetch" href="/assets/cat.html.a8a712c6.js"><link rel="prefetch" href="/assets/classloader-metaspace.html.1d325e53.js"><link rel="prefetch" href="/assets/classloader.html.0346e215.js"><link rel="prefetch" href="/assets/cls.html.77bb73a5.js"><link rel="prefetch" href="/assets/commands.html.0766e205.js"><link rel="prefetch" href="/assets/contact-us.html.c13483a2.js"><link rel="prefetch" href="/assets/dashboard.html.981a5405.js"><link rel="prefetch" href="/assets/docker.html.3597bdbf.js"><link rel="prefetch" href="/assets/download.html.5f1c78c9.js"><link rel="prefetch" href="/assets/dump.html.30dc9666.js"><link rel="prefetch" href="/assets/echo.html.1ca1bcbf.js"><link rel="prefetch" href="/assets/external-command.html.cc4ab827.js"><link rel="prefetch" href="/assets/faq.html.8aecb0b8.js"><link rel="prefetch" href="/assets/getstatic.html.d3e5edb1.js"><link rel="prefetch" href="/assets/grep.html.c007dc7c.js"><link rel="prefetch" href="/assets/groovy.html.47cc1adc.js"><link rel="prefetch" href="/assets/heapdump.html.291f6f55.js"><link rel="prefetch" href="/assets/help.html.9a08c3c3.js"><link rel="prefetch" href="/assets/history.html.0a1c3393.js"><link rel="prefetch" href="/assets/http-api.html.d561b855.js"><link rel="prefetch" href="/assets/idea-plugin.html.7d6cbcc9.js"><link rel="prefetch" href="/assets/install-detail.html.041805f1.js"><link rel="prefetch" href="/assets/jad.html.1626c1c4.js"><link rel="prefetch" href="/assets/jfr.html.2139c5d1.js"><link rel="prefetch" href="/assets/jvm.html.43ae7a7d.js"><link rel="prefetch" href="/assets/keymap.html.bf1351b4.js"><link rel="prefetch" href="/assets/line.html.01eb3559.js"><link rel="prefetch" href="/assets/logger.html.b88626af.js"><link rel="prefetch" href="/assets/manual-install.html.315a4f72.js"><link rel="prefetch" href="/assets/mbean.html.d1e0ff54.js"><link rel="prefetch" href="/assets/mc.html.f0819ad2.js"><link rel="prefetch" href="/assets/mcp-server.html.c2f288cd.js"><link rel="prefetch" href="/assets/memory.html.e96b1c33.js"><link rel="prefetch" href="/assets/monitor.html.be46b9bd.js"><link rel="prefetch" href="/assets/ognl-express.html.3082adb7.js"><link rel="prefetch" href="/assets/ognl.html.d226d5a4.js"><link rel="prefetch" href="/assets/options.html.12136572.js"><link rel="prefetch" href="/assets/perfcounter.html.e11ca3a1.js"><link rel="prefetch" href="/assets/profiler.html.3f6cfb27.js"><link rel="prefetch" href="/assets/pwd.html.60a0a503.js"><link rel="prefetch" href="/assets/quick-start.html.90bb144c.js"><link rel="prefetch" href="/assets/quit.html.de692497.js"><link rel="prefetch" href="/assets/redefine.html.c7e214b6.js"><link rel="prefetch" href="/assets/release-notes.html.4d2c5e1d.js"><link rel="prefetch" href="/assets/reset.html.9c6228ed.js"><link rel="prefetch" href="/assets/retransform.html.822f2ec7.js"><link rel="prefetch" href="/assets/save-log.html.aaad8817.js"><link rel="prefetch" href="/assets/sc.html.049f2400.js"><link rel="prefetch" href="/assets/session.html.fa0a110f.js"><link rel="prefetch" href="/assets/sm.html.fd569c95.js"><link rel="prefetch" href="/assets/spring-boot-starter.html.cb1cd476.js"><link rel="prefetch" href="/assets/stack.html.bdb92f2d.js"><link rel="prefetch" href="/assets/start-arthas.html.1a3db2ff.js"><link rel="prefetch" href="/assets/stop.html.c30e7079.js"><link rel="prefetch" href="/assets/sysenv.html.33a80b4e.js"><link rel="prefetch" href="/assets/sysprop.html.ae3ef70a.js"><link rel="prefetch" href="/assets/tee.html.80593816.js"><link rel="prefetch" href="/assets/thread.html.bceb3488.js"><link rel="prefetch" href="/assets/trace.html.63fe4169.js"><link rel="prefetch" href="/assets/tt.html.2b487719.js"><link rel="prefetch" href="/assets/tunnel.html.7e8c485e.js"><link rel="prefetch" href="/assets/version.html.3edc2ceb.js"><link rel="prefetch" href="/assets/vmoption.html.b0134475.js"><link rel="prefetch" href="/assets/vmtool.html.9e179166.js"><link rel="prefetch" href="/assets/watch.html.9d383a57.js"><link rel="prefetch" href="/assets/web-console.html.0614d78d.js"><link rel="prefetch" href="/assets/404.html.58d317de.js">
|
||
<link rel="stylesheet" href="/assets/style.812a0039.css">
|
||
</head>
|
||
<body>
|
||
<div id="app"><!--[--><div class="theme-container"><!--[--><header class="navbar"><div class="toggle-sidebar-button" title="切换侧边栏" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a href="/" class="" data-v-a8869d06><!----><span class="site-name can-hide" data-v-a8869d06>arthas</span><span class="navbar-version" data-v-a8869d06>v4.3.5</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a href="/" class="" aria-label="首页"><!--[--><!--]--> 首页 <!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/" class="router-link-active" aria-label="文档"><!--[--><!--]--> 文档 <!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/commands.md" class="" aria-label="命令列表"><!--[--><!--]--> 命令列表 <!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/download.md" class="" aria-label="下载"><!--[--><!--]--> 下载 <!--[--><!--]--></a></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="版本"><span class="title">版本</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="版本"><span class="title">版本</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a class="external-link" href="https://arthas.aliyun.com/3.x/" rel="noopener noreferrer" target="_blank" aria-label="v3.x"><!--[--><!--]--><span>v3.x</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></li><!--]--></ul></div></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="Select language"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em" style="height:1.25rem;width:1.25rem;vertical-align:bottom;" viewbox="0 0 24 24"><path fill="currentColor" d="M13.35 22q-.6 0-.862-.387q-.263-.388-.063-.963l3.65-9.675q.15-.4.563-.688Q17.05 10 17.5 10q.425 0 .85.287q.425.288.575.688l3.65 9.675q.2.575-.062.963q-.263.387-.888.387q-.275 0-.5-.175q-.225-.175-.325-.425l-.85-2.45H15.1l-.875 2.45q-.1.25-.35.425q-.25.175-.525.175Zm2.35-4.8h3.6l-1.75-4.95h-.1ZM7.15 8.55q.4.725.85 1.337q.45.613 1.05 1.263q1.1-1.2 1.825-2.462Q11.6 7.425 12.1 6H2q-.425 0-.712-.287Q1 5.425 1 5t.288-.713Q1.575 4 2 4h6V3q0-.425.288-.713Q8.575 2 9 2t.713.287Q10 2.575 10 3v1h6q.425 0 .712.287Q17 4.575 17 5t-.288.713Q16.425 6 16 6h-1.9q-.525 1.775-1.425 3.45q-.9 1.675-2.225 3.15l2.4 2.45l-.75 2.05L9 14l-4.3 4.3q-.275.275-.7.275q-.425 0-.7-.275q-.275-.275-.275-.7q0-.425.275-.7l4.35-4.35q-.675-.775-1.25-1.563q-.575-.787-1.025-1.662Q5.1 8.8 5.35 8.4t.875-.4q.25 0 .525.162q.275.163.4.388Z"></path></svg><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="Select language"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em" style="height:1.25rem;width:1.25rem;vertical-align:bottom;" viewbox="0 0 24 24"><path fill="currentColor" d="M13.35 22q-.6 0-.862-.387q-.263-.388-.063-.963l3.65-9.675q.15-.4.563-.688Q17.05 10 17.5 10q.425 0 .85.287q.425.288.575.688l3.65 9.675q.2.575-.062.963q-.263.387-.888.387q-.275 0-.5-.175q-.225-.175-.325-.425l-.85-2.45H15.1l-.875 2.45q-.1.25-.35.425q-.25.175-.525.175Zm2.35-4.8h3.6l-1.75-4.95h-.1ZM7.15 8.55q.4.725.85 1.337q.45.613 1.05 1.263q1.1-1.2 1.825-2.462Q11.6 7.425 12.1 6H2q-.425 0-.712-.287Q1 5.425 1 5t.288-.713Q1.575 4 2 4h6V3q0-.425.288-.713Q8.575 2 9 2t.713.287Q10 2.575 10 3v1h6q.425 0 .712.287Q17 4.575 17 5t-.288.713Q16.425 6 16 6h-1.9q-.525 1.775-1.425 3.45q-.9 1.675-2.225 3.15l2.4 2.45l-.75 2.05L9 14l-4.3 4.3q-.275.275-.7.275q-.425 0-.7-.275q-.275-.275-.275-.7q0-.425.275-.7l4.35-4.35q-.675-.775-1.25-1.563q-.575-.787-1.025-1.662Q5.1 8.8 5.35 8.4t.875-.4q.25 0 .525.162q.275.163.4.388Z"></path></svg><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a aria-current="page" href="/doc/profiler.html" class="router-link-active router-link-exact-active router-link-active" aria-label="简体中文"><!--[--><!--]--> 简体中文 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/en/doc/profiler.html" class="" aria-label="English"><!--[--><!--]--> English <!--[--><!--]--></a></li><!--]--></ul></div></div><div class="navbar-item"><a class="external-link" href="https://github.com/alibaba/arthas" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 24 24" style="height:1.25rem;width:1.25rem;vertical-align:bottom;"><path fill="currentColor" d="M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33c.85 0 1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2Z"></path></svg><!----><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button class="toggle-color-mode-button" title="切换颜色模式"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><div id="docsearch-container"></div></div></header><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><nav class="navbar-items"><!--[--><div class="navbar-item"><a href="/" class="" aria-label="首页"><!--[--><!--]--> 首页 <!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/" class="router-link-active" aria-label="文档"><!--[--><!--]--> 文档 <!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/commands.md" class="" aria-label="命令列表"><!--[--><!--]--> 命令列表 <!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/download.md" class="" aria-label="下载"><!--[--><!--]--> 下载 <!--[--><!--]--></a></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="版本"><span class="title">版本</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="版本"><span class="title">版本</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a class="external-link" href="https://arthas.aliyun.com/3.x/" rel="noopener noreferrer" target="_blank" aria-label="v3.x"><!--[--><!--]--><span>v3.x</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></li><!--]--></ul></div></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="Select language"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em" style="height:1.25rem;width:1.25rem;vertical-align:bottom;" viewbox="0 0 24 24"><path fill="currentColor" d="M13.35 22q-.6 0-.862-.387q-.263-.388-.063-.963l3.65-9.675q.15-.4.563-.688Q17.05 10 17.5 10q.425 0 .85.287q.425.288.575.688l3.65 9.675q.2.575-.062.963q-.263.387-.888.387q-.275 0-.5-.175q-.225-.175-.325-.425l-.85-2.45H15.1l-.875 2.45q-.1.25-.35.425q-.25.175-.525.175Zm2.35-4.8h3.6l-1.75-4.95h-.1ZM7.15 8.55q.4.725.85 1.337q.45.613 1.05 1.263q1.1-1.2 1.825-2.462Q11.6 7.425 12.1 6H2q-.425 0-.712-.287Q1 5.425 1 5t.288-.713Q1.575 4 2 4h6V3q0-.425.288-.713Q8.575 2 9 2t.713.287Q10 2.575 10 3v1h6q.425 0 .712.287Q17 4.575 17 5t-.288.713Q16.425 6 16 6h-1.9q-.525 1.775-1.425 3.45q-.9 1.675-2.225 3.15l2.4 2.45l-.75 2.05L9 14l-4.3 4.3q-.275.275-.7.275q-.425 0-.7-.275q-.275-.275-.275-.7q0-.425.275-.7l4.35-4.35q-.675-.775-1.25-1.563q-.575-.787-1.025-1.662Q5.1 8.8 5.35 8.4t.875-.4q.25 0 .525.162q.275.163.4.388Z"></path></svg><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="Select language"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em" style="height:1.25rem;width:1.25rem;vertical-align:bottom;" viewbox="0 0 24 24"><path fill="currentColor" d="M13.35 22q-.6 0-.862-.387q-.263-.388-.063-.963l3.65-9.675q.15-.4.563-.688Q17.05 10 17.5 10q.425 0 .85.287q.425.288.575.688l3.65 9.675q.2.575-.062.963q-.263.387-.888.387q-.275 0-.5-.175q-.225-.175-.325-.425l-.85-2.45H15.1l-.875 2.45q-.1.25-.35.425q-.25.175-.525.175Zm2.35-4.8h3.6l-1.75-4.95h-.1ZM7.15 8.55q.4.725.85 1.337q.45.613 1.05 1.263q1.1-1.2 1.825-2.462Q11.6 7.425 12.1 6H2q-.425 0-.712-.287Q1 5.425 1 5t.288-.713Q1.575 4 2 4h6V3q0-.425.288-.713Q8.575 2 9 2t.713.287Q10 2.575 10 3v1h6q.425 0 .712.287Q17 4.575 17 5t-.288.713Q16.425 6 16 6h-1.9q-.525 1.775-1.425 3.45q-.9 1.675-2.225 3.15l2.4 2.45l-.75 2.05L9 14l-4.3 4.3q-.275.275-.7.275q-.425 0-.7-.275q-.275-.275-.275-.7q0-.425.275-.7l4.35-4.35q-.675-.775-1.25-1.563q-.575-.787-1.025-1.662Q5.1 8.8 5.35 8.4t.875-.4q.25 0 .525.162q.275.163.4.388Z"></path></svg><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a aria-current="page" href="/doc/profiler.html" class="router-link-active router-link-exact-active router-link-active" aria-label="简体中文"><!--[--><!--]--> 简体中文 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/en/doc/profiler.html" class="" aria-label="English"><!--[--><!--]--> English <!--[--><!--]--></a></li><!--]--></ul></div></div><div class="navbar-item"><a class="external-link" href="https://github.com/alibaba/arthas" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 24 24" style="height:1.25rem;width:1.25rem;vertical-align:bottom;"><path fill="currentColor" d="M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33c.85 0 1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2Z"></path></svg><!----><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><!--[--><div class="sidebar-search-wrapper" data-v-ff139ca7><div class="sidebar-search" role="search" data-v-ff139ca7><span class="sidebar-search-icon" aria-hidden="true" data-v-ff139ca7></span><input value="" class="sidebar-search-input" type="search" placeholder="搜索" aria-label="搜索" data-v-ff139ca7><!----></div></div><ul class="sidebar-items" data-v-ff139ca7><!--[--><li data-v-ff139ca7 data-v-558ea87d><p tabindex="0" class="sidebar-item sidebar-heading active" data-v-558ea87d>文档 <!----></p><ul style="" class="sidebar-item-children" data-v-558ea87d><!--[--><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/" class="router-link-active sidebar-item" aria-label="简介" data-v-558ea87d><!--[--><!--]--> 简介 <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/quick-start.html" class="sidebar-item" aria-label="快速入门" data-v-558ea87d><!--[--><!--]--> 快速入门 <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/install-detail.html" class="sidebar-item" aria-label="Arthas Install" data-v-558ea87d><!--[--><!--]--> Arthas Install <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/download.html" class="sidebar-item" aria-label="下载" data-v-558ea87d><!--[--><!--]--> 下载 <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/advice-class.html" class="sidebar-item" aria-label="表达式核心变量" data-v-558ea87d><!--[--><!--]--> 表达式核心变量 <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row active collapsible" data-v-558ea87d><button type="button" class="sidebar-tree-toggle" aria-expanded="true" aria-label="收起 命令列表" data-v-558ea87d><span class="open sidebar-tree-chevron" aria-hidden="true" data-v-558ea87d></span></button><a href="/doc/commands.md" class="sidebar-item active collapsible" aria-label="命令列表" data-v-558ea87d><!--[--><!--]--> 命令列表 <!--[--><!--]--></a></div><ul style="" class="sidebar-item-children" data-v-558ea87d><!--[--><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/auth.html" class="sidebar-item" aria-label="auth" data-v-558ea87d><!--[--><!--]--> auth <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/base64.html" class="sidebar-item" aria-label="base64" data-v-558ea87d><!--[--><!--]--> base64 <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/cat.html" class="sidebar-item" aria-label="cat" data-v-558ea87d><!--[--><!--]--> cat <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/classloader.html" class="sidebar-item" aria-label="classloader" data-v-558ea87d><!--[--><!--]--> classloader <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/classloader-metaspace.html" class="sidebar-item" aria-label="classloader-metaspace" data-v-558ea87d><!--[--><!--]--> classloader-metaspace <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/cls.html" class="sidebar-item" aria-label="cls" data-v-558ea87d><!--[--><!--]--> cls <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/dashboard.html" class="sidebar-item" aria-label="dashboard" data-v-558ea87d><!--[--><!--]--> dashboard <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/dump.html" class="sidebar-item" aria-label="dump" data-v-558ea87d><!--[--><!--]--> dump <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/echo.html" class="sidebar-item" aria-label="echo" data-v-558ea87d><!--[--><!--]--> echo <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/getstatic.html" class="sidebar-item" aria-label="getstatic" data-v-558ea87d><!--[--><!--]--> getstatic <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/grep.html" class="sidebar-item" aria-label="grep" data-v-558ea87d><!--[--><!--]--> grep <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/heapdump.html" class="sidebar-item" aria-label="heapdump" data-v-558ea87d><!--[--><!--]--> heapdump <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/help.html" class="sidebar-item" aria-label="help" data-v-558ea87d><!--[--><!--]--> help <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/history.html" class="sidebar-item" aria-label="history" data-v-558ea87d><!--[--><!--]--> history <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/jad.html" class="sidebar-item" aria-label="jad" data-v-558ea87d><!--[--><!--]--> jad <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/jfr.html" class="sidebar-item" aria-label="jfr" data-v-558ea87d><!--[--><!--]--> jfr <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/jvm.html" class="sidebar-item" aria-label="jvm" data-v-558ea87d><!--[--><!--]--> jvm <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/keymap.html" class="sidebar-item" aria-label="keymap" data-v-558ea87d><!--[--><!--]--> keymap <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/line.html" class="sidebar-item" aria-label="line" data-v-558ea87d><!--[--><!--]--> line <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/logger.html" class="sidebar-item" aria-label="logger" data-v-558ea87d><!--[--><!--]--> logger <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/mbean.html" class="sidebar-item" aria-label="mbean" data-v-558ea87d><!--[--><!--]--> mbean <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/mc.html" class="sidebar-item" aria-label="mc" data-v-558ea87d><!--[--><!--]--> mc <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/memory.html" class="sidebar-item" aria-label="memory" data-v-558ea87d><!--[--><!--]--> memory <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/monitor.html" class="sidebar-item" aria-label="monitor" data-v-558ea87d><!--[--><!--]--> monitor <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/ognl.html" class="sidebar-item" aria-label="ognl" data-v-558ea87d><!--[--><!--]--> ognl <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/ognl-express.html" class="sidebar-item" aria-label="OGNL 复杂表达式使用技巧" data-v-558ea87d><!--[--><!--]--> OGNL 复杂表达式使用技巧 <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/options.html" class="sidebar-item" aria-label="options" data-v-558ea87d><!--[--><!--]--> options <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/perfcounter.html" class="sidebar-item" aria-label="perfcounter" data-v-558ea87d><!--[--><!--]--> perfcounter <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row active" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a aria-current="page" href="/doc/profiler.html" class="router-link-active router-link-exact-active router-link-active sidebar-item active" aria-label="profiler" data-v-558ea87d><!--[--><!--]--> profiler <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/pwd.html" class="sidebar-item" aria-label="pwd" data-v-558ea87d><!--[--><!--]--> pwd <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/quit.html" class="sidebar-item" aria-label="quit" data-v-558ea87d><!--[--><!--]--> quit <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/redefine.html" class="sidebar-item" aria-label="redefine" data-v-558ea87d><!--[--><!--]--> redefine <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/reset.html" class="sidebar-item" aria-label="reset" data-v-558ea87d><!--[--><!--]--> reset <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/retransform.html" class="sidebar-item" aria-label="retransform" data-v-558ea87d><!--[--><!--]--> retransform <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/sc.html" class="sidebar-item" aria-label="sc" data-v-558ea87d><!--[--><!--]--> sc <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/session.html" class="sidebar-item" aria-label="session" data-v-558ea87d><!--[--><!--]--> session <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/sm.html" class="sidebar-item" aria-label="sm" data-v-558ea87d><!--[--><!--]--> sm <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/stack.html" class="sidebar-item" aria-label="stack" data-v-558ea87d><!--[--><!--]--> stack <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/stop.html" class="sidebar-item" aria-label="stop" data-v-558ea87d><!--[--><!--]--> stop <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/sysenv.html" class="sidebar-item" aria-label="sysenv" data-v-558ea87d><!--[--><!--]--> sysenv <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/sysprop.html" class="sidebar-item" aria-label="sysprop" data-v-558ea87d><!--[--><!--]--> sysprop <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/tee.html" class="sidebar-item" aria-label="tee" data-v-558ea87d><!--[--><!--]--> tee <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/thread.html" class="sidebar-item" aria-label="thread" data-v-558ea87d><!--[--><!--]--> thread <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/trace.html" class="sidebar-item" aria-label="trace" data-v-558ea87d><!--[--><!--]--> trace <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/tt.html" class="sidebar-item" aria-label="tt" data-v-558ea87d><!--[--><!--]--> tt <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/version.html" class="sidebar-item" aria-label="version" data-v-558ea87d><!--[--><!--]--> version <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/vmoption.html" class="sidebar-item" aria-label="vmoption" data-v-558ea87d><!--[--><!--]--> vmoption <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/vmtool.html" class="sidebar-item" aria-label="vmtool" data-v-558ea87d><!--[--><!--]--> vmtool <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/watch.html" class="sidebar-item" aria-label="watch" data-v-558ea87d><!--[--><!--]--> watch <!--[--><!--]--></a></div><!----></li><!--]--></ul></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row collapsible" data-v-558ea87d><button type="button" class="sidebar-tree-toggle" aria-expanded="false" aria-label="展开 AI 相关" data-v-558ea87d><span class="sidebar-tree-chevron" aria-hidden="true" data-v-558ea87d></span></button><a href="/doc/ai.md" class="sidebar-item collapsible" aria-label="AI 相关" data-v-558ea87d><!--[--><!--]--> AI 相关 <!--[--><!--]--></a></div><ul style="display:none;" class="sidebar-item-children" data-v-558ea87d><!--[--><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/mcp-server.html" class="sidebar-item" aria-label="Arthas MCP Server" data-v-558ea87d><!--[--><!--]--> Arthas MCP Server <!--[--><!--]--></a></div><!----></li><!--]--></ul></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row collapsible" data-v-558ea87d><button type="button" class="sidebar-tree-toggle" aria-expanded="false" aria-label="展开 其他特性" data-v-558ea87d><span class="sidebar-tree-chevron" aria-hidden="true" data-v-558ea87d></span></button><a href="/doc/advanced-use.md" class="sidebar-item collapsible" aria-label="其他特性" data-v-558ea87d><!--[--><!--]--> 其他特性 <!--[--><!--]--></a></div><ul style="display:none;" class="sidebar-item-children" data-v-558ea87d><!--[--><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/async.html" class="sidebar-item" aria-label="Arthas 后台异步任务" data-v-558ea87d><!--[--><!--]--> Arthas 后台异步任务 <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/save-log.html" class="sidebar-item" aria-label="执行结果存日志" data-v-558ea87d><!--[--><!--]--> 执行结果存日志 <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/docker.html" class="sidebar-item" aria-label="Docker" data-v-558ea87d><!--[--><!--]--> Docker <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/web-console.html" class="sidebar-item" aria-label="Web Console" data-v-558ea87d><!--[--><!--]--> Web Console <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/tunnel.html" class="sidebar-item" aria-label="Arthas Tunnel" data-v-558ea87d><!--[--><!--]--> Arthas Tunnel <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/idea-plugin.html" class="sidebar-item" aria-label="IDEA Plugin" data-v-558ea87d><!--[--><!--]--> IDEA Plugin <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/arthas-properties.html" class="sidebar-item" aria-label="Arthas Properties" data-v-558ea87d><!--[--><!--]--> Arthas Properties <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/agent.html" class="sidebar-item" aria-label="以 Java Agent 的方式启动" data-v-558ea87d><!--[--><!--]--> 以 Java Agent 的方式启动 <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/spring-boot-starter.html" class="sidebar-item" aria-label="Arthas Spring Boot Starter" data-v-558ea87d><!--[--><!--]--> Arthas Spring Boot Starter <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/external-command.html" class="sidebar-item" aria-label="加载外部命令" data-v-558ea87d><!--[--><!--]--> 加载外部命令 <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/http-api.html" class="sidebar-item" aria-label="Http API" data-v-558ea87d><!--[--><!--]--> Http API <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/batch-support.html" class="sidebar-item" aria-label="批处理功能" data-v-558ea87d><!--[--><!--]--> 批处理功能 <!--[--><!--]--></a></div><!----></li><!--]--></ul></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/faq.html" class="sidebar-item" aria-label="FAQ" data-v-558ea87d><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a class="external-link sidebar-item" href="https://github.com/alibaba/arthas/issues?q=label%3Auser-case" rel="noopener noreferrer" target="_blank" aria-label="用户案例" data-v-558ea87d><!--[--><!--]--><span>用户案例</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a class="external-link sidebar-item" href="https://github.com/alibaba/arthas" rel="noopener noreferrer" target="_blank" aria-label="Star me at github" data-v-558ea87d><!--[--><!--]--><span>Star me at github</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a class="external-link sidebar-item" href="https://github.com/alibaba/arthas/blob/master/CONTRIBUTING.md" rel="noopener noreferrer" target="_blank" aria-label="编译调试/参与贡献" data-v-558ea87d><!--[--><!--]--><span>编译调试/参与贡献</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a class="external-link sidebar-item" href="https://github.com/alibaba/arthas/releases" rel="noopener noreferrer" target="_blank" aria-label="Release Notes" data-v-558ea87d><!--[--><!--]--><span>Release Notes</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/doc/contact-us.md" class="sidebar-item" aria-label="QQ 群/钉钉群" data-v-558ea87d><!--[--><!--]--> QQ 群/钉钉群 <!--[--><!--]--></a></div><!----></li><!--]--></ul></li><!--]--></ul><!--]--><!--[--><!--]--></aside><!--]--><!--[--><main class="page" data-v-fdd717e0><!--[--><!--]--><div class="right-menu-padding theme-default-content" data-v-fdd717e0><!--[--><!--]--><div class="right-menu-wrapper" data-v-fdd717e0 data-v-64666cd5><div class="right-menu-margin" data-v-64666cd5><div class="right-menu-title" data-v-64666cd5>目录</div><div class="right-menu-content" data-v-64666cd5><!--[--><!--]--></div></div></div><div data-v-fdd717e0><h1 id="profiler" tabindex="-1"><a class="header-anchor" href="#profiler" aria-hidden="true">#</a> profiler</h1><div class="custom-container tip"><p class="custom-container-title">提示</p><p>使用<a href="https://github.com/jvm-profiling-tools/async-profiler" target="_blank" rel="noopener noreferrer">async-profiler<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a>生成火焰图</p></div><p><code>profiler</code> 命令支持生成应用热点的火焰图。本质上是通过不断的采样,然后把收集到的采样结果生成火焰图。</p><p><code>profiler</code> 命令基本运行结构是 <code>profiler action [actionArg]</code></p><p><code>profiler</code> 命令的格式基本与上游项目 <a href="https://github.com/async-profiler/async-profiler" target="_blank" rel="noopener noreferrer">async-profiler<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a> 保持一致,详细的使用方式可参考上游项目的 README、Github Disscussions 以及其他文档资料。</p><h2 id="参数说明" tabindex="-1"><a class="header-anchor" href="#参数说明" aria-hidden="true">#</a> 参数说明</h2><table><thead><tr><th style="text-align:right;">参数名称</th><th style="text-align:left;">参数说明</th></tr></thead><tbody><tr><td style="text-align:right;"><em>action</em></td><td style="text-align:left;">要执行的操作</td></tr><tr><td style="text-align:right;"><em>actionArg</em></td><td style="text-align:left;">属性名模式</td></tr><tr><td style="text-align:right;">[i:]</td><td style="text-align:left;">采样间隔(单位:ns)(默认值:10'000'000,即 10 ms)</td></tr><tr><td style="text-align:right;">[f:]</td><td style="text-align:left;">将输出转储到指定路径</td></tr><tr><td style="text-align:right;">[d:]</td><td style="text-align:left;">运行评测指定秒</td></tr><tr><td style="text-align:right;">[e:]</td><td style="text-align:left;">要跟踪哪个事件(cpu, alloc, lock, cache-misses 等),默认是 cpu</td></tr></tbody></table><h2 id="启动-profiler" tabindex="-1"><a class="header-anchor" href="#启动-profiler" aria-hidden="true">#</a> 启动 profiler</h2><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>$ profiler start
|
||
Started [cpu] profiling
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><div class="custom-container tip"><p class="custom-container-title">提示</p><p>默认情况下,生成的是 cpu 的火焰图,即 event 为<code>cpu</code>。可以用<code>--event</code>参数指定其他性能分析模式,见下文。</p></div><h2 id="获取已采集的-sample-的数量" tabindex="-1"><a class="header-anchor" href="#获取已采集的-sample-的数量" aria-hidden="true">#</a> 获取已采集的 sample 的数量</h2><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>$ profiler getSamples
|
||
23
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="查看-profiling-状态" tabindex="-1"><a class="header-anchor" href="#查看-profiling-状态" aria-hidden="true">#</a> 查看 profiling 状态</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler status
|
||
<span class="token punctuation">[</span>cpu<span class="token punctuation">]</span> profiling is running <span class="token keyword">for</span> <span class="token number">4</span> seconds
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>可以查看当前 profiler 在采样哪种<code>event</code>和采样时间。</p><h2 id="查看-profiler-自身的内存占用" tabindex="-1"><a class="header-anchor" href="#查看-profiler-自身的内存占用" aria-hidden="true">#</a> 查看 profiler 自身的内存占用</h2><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>$ profiler meminfo
|
||
Call trace storage: 10244 KB
|
||
Dictionaries: 72 KB
|
||
Code cache: 12890 KB
|
||
------------------------------
|
||
Total: 23206 KB
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="停止-profiler" tabindex="-1"><a class="header-anchor" href="#停止-profiler" aria-hidden="true">#</a> 停止 profiler</h2><h3 id="生成火焰图格式结果" tabindex="-1"><a class="header-anchor" href="#生成火焰图格式结果" aria-hidden="true">#</a> 生成火焰图格式结果</h3><p>默认情况下,结果是 <a href="https://github.com/BrendanGregg/FlameGraph" target="_blank" rel="noopener noreferrer">Flame Graph<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a> 格式的 <code>html</code> 文件,也可以用 <code>-o</code> 或 <code>--format</code> 参数指定其他内容格式,包括 flat、traces、collapsed、flamegraph、tree、jfr、md。</p><h3 id="生成-llm-友好的-markdown-报告" tabindex="-1"><a class="header-anchor" href="#生成-llm-友好的-markdown-报告" aria-hidden="true">#</a> 生成 LLM 友好的 Markdown 报告</h3><p>当 <code>--format md</code>(或 <code>md=N</code>)时,Arthas 会基于 async-profiler 的 <code>collapsed</code> 输出生成结构化的 Markdown,便于直接复制到 LLM 或在终端里 grep。报告包含:</p><ul><li>Top N Hotspots(self)</li><li>Call Tree(调用树,按采样占比排序截断)</li><li>Function Details(每个热点函数的 Top stacks)</li></ul><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler stop <span class="token parameter variable">--format</span> md
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>指定输出文件(可选):</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler stop <span class="token parameter variable">--format</span> md <span class="token parameter variable">--file</span> /tmp/profile.md
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>如果 <code>--file</code> 以 <code>.md</code> 结尾且未指定 <code>--format</code>,将自动推断为 Markdown 输出:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler stop <span class="token parameter variable">--file</span> /tmp/profile.md
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>指定 TopN(可选,默认 10):</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler stop <span class="token parameter variable">--format</span> <span class="token assign-left variable">md</span><span class="token operator">=</span><span class="token number">20</span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler stop <span class="token parameter variable">--format</span> flamegraph
|
||
profiler output file: /tmp/test/arthas-output/20211207-111550.html
|
||
OK
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在<code>--file</code>参数指定的文件名后缀为 <code>html</code> 或 <code>jfr</code> 时,文件格式可以被推断出来。比如<code>--file /tmp/result.html</code> 将自动生成火焰图。</p><h2 id="通过浏览器查看-arthas-output-下面的-profiler-结果" tabindex="-1"><a class="header-anchor" href="#通过浏览器查看-arthas-output-下面的-profiler-结果" aria-hidden="true">#</a> 通过浏览器查看 arthas-output 下面的 profiler 结果</h2><p>默认情况下,arthas 使用 3658 端口,则可以打开: <a href="http://localhost:3658/arthas-output/" target="_blank" rel="noopener noreferrer">http://localhost:3658/arthas-output/<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a> 查看到<code>arthas-output</code>目录下面的 profiler 结果:</p><p><img src="/images/arthas-output.jpg" alt=""></p><p>点击可以查看具体的结果:</p><p><img src="/images/arthas-output-svg.jpg" alt=""></p><div class="custom-container tip"><p class="custom-container-title">提示</p><p>如果是 chrome 浏览器,可能需要多次刷新。</p></div><h2 id="profiler-支持的-events" tabindex="-1"><a class="header-anchor" href="#profiler-支持的-events" aria-hidden="true">#</a> profiler 支持的 events</h2><p>在不同的平台,不同的 OS 下面,支持的 events 各有不同。比如在 macos 下面:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler list
|
||
Basic events:
|
||
cpu
|
||
alloc
|
||
lock
|
||
wall
|
||
itimer
|
||
ctimer
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在 linux 下面</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler list
|
||
Basic events:
|
||
cpu
|
||
alloc
|
||
lock
|
||
wall
|
||
itimer
|
||
ctimer
|
||
Java method calls:
|
||
ClassName.methodName
|
||
Perf events:
|
||
page-faults
|
||
context-switches
|
||
cycles
|
||
instructions
|
||
cache-references
|
||
cache-misses
|
||
branch-instructions
|
||
branch-misses
|
||
bus-cycles
|
||
L1-dcache-load-misses
|
||
LLC-load-misses
|
||
dTLB-load-misses
|
||
rNNN
|
||
pmu/event-descriptor/
|
||
mem:breakpoint
|
||
trace:tracepoint
|
||
kprobe:func
|
||
uprobe:path
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>如果遇到 OS 本身的权限/配置问题,然后缺少部分 event,可以参考 <a href="https://github.com/jvm-profiling-tools/async-profiler" target="_blank" rel="noopener noreferrer">async-profiler 的文档<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a>。</p><p>可以用<code>--event</code>参数指定要采样的事件,比如 <code>alloc</code> 表示分析内存分配情况:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler start <span class="token parameter variable">--event</span> alloc
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="恢复采样" tabindex="-1"><a class="header-anchor" href="#恢复采样" aria-hidden="true">#</a> 恢复采样</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler resume
|
||
Started <span class="token punctuation">[</span>cpu<span class="token punctuation">]</span> profiling
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p><code>start</code>和<code>resume</code>的区别是:<code>start</code>会清除已有的分析结果重新开始,<code>resume</code>则会保留已有的结果,将新的分析结果附加到已有结果中。</p><p>通过执行<code>profiler getSamples</code>可以查看 samples 的数量来验证。</p><h2 id="dump-分析结果" tabindex="-1"><a class="header-anchor" href="#dump-分析结果" aria-hidden="true">#</a> Dump 分析结果</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler dump
|
||
OK
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p><code>dump</code> action 将性能分析的结果保存到默认文件或指定的文件中,但 profiling 过程不会停止。例如,如果使用 <code>start</code> action 启动 profiling,5 秒后执行 <code>dump</code> action,2 秒后再次执行 <code>dump</code> action,将会得到 2 个结果文件,第一个文件包括 0~5 秒的分析结果,第二个文件包括 0~7 秒的分析结果。</p><h2 id="使用execute来执行复杂的命令" tabindex="-1"><a class="header-anchor" href="#使用execute来执行复杂的命令" aria-hidden="true">#</a> 使用<code>execute</code>来执行复杂的命令</h2><p>比如开始采样:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler execute <span class="token string">'start,framebuf=5000000'</span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>停止采样,并保存到指定文件里:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler execute <span class="token string">'stop,file=/tmp/result.html'</span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>具体的格式参考: <a href="https://github.com/async-profiler/async-profiler/blob/v4.4/src/arguments.cpp#L52" target="_blank" rel="noopener noreferrer">arguments.cpp<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a></p><h2 id="查看所有支持的-action" tabindex="-1"><a class="header-anchor" href="#查看所有支持的-action" aria-hidden="true">#</a> 查看所有支持的 action</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler actions
|
||
Supported Actions: <span class="token punctuation">[</span>resume, dumpCollapsed, getSamples, start, list, version, execute, meminfo, stop, load, dumpFlat, dump, actions, dumpTraces, status<span class="token punctuation">]</span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="查看版本" tabindex="-1"><a class="header-anchor" href="#查看版本" aria-hidden="true">#</a> 查看版本</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ profiler version
|
||
async-profiler <span class="token number">4.4</span>
|
||
Copyright The async-profiler authors
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="配置-java-栈深度" tabindex="-1"><a class="header-anchor" href="#配置-java-栈深度" aria-hidden="true">#</a> 配置 Java 栈深度</h2><p>可以使用 <code>-j</code> 或 <code>--jstackdepth</code> 选项指定最大 Java 栈深度。如果指定值大于默认值 2048,该选项会被忽略。当你不希望看到特别深的栈轨迹的时候,这个选项会很有用,以下是一个使用样例:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">-j</span> <span class="token number">256</span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="各线程分别进行-profiling" tabindex="-1"><a class="header-anchor" href="#各线程分别进行-profiling" aria-hidden="true">#</a> 各线程分别进行 profiling</h2><p>可以使用 <code>-t</code> 或 <code>--threads</code> 标志选项令 profiling 对各线程分别进行,每个栈轨迹都会以指示单个线程的帧结束。</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">-t</span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="配置-include-exclude-来过滤数据" tabindex="-1"><a class="header-anchor" href="#配置-include-exclude-来过滤数据" aria-hidden="true">#</a> 配置 include/exclude 来过滤数据</h2><p>如果应用比较复杂,生成的内容很多,想只关注部分 stack traces,可以通过 <code>--include/--exclude</code> 过滤 stack traces,<code>--include</code> 表示定义的匹配表达式必须出现在 stack traces,相反 <code>--exclude</code> 表示定义的匹配表达式一定不会出现在 stack traces。 匹配表达式可以以<code>*</code>开始或者结束,<code>*</code> 表示任何(可能为空)字符序列。 比如</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler stop <span class="token parameter variable">--include</span> <span class="token string">'java/*'</span> <span class="token parameter variable">--include</span> <span class="token string">'com/demo/*'</span> <span class="token parameter variable">--exclude</span> <span class="token string">'*Unsafe.park*'</span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><blockquote><p><code>--include/--exclude</code> 都支持多次设置,但是需要配置在命令行的最后。也可使用短参数格式 <code>-I/-X</code>。 注意<code>--include/--exclude</code>只支持在<code>stop</code>action或者带有<code>-d</code>/<code>--duration</code>参数的<code>start</code>action中指定,否则不生效。</p></blockquote><h2 id="指定执行时间" tabindex="-1"><a class="header-anchor" href="#指定执行时间" aria-hidden="true">#</a> 指定执行时间</h2><p>比如,希望 profiler 执行 300 秒自动结束,可以用 <code>-d</code>/<code>--duration</code> 参数为 start action 指定时间:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">--duration</span> <span class="token number">300</span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="生成-jfr-格式结果" tabindex="-1"><a class="header-anchor" href="#生成-jfr-格式结果" aria-hidden="true">#</a> 生成 jfr 格式结果</h2><blockquote><p>注意,jfr 只支持在 <code>start</code>时配置。如果是在<code>stop</code>时指定,则不会生效。</p></blockquote><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>profiler start --file /tmp/test.jfr
|
||
profiler start -o jfr
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p><code>file</code>参数支持一些变量:</p><ul><li>时间戳: <code>--file /tmp/test-%t.jfr</code></li><li>进程 ID: <code>--file /tmp/test-%p.jfr</code></li></ul><p>生成的结果可以用支持 jfr 格式的工具来查看。比如:</p><ul><li>JDK Mission Control : https://github.com/openjdk/jmc</li><li>JProfiler : https://github.com/alibaba/arthas/issues/1416</li></ul><h2 id="控制分析结果的格式" tabindex="-1"><a class="header-anchor" href="#控制分析结果的格式" aria-hidden="true">#</a> 控制分析结果的格式</h2><p>使用 <code>-s</code> 选项将结果中的 Fully qualified name 替换为简单名称,如 <code>demo.MathGame.main</code> 替换为 <code>MathGame.main</code>。使用 <code>-g</code> 选项指定输出方法签名,如 <code>demo.MathGame.main</code> 替换为 <code>demo.MathGame.main([Ljava/lang/String;)V</code>。此外还有许多可调整分析结果格式的选项,可参考 <a href="https://github.com/async-profiler/async-profiler#readme" target="_blank" rel="noopener noreferrer">async-profiler 的 README 文档<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a> 以及 <a href="https://github.com/async-profiler/async-profiler/discussions" target="_blank" rel="noopener noreferrer">async-profiler 的 Github Discussions<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a> 等材料。</p><p>例如,以下命令中,<code>-s</code> 将输出中的类名称指定为简短格式,<code>-g</code> 显示方法的完整签名,<code>-a</code> 标注出 Java 方法,<code>-l</code> 为原生方法增加库名称,<code>--title</code> 为生成火焰图页面指定标题,<code>--minwidth</code> 将过滤火焰图中宽度为 15% 以下的帧,<code>--reverse</code> 将火焰图倒置。</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>profiler stop -s -g -a -l --title <flametitle> --minwidth 15 --reverse
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="生成的火焰图里的-unknown" tabindex="-1"><a class="header-anchor" href="#生成的火焰图里的-unknown" aria-hidden="true">#</a> 生成的火焰图里的 unknown</h2><ul><li>https://github.com/jvm-profiling-tools/async-profiler/discussions/409</li></ul><h2 id="配置-locks-allocations-模式的阈值" tabindex="-1"><a class="header-anchor" href="#配置-locks-allocations-模式的阈值" aria-hidden="true">#</a> 配置 locks/allocations 模式的阈值</h2><p>当使用 lock 或 alloc event 进行 profiling 时,可以使用 <code>--lock</code> 或 <code>--alloc</code> 配置阈值,比如下列命令:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">-e</span> lock <span class="token parameter variable">--lock</span> 10ms
|
||
profiler start <span class="token parameter variable">-e</span> alloc <span class="token parameter variable">--alloc</span> 2m
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>会记录竞争时间超过 10ms 的锁(如果不指定时间单位,则使用 ns 为单位),或者以 2MB 的单位记录对内存的分配。</p><h2 id="配置-jfr-块" tabindex="-1"><a class="header-anchor" href="#配置-jfr-块" aria-hidden="true">#</a> 配置 JFR 块</h2><p>当使用 JFR 作为输出格式时,可以使用 <code>--chunksize</code> 或 <code>--chunktime</code> 配置单个 JFR 块的大致容量(以 byte 为单位,默认 100 MB)和时间限制(默认值为 1 小时),比如:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">-f</span> profile.jfr <span class="token parameter variable">--chunksize</span> 100m <span class="token parameter variable">--chunktime</span> 1h
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="将线程按照调度策略分组" tabindex="-1"><a class="header-anchor" href="#将线程按照调度策略分组" aria-hidden="true">#</a> 将线程按照调度策略分组</h2><p>可以使用 <code>--sched</code> 标志选项将输出结果按照 Linux 线程调度策略分组,策略包括 BATCH/IDLE/OTHER。例如:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">--sched</span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>火焰图的倒数第二行会标记不同的调度策略。</p><h2 id="仅用未销毁对象构建内存分析结果" tabindex="-1"><a class="header-anchor" href="#仅用未销毁对象构建内存分析结果" aria-hidden="true">#</a> 仅用未销毁对象构建内存分析结果</h2><p>使用 <code>--live</code> 标志选项在内存分析结果中仅保留那些在分析过程结束时仍未被 JVM 回收的对象。该选项在排查 Java 堆内存泄露问题时比较有用。</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">--live</span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="配置收集-c-栈帧的方法" tabindex="-1"><a class="header-anchor" href="#配置收集-c-栈帧的方法" aria-hidden="true">#</a> 配置收集 C 栈帧的方法</h2><p>使用 <code>--cstack MODE</code> 配置收集 native 帧的方法。候选模式有 fp (Frame Pointer), dwarf (DWARF unwind info), vm、vmx (HotSpot VM Structs),以及 no (不收集 native 栈帧).</p><p>默认情况下,C 栈帧会出现在 cpu、ctimer、wall-clock、perf-events 模式中,而 Java 级别的 event 比如 alloc 和 lock 只收集 Java stack。</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler <span class="token parameter variable">--cstack</span> fp
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>此命令将收集 native 栈帧的 Frame Pointer 信息。</p><h2 id="当指定-native-函数执行时开始-停止-profiling" tabindex="-1"><a class="header-anchor" href="#当指定-native-函数执行时开始-停止-profiling" aria-hidden="true">#</a> 当指定 Native 函数执行时开始/停止 Profiling</h2><p>使用 <code>--begin function</code> 和 <code>--end function</code> 选项,可以在指定的 Native 函数被执行时启动或终止性能分析。主要用途是分析特定的 JVM 阶段,比如 GC 和 Safepoint。需要使用特定 JVM 实现中的 Native 函数名,比如在 HotSpot JVM 中的 SafepointSynchronize::begin 和 SafepointSynchronize::end。</p><h3 id="time-to-safepoint-profiling" tabindex="-1"><a class="header-anchor" href="#time-to-safepoint-profiling" aria-hidden="true">#</a> Time-to-Safepoint Profiling</h3><p>选项 <code>--ttsp</code> 实际上是 <code>--begin SafepointSynchronize::begin --end RuntimeService::record_safepoint_synchronized</code> 的一个别名。它是一种约束,而不是独立的事件类型。无论选择哪种事件,Profiler 都可以正常工作,但只有在 VM 操作和 Safepoint 请求之间的事件会被记录下来。</p><p>现在,当使用 <code>--ttsp</code> 选项并指定 JFR 输出格式时,<code>profiler</code> 会在生成的 JFR 文件中自动包含 profiler.Window 事件。这些事件表示每次 Time-to-Safepoint 暂停的时间区间,使您无需依赖 JVM 日志即可分析这些暂停。</p><p>示例</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">--begin</span> SafepointSynchronize::begin <span class="token parameter variable">--end</span> RuntimeService::record_safepoint_synchronized
|
||
profiler start <span class="token parameter variable">--ttsp</span> <span class="token parameter variable">--format</span> jfr
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>生成的 JFR 文件将包含 profiler.Window 事件,可以使用 JDK Mission Control 等工具查看和分析这些事件。</p><p><strong>注意事项:</strong></p><ul><li><p>profiler.Window 事件是通用的事件,适用于任何使用 --begin 和 --end 触发器的时间窗口,不仅限于 Safepoint 暂停。</p></li><li><p>在分析长时间的 Safepoint 暂停时,profiler.Window 事件可帮助您识别造成延迟的原因。</p></li><li><p>当使用 --ttsp 选项时,请确保使用 JFR 输出格式,以便能够生成并查看 profiler.Window 事件。</p></li></ul><h2 id="使用-profiler-记录的-event-生成-jfr-文件" tabindex="-1"><a class="header-anchor" href="#使用-profiler-记录的-event-生成-jfr-文件" aria-hidden="true">#</a> 使用 profiler 记录的 event 生成 JFR 文件</h2><p>用 <code>--jfrsync CONFIG</code> 选项可以指定配置启动 Java Flight Recording,输出的 jfr 文件会包含所有常规的 JFR event,但采样的来源是由 profiler 提供的。</p><p>CONFIG 参数:</p><ul><li>预置配置:CONFIG 可以是 profile,表示使用 $JAVA_HOME/lib/jfr 目录下预置的 profile 配置。</li><li>自定义配置文件:CONFIG 也可以是自定义的 JFR 配置文件(.jfc),此选项的值采用与 jcmd JFR.start 命令的 settings 选项相同的格式。</li><li>指定 JFR 事件列表:现在,可以直接在 --jfrsync 中指定要启用的 JFR 事件列表,而无需创建 .jfc 文件。要指定事件列表,请以 + 开头,多个事件用 + 分隔。</li></ul><p>示例:</p><p>使用预置的 profile 配置启动 JFR:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">-e</span> cpu <span class="token parameter variable">--jfrsync</span> profile <span class="token parameter variable">-f</span> combined.jfr
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>直接指定 JFR 事件列表,例如启用 jdk.YoungGarbageCollection 和 jdk.OldGarbageCollection 事件:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">-e</span> cpu <span class="token parameter variable">--jfrsync</span> +jdk.YoungGarbageCollection+jdk.OldGarbageCollection <span class="token parameter variable">-f</span> combined.jfr
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>注意事项</strong></p><ul><li>当指定事件列表时,由于逗号 , 用于分隔不同的选项,因此事件之间使用加号 + 分隔。</li><li>如果 --jfrsync 参数不以 + 开头,则被视为预置配置名或 .jfc 配置文件的路径。</li><li>直接指定事件列表在目标应用运行在容器中时特别有用,无需额外的文件操作。</li></ul><h2 id="周期性保存结果" tabindex="-1"><a class="header-anchor" href="#周期性保存结果" aria-hidden="true">#</a> 周期性保存结果</h2><p>使用 <code>--loop TIME</code> 可以持续运行 profiler 并周期性保存结果。选项格式可以是具体时间 hh:mm:ss 或以秒、分钟、小时或天计算的时间间隔。需要确保指定的输出文件名中包含时间戳,否则每次输出的结果都会覆盖上次保存的结果。以下命令持续执行 profiling 并将每个小时内的记录保存到一个 jfr 文件中。</p><blockquote><p>如果没有指定 <code>-f</code> 参数,则不会保存任何内容。如果 <code>-f</code> 参数里没有 <code>%t</code>,则会循环保存到同一个文件里。</p></blockquote><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">--loop</span> 1h <span class="token parameter variable">-f</span> /var/log/profile-%t.jfr
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="timeout-选项" tabindex="-1"><a class="header-anchor" href="#timeout-选项" aria-hidden="true">#</a> <code>--timeout</code> 选项</h2><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">--timeout</span> 300s
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>这个选项指定 profiling 自动在多久后停止。该选项和 <code>--loop</code> 选项的格式一致,可以是时间点,也可以是一个时间间隔。这两个选项都是用于 <code>start</code> action。可参考 <a href="https://github.com/async-profiler/async-profiler/blob/master/docs/ProfilerOptions.md" target="_blank" rel="noopener noreferrer">async-profiler docs<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a> 了解更多信息。</p><h2 id="wall-选项" tabindex="-1"><a class="header-anchor" href="#wall-选项" aria-hidden="true">#</a> <code>--wall</code> 选项</h2><p>通过 --wall 选项,可以同时进行 CPU 和 Wall Clock 的性能分析。</p><ol><li>这种联合分析有助于更全面地识别和理解应用程序的性能瓶颈。</li><li>允许用户独立于 CPU 分析设置 Wall Clock 分析的采样间隔。比如,可以通过设置 -e cpu -i 10 --wall 200,将 CPU 采样间隔设为 10 毫秒,墙钟采样间隔设为 200 毫秒。</li><li>联合进行 CPU 和 Wall Clock 分析时,输出格式必须设置为 jfr。这一格式支持记录线程的状态信息(如 STATE_RUNNABLE 或 STATE_SLEEPING),从而区分不同类型的采样事件。</li></ol><p>可参考 <a href="https://github.com/async-profiler/async-profiler/issues/740" target="_blank" rel="noopener noreferrer">async-profiler Github pr#740<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a> 了解更多信息。</p><p>影响:</p><p>Linux 平台: 这个新功能仅在 Linux 平台上有效。macOS 上的 CPU 分析引擎已经基于 Wall clock 模式,因此没有额外的收益。 性能开销: 启用 Wall clock 分析会增加性能开销,因此在同时分析 CPU 和 Wall clock 时,建议增加 Wall clock 的间隔。</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">-e</span> cpu <span class="token parameter variable">-i</span> <span class="token number">10</span> <span class="token parameter variable">--wall</span> <span class="token number">100</span> <span class="token parameter variable">-f</span> out.jfr
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="ctimer事件" tabindex="-1"><a class="header-anchor" href="#ctimer事件" aria-hidden="true">#</a> <code>ctimer</code>事件</h2><p><code>ctimer</code> 事件是一种新的 CPU 采样模式,基于 <code>timer_create</code>,提供了无需 <code>perf_events</code> 的精确 CPU 采样。</p><p>在某些情况下,<code>perf_events</code> 可能不可用,例如由于 <code>perf_event_paranoid</code> 设置或 <code>seccomp</code> 限制,或者在容器环境中。虽然 itimer 事件可以在容器中工作,但可能存在采样不准确的问题。</p><p><code>ctimer</code> 事件结合了 <code>cpu</code> 和 <code>itimer</code> 的优点:</p><ul><li>高准确性:提供精确的 CPU 采样。</li><li>容器友好:默认在容器中可用。</li><li>低资源消耗:不消耗文件描述符。</li></ul><p><strong>请注意,<code>ctimer</code> 事件目前仅在 <code>Linux</code> 上支持,不支持 <code>macOS</code>。</strong> 可参考 <a href="https://github.com/async-profiler/async-profiler/issues/855" target="_blank" rel="noopener noreferrer">async-profiler Github Issues<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a> 了解更多信息。</p><p>示例:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">-e</span> ctimer <span class="token parameter variable">-o</span> jfr <span class="token parameter variable">-f</span> ./out-test.jfr
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="vtable特性" tabindex="-1"><a class="header-anchor" href="#vtable特性" aria-hidden="true">#</a> <code>vtable</code>特性</h2><p>在某些应用程序中,大量的 CPU 时间花费在调用 <code>megamorphic</code> 的虚方法或接口方法上,这在性能分析中显示为 <code>vtable stub</code> 或 <code>itable stub</code>。这无法帮助我们了解特定调用点为何是<code>megamorphic</code> 以及如何优化它。</p><p>vtable 特性可以在<code> vtable stub</code> 或 <code>itable stub</code> 之上添加一个伪帧,显示实际调用的对象类型。这有助于清楚地了解在特定调用点,不同接收者的比例。</p><p>该特性默认禁用,可以通过 <code>-F vtable</code> 选项启用(或使用 <code>features=vtable</code>)。 可参考 <a href="https://github.com/async-profiler/async-profiler/issues/736" target="_blank" rel="noopener noreferrer">async-profiler Github Issues<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a> 了解更多信息。</p><p>示例:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">-F</span> vtable
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="comptask-特性" tabindex="-1"><a class="header-anchor" href="#comptask-特性" aria-hidden="true">#</a> <code>comptask</code> 特性</h2><p><code>profiler</code> 采样 JIT 编译器线程以及 Java 线程,可以显示 JIT 编译所消耗的 CPU 百分比。然而,Java 方法的编译资源消耗各不相同,了解哪些特定的 Java 方法在编译时消耗最多的 CPU 时间非常有用。</p><p><code>comptask</code> 特性可以在 <code>C1/C2</code> 的堆栈跟踪中添加一个虚拟帧,显示当前正在编译的任务,即正在编译的 Java 方法。</p><p>该特性默认禁用,可以通过<code> -F comptask</code> 选项启用(或使用 <code>features=comptask</code>)。 可参考 <a href="https://github.com/async-profiler/async-profiler/issues/777" target="_blank" rel="noopener noreferrer">async-profiler Github Issues<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a> 了解更多信息。</p><p>示例:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">-F</span> comptask
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="配置替代的分析信号" tabindex="-1"><a class="header-anchor" href="#配置替代的分析信号" aria-hidden="true">#</a> 配置替代的分析信号</h2><p><code>profiler</code> 使用 <code>POSIX</code> 信号来进行性能分析。默认情况下,<code>SIGPROF</code> 用于 <code>CPU</code> 分析,<code>SIGVTALRM</code> 用于 <code>Wall-Clock</code> 分析。然而,如果应用程序也使用这些信号,或者希望同时运行多个 <code>profiler</code> 实例,这可能会导致信号冲突。</p><p>现在,可以使用 <code>signal</code> 参数来配置用于分析的信号,以避免冲突。 可参考 <a href="https://github.com/async-profiler/async-profiler/issues/759" target="_blank" rel="noopener noreferrer">async-profiler Github Issues<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a> 了解更多信息。</p><p>语法</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">--signal</span> <span class="token operator"><</span>信号号码<span class="token operator">></span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>如果需要分别指定 CPU 和 Wall-Clock 分析的信号,可以使用以下语法:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">--signal</span> <span class="token operator"><</span>CPU信号号码<span class="token operator">></span>/<span class="token operator"><</span>Wall信号号码<span class="token operator">></span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="clock-选项" tabindex="-1"><a class="header-anchor" href="#clock-选项" aria-hidden="true">#</a> <code>--clock</code> 选项</h2><p><code>--clock</code> 选项允许用户控制用于采样时间戳的时钟源。这对于需要将 <code>profiler</code> 的数据与其他工具的数据进行时间戳对齐的场景非常有用。</p><p>用法</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">--clock</span> <span class="token operator"><</span>tsc<span class="token operator">|</span>monotonic<span class="token operator">></span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>参数</p><ul><li><code>tsc</code>:使用 CPU 的时间戳计数器(<code>RDTSC</code>)。这是默认选项,提供高精度的时间戳。</li><li><code>monotonic</code>:使用操作系统的单调时钟(<code>CLOCK_MONOTONIC</code>)。这有助于在多种数据源之间对齐时间戳。 可参考 <a href="https://github.com/async-profiler/async-profiler/issues/723" target="_blank" rel="noopener noreferrer">async-profiler Github Issues<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a> 了解更多信息。</li></ul><p>示例 :</p><p>使用 <code>CLOCK_MONOTONIC</code> 作为时间戳源:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">--clock</span> monotonic
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>注意事项:</strong></p><ul><li>当需要将 <code>profiler</code> 的数据与其他使用 <code>CLOCK_MONOTONIC</code> 的工具(例如 <code>perf</code>)的数据进行对齐时,使用 <code>--clock monotonic</code>。</li><li>在使用 <code>jfrsync</code> 模式时,请谨慎使用 <code>--clock</code> 选项,因为 JVM 和 <code>profiler</code> 可能使用不同的时间戳源,这可能导致结果不一致。</li></ul><h2 id="norm-选项" tabindex="-1"><a class="header-anchor" href="#norm-选项" aria-hidden="true">#</a> <code>--norm</code> 选项</h2><p>在 Java 20 及更早的版本中,编译器为 <code>lambda</code> 表达式生成的方法名称包含唯一的数字后缀。例如,同一代码位置定义的 <code>lambda</code> 表达式,可能会生成多个不同的帧名称,因为每个 <code>lambda</code> 方法的名称都会附加一个唯一的数字后缀(如 <code>lambda$method$0</code>、<code>lambda$method$1</code> 等)。这会导致逻辑上相同的堆栈无法在火焰图中合并,增加了性能分析的复杂性。</p><p>为了解决这个问题,<code>profiler</code> 新增了 <code>--norm</code> 选项,可以在生成输出时自动规范化方法名称,去除这些数字后缀,使相同的堆栈能够正确地合并。 可参考 <a href="https://github.com/async-profiler/async-profiler/issues/832" target="_blank" rel="noopener noreferrer">async-profiler Github Issues<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span></a> 了解更多信息。</p><p><strong>示例:</strong></p><p>生成规范化的火焰图:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>profiler start <span class="token parameter variable">--norm</span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></div><!--[--><!--]--></div><footer class="page-meta right-menu-padding" data-v-fdd717e0><div class="meta-item edit-link"><a class="external-link meta-item-label" href="https://github.com/alibaba/arthas/edit/master/site/docs/doc/profiler.md" rel="noopener noreferrer" target="_blank" aria-label="在 GitHub 上编辑此页"><!--[--><!--]--><span>在 GitHub 上编辑此页</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></div><div class="meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><div class="meta-item contributors"><span class="meta-item-label">贡献者: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: hengyunabc@gmail.com">hengyunabc</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: hollowman186@vip.qq.com">Hollow Man</span><!----><!--]--><!--]--></span></div></footer><nav class="page-nav right-menu-padding" data-v-fdd717e0><p class="inner"><span class="prev"><a href="/doc/perfcounter.html" class="" aria-label="perfcounter"><!--[--><!--]--> perfcounter <!--[--><!--]--></a></span><span class="next"><a href="/doc/pwd.html" class="" aria-label="pwd"><!--[--><!--]--> pwd <!--[--><!--]--></a></span></p></nav><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
|
||
<script type="module" src="/assets/app.e2427bec.js" defer></script>
|
||
</body>
|
||
</html>
|