You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
arthas/doc/trace.html

152 lines
113 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
3 years ago
<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>
3 years ago
<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);
})();
2 years ago
</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>trace | arthas</title><meta name="description" content="arthas 使用文档">
2 years ago
<link rel="modulepreload" href="/assets/app.a26fb751.js"><link rel="modulepreload" href="/assets/trace.html.0833e3b4.js"><link rel="modulepreload" href="/assets/trace.html.dee12253.js"><link rel="prefetch" href="/assets/index.html.84788405.js"><link rel="prefetch" href="/assets/index.html.806ea641.js"><link rel="prefetch" href="/assets/advanced-use.html.6a51f976.js"><link rel="prefetch" href="/assets/advice-class.html.224ee4a2.js"><link rel="prefetch" href="/assets/agent.html.7fb2e994.js"><link rel="prefetch" href="/assets/arthas-properties.html.0aa14eb6.js"><link rel="prefetch" href="/assets/arthas3.html.c547dc28.js"><link rel="prefetch" href="/assets/async.html.227408ac.js"><link rel="prefetch" href="/assets/auth.html.75b454c4.js"><link rel="prefetch" href="/assets/base64.html.cfb6f7e0.js"><link rel="prefetch" href="/assets/batch-support.html.6dd8c760.js"><link rel="prefetch" href="/assets/cat.html.6cdc566b.js"><link rel="prefetch" href="/assets/classloader.html.75c5e1ca.js"><link rel="prefetch" href="/assets/cls.html.2c126349.js"><link rel="prefetch" href="/assets/commands.html.23fd8667.js"><link rel="prefetch" href="/assets/contact-us.html.d767be56.js"><link rel="prefetch" href="/assets/dashboard.html.1dca4ac9.js"><link rel="prefetch" href="/assets/docker.html.9f25a18e.js"><link rel="prefetch" href="/assets/download.html.07b6d1c2.js"><link rel="prefetch" href="/assets/dump.html.213bb737.js"><link rel="prefetch" href="/assets/echo.html.8dc5f2cf.js"><link rel="prefetch" href="/assets/faq.html.bfa7b88d.js"><link rel="prefetch" href="/assets/getstatic.html.ea55aee5.js"><link rel="prefetch" href="/assets/grep.html.608be554.js"><link rel="prefetch" href="/assets/groovy.html.cb1faf0d.js"><link rel="prefetch" href="/assets/heapdump.html.d7c1054b.js"><link rel="prefetch" href="/assets/help.html.b816fbc7.js"><link rel="prefetch" href="/assets/history.html.585c7365.js"><link rel="prefetch" href="/assets/http-api.html.b873cd80.js"><link rel="prefetch" href="/assets/idea-plugin.html.ae8d6fdf.js"><link rel="prefetch" href="/assets/install-detail.html.a3dc2197.js"><link rel="prefetch" href="/assets/jad.html.d284d3c9.js"><link rel="prefetch" href="/assets/jfr.html.036cb593.js"><link rel="prefetch" href="/assets/jvm.html.9a5d399f.js"><link rel="prefetch" href="/assets/keymap.html.3df742d1.js"><link rel="prefetch" href="/assets/logger.html.0645797d.js"><link rel="prefetch" href="/assets/manual-install.html.0f1923ab.js"><link rel="prefetch" href="/assets/mbean.html.4ecaa7de.js"><link rel="prefetch" href="/assets/mc.html.03d8bb2f.js"><link rel="prefetch" href="/assets/memory.html.588ad57c.js"><link rel="prefetch" href="/assets/monitor.html.12cb2ce0.js"><link rel="prefetch" href="/assets/ognl.html.e34bbf20.js"><link rel="prefetch" href="/assets/options.html.668e000e.js"><link rel="prefetch" href="/assets/perfcounter.html.e5a4c6a0.js"><link rel="prefetch" href="/assets/profiler.html.2e0b667d.js"><link rel="prefetch" href="/assets/pwd.html.2d8e26f3.js"><link rel="prefetch" href="/assets/quick-start.html.66e6f859.js"><link rel="prefetch" href="/assets/quit.html.ee51efad.js"><link rel="prefetch" href="/assets/redefine.html.97540496.js"><link rel="prefetch" href="/assets/release-notes.html.a836d631.js"><link rel="prefetch" href="/assets/reset.html.e415a09c.js"><link rel="prefetch" href="/assets/retransform.html.7c2da729.js"><link rel="prefetch" href="/assets/save-log.html.676a8345.js"><link rel="prefetch" href="/assets/sc.html.7cc5c092.js"><link rel="prefetch" href="/assets/session.html.8e309fff.js"><link rel="prefetch" href="/assets/sm.html.488c49b6.js"><link rel="prefetch" href="/assets/spring-boot-starter.html.e9b63005.js"><link rel="prefetch" href="/assets/stack.html.347b1212.js"><link rel="prefetch" href="/assets/start-arthas.html.d9639d4c.js"><link rel="prefetch" href="/assets/stop.html.13a70a9e.js"><link rel="prefetch" href="/assets/sysenv.html.928f9596.js"><link rel="prefetch" href="/assets/sysprop.html.d7ae9a83.js"><link rel="prefetch" href="/assets/tee.html.8e722a1e.js"><link rel="prefetch" href="/assets/thread.html.5799728a.js
3 years ago
<link rel="stylesheet" href="/assets/style.da1934a3.css">
</head>
<body>
2 years ago
<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-61144abc><!----><span class="site-name can-hide" data-v-61144abc>arthas</span><span class="navbar-version" data-v-61144abc>v3.6.8</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 class="external-link" href="/doc/arthas-tutorials.html?language=cn&amp;id=arthas-basics" rel="noopener noreferrer" target="_blank" aria-label="在线教程"><!--[--><!--]--><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><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://cn.aliyun.com/product/aliware/mse?spm=arthas.topbar.0.0.0" rel="noopener noreferrer" target="_blank" aria-label="微服务解决方案"><!--[--><!--]--><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></li><li class="navbar-dropdown-item"><a class="external-link" href="https://www.aliyun.com/aliware/txc?spm=arthas.topbar.0.0.0" rel="noopener noreferrer" target="_blank" aria-label="分布式事务解决方案"><!--[--><!--]--><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></li><li class="navbar-dropdown-item"><a class="external-link" href="https://www.aliyun.com/product/ahas?spm=artha
Press Q or Ctrl+C to abort.
Affect<span class="token punctuation">(</span>class-cnt:1 , method-cnt:1<span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">28</span> ms.
<span class="token variable"><span class="token variable">`</span>---ts<span class="token operator">=</span><span class="token number">2019</span>-12-04 00:45:08<span class="token punctuation">;</span><span class="token assign-left variable">thread_name</span><span class="token operator">=</span>main<span class="token punctuation">;</span><span class="token assign-left variable">id</span><span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">;</span><span class="token assign-left variable">is_daemon</span><span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">priority</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token assign-left variable">TCCL</span><span class="token operator">=</span>sun.misc.Launcher$AppClassLoader@3d4eac69
<span class="token variable">`</span></span>---<span class="token punctuation">[</span><span class="token number">0</span>.617465ms<span class="token punctuation">]</span> demo.MathGame:run<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token variable"><span class="token variable">`</span>---<span class="token punctuation">[</span><span class="token number">0</span>.078946ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#24 [throws Exception]</span>
<span class="token variable">`</span></span>---ts<span class="token operator">=</span><span class="token number">2019</span>-12-04 00:45:09<span class="token punctuation">;</span><span class="token assign-left variable">thread_name</span><span class="token operator">=</span>main<span class="token punctuation">;</span><span class="token assign-left variable">id</span><span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">;</span><span class="token assign-left variable">is_daemon</span><span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">priority</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token assign-left variable">TCCL</span><span class="token operator">=</span>sun.misc.Launcher<span class="token variable">$AppClassLoader</span>@3d4eac69
<span class="token variable"><span class="token variable">`</span>---<span class="token punctuation">[</span><span class="token number">1</span>.276874ms<span class="token punctuation">]</span> demo.MathGame:run<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token variable">`</span></span>---<span class="token punctuation">[</span><span class="token number">0</span>.03752ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#24 [throws Exception]</span>
2 years ago
</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></div><div class="custom-container tip"><p class="custom-container-title">提示</p><p>结果里的 <code>#24</code>,表示在 run 函数里,在源文件的第<code>24</code>行调用了<code>primeFactors()</code>函数。</p></div><h3 id="指定-class-匹配的最大数量" tabindex="-1"><a class="header-anchor" href="#指定-class-匹配的最大数量" aria-hidden="true">#</a> 指定 Class 匹配的最大数量</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ trace demo.MathGame run <span class="token parameter variable">-m</span> <span class="token number">1</span>
Press Q or Ctrl+C to abort.
Affect<span class="token punctuation">(</span>class count: <span class="token number">1</span> , method count: <span class="token number">1</span><span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">412</span> ms, listenerId: <span class="token number">4</span>
<span class="token variable"><span class="token variable">`</span>---ts<span class="token operator">=</span><span class="token number">2022</span>-12-25 <span class="token number">21</span>:00:00<span class="token punctuation">;</span><span class="token assign-left variable">thread_name</span><span class="token operator">=</span>main<span class="token punctuation">;</span><span class="token assign-left variable">id</span><span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">;</span><span class="token assign-left variable">is_daemon</span><span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">priority</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token assign-left variable">TCCL</span><span class="token operator">=</span>sun.misc.Launcher$AppClassLoader@b4aac2
<span class="token variable">`</span></span>---<span class="token punctuation">[</span><span class="token number">0</span>.762093ms<span class="token punctuation">]</span> demo.MathGame:run<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token variable"><span class="token variable">`</span>---<span class="token punctuation">[</span><span class="token number">30.21</span>% <span class="token number">0</span>.230241ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#46 [throws Exception]</span>
<span class="token variable">`</span></span>---ts<span class="token operator">=</span><span class="token number">2022</span>-12-25 <span class="token number">21</span>:00:10<span class="token punctuation">;</span><span class="token assign-left variable">thread_name</span><span class="token operator">=</span>main<span class="token punctuation">;</span><span class="token assign-left variable">id</span><span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">;</span><span class="token assign-left variable">is_daemon</span><span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">priority</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token assign-left variable">TCCL</span><span class="token operator">=</span>sun.misc.Launcher<span class="token variable">$AppClassLoader</span>@b4aac2
<span class="token variable"><span class="token variable">`</span>---<span class="token punctuation">[</span><span class="token number">0</span>.315298ms<span class="token punctuation">]</span> demo.MathGame:run<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token variable">`</span></span>---<span class="token punctuation">[</span><span class="token number">13.95</span>% <span class="token number">0</span>.043995ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#46 [throws Exception]</span>
</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></div><h3 id="trace-次数限制" tabindex="-1"><a class="header-anchor" href="#trace-次数限制" aria-hidden="true">#</a> trace 次数限制</h3><p>如果方法调用的次数很多,那么可以用<code>-n</code>参数指定捕捉结果的次数。比如下面的例子里,捕捉到一次调用就退出命令。</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ trace demo.MathGame run <span class="token parameter variable">-n</span> <span class="token number">1</span>
Press Q or Ctrl+C to abort.
Affect<span class="token punctuation">(</span>class-cnt:1 , method-cnt:1<span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">20</span> ms.
<span class="token variable"><span class="token variable">`</span>---ts<span class="token operator">=</span><span class="token number">2019</span>-12-04 00:45:53<span class="token punctuation">;</span><span class="token assign-left variable">thread_name</span><span class="token operator">=</span>main<span class="token punctuation">;</span><span class="token assign-left variable">id</span><span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">;</span><span class="token assign-left variable">is_daemon</span><span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">priority</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token assign-left variable">TCCL</span><span class="token operator">=</span>sun.misc.Launcher$AppClassLoader@3d4eac69
<span class="token variable">`</span></span>---<span class="token punctuation">[</span><span class="token number">0</span>.549379ms<span class="token punctuation">]</span> demo.MathGame:run<span class="token punctuation">(</span><span class="token punctuation">)</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.059839ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#24</span>
`---<span class="token punctuation">[</span><span class="token number">0</span>.232887ms<span class="token punctuation">]</span> demo.MathGame:print<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#25</span>
3 years ago
Command execution <span class="token builtin class-name">times</span> exceed limit: <span class="token number">1</span>, so <span class="token builtin class-name">command</span> will exit. You can <span class="token builtin class-name">set</span> it with <span class="token parameter variable">-n</span> option.
</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></div><h3 id="包含-jdk-的函数" tabindex="-1"><a class="header-anchor" href="#包含-jdk-的函数" aria-hidden="true">#</a> 包含 jdk 的函数</h3><ul><li><code>--skipJDKMethod &lt;value&gt; </code> skip jdk method trace, default value true.</li></ul><p>默认情况下trace 不会包含 jdk 里的函数调用,如果希望 trace jdk 里的函数,需要显式设置<code>--skipJDKMethod false</code></p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ trace <span class="token parameter variable">--skipJDKMethod</span> <span class="token boolean">false</span> demo.MathGame run
Press Q or Ctrl+C to abort.
Affect<span class="token punctuation">(</span>class-cnt:1 , method-cnt:1<span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">60</span> ms.
<span class="token variable"><span class="token variable">`</span>---ts<span class="token operator">=</span><span class="token number">2019</span>-12-04 00:44:41<span class="token punctuation">;</span><span class="token assign-left variable">thread_name</span><span class="token operator">=</span>main<span class="token punctuation">;</span><span class="token assign-left variable">id</span><span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">;</span><span class="token assign-left variable">is_daemon</span><span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">priority</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token assign-left variable">TCCL</span><span class="token operator">=</span>sun.misc.Launcher$AppClassLoader@3d4eac69
<span class="token variable">`</span></span>---<span class="token punctuation">[</span><span class="token number">1</span>.357742ms<span class="token punctuation">]</span> demo.MathGame:run<span class="token punctuation">(</span><span class="token punctuation">)</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.028624ms<span class="token punctuation">]</span> java.util.Random:nextInt<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#23</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.045534ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#24 [throws Exception]</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.005372ms<span class="token punctuation">]</span> java.lang.StringBuilder:<span class="token operator">&lt;</span>init<span class="token operator">&gt;</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#28</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.012257ms<span class="token punctuation">]</span> java.lang.Integer:valueOf<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#28</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.234537ms<span class="token punctuation">]</span> java.lang.String:format<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#28</span>
+---<span class="token punctuation">[</span>min<span class="token operator">=</span><span class="token number">0</span>.004539ms,max<span class="token operator">=</span><span class="token number">0</span>.005778ms,total<span class="token operator">=</span><span class="token number">0</span>.010317ms,count<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">]</span> java.lang.StringBuilder:append<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#28</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.013777ms<span class="token punctuation">]</span> java.lang.Exception:getMessage<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#28</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.004935ms<span class="token punctuation">]</span> java.lang.StringBuilder:toString<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#28</span>
<span class="token variable"><span class="token variable">`</span>---<span class="token punctuation">[</span><span class="token number">0</span>.06941ms<span class="token punctuation">]</span> java.io.PrintStream:println<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#28</span>
<span class="token variable">`</span></span>---ts<span class="token operator">=</span><span class="token number">2019</span>-12-04 00:44:42<span class="token punctuation">;</span><span class="token assign-left variable">thread_name</span><span class="token operator">=</span>main<span class="token punctuation">;</span><span class="token assign-left variable">id</span><span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">;</span><span class="token assign-left variable">is_daemon</span><span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">priority</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token assign-left variable">TCCL</span><span class="token operator">=</span>sun.misc.Launcher<span class="token variable">$AppClassLoader</span>@3d4eac69
<span class="token variable"><span class="token variable">`</span>---<span class="token punctuation">[</span><span class="token number">3</span>.030432ms<span class="token punctuation">]</span> demo.MathGame:run<span class="token punctuation">(</span><span class="token punctuation">)</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.010473ms<span class="token punctuation">]</span> java.util.Random:nextInt<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#23</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.023715ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#24 [throws Exception]</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.005198ms<span class="token punctuation">]</span> java.lang.StringBuilder:<span class="token operator">&lt;</span>init<span class="token operator">&gt;</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#28</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.006405ms<span class="token punctuation">]</span> java.lang.Integer:valueOf<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#28</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.178583ms<span class="token punctuation">]</span> java.lang.String:format<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#28</span>
+---<span class="token punctuation">[</span>min<span class="token operator">=</span><span class="token number">0</span>.011636ms,max<span class="token operator">=</span><span class="token number">0</span>.838077ms,total<span class="token operator">=</span><span class="token number">0</span>.849713ms,count<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">]</span> java.lang.StringBuilder:append<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#28</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.008747ms<span class="token punctuation">]</span> java.lang.Exception:getMessage<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#28</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.019768ms<span class="token punctuation">]</span> java.lang.StringBuilder:toString<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#28</span>
<span class="token variable">`</span></span>---<span class="token punctuation">[</span><span class="token number">0</span>.076457ms<span class="token punctuation">]</span> java.io.PrintStream:println<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#28</span>
2 years ago
</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></div><h3 id="根据调用耗时过滤" tabindex="-1"><a class="header-anchor" href="#根据调用耗时过滤" aria-hidden="true">#</a> 根据调用耗时过滤</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ trace demo.MathGame run <span class="token string">&#39;#cost &gt; 10&#39;</span>
Press Ctrl+C to abort.
Affect<span class="token punctuation">(</span>class-cnt:1 , method-cnt:1<span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">41</span> ms.
<span class="token variable"><span class="token variable">`</span>---ts<span class="token operator">=</span><span class="token number">2018</span>-12-04 01:12:02<span class="token punctuation">;</span><span class="token assign-left variable">thread_name</span><span class="token operator">=</span>main<span class="token punctuation">;</span><span class="token assign-left variable">id</span><span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">;</span><span class="token assign-left variable">is_daemon</span><span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">priority</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token assign-left variable">TCCL</span><span class="token operator">=</span>sun.misc.Launcher$AppClassLoader@3d4eac69
<span class="token variable">`</span></span>---<span class="token punctuation">[</span><span class="token number">12</span>.033735ms<span class="token punctuation">]</span> demo.MathGame:run<span class="token punctuation">(</span><span class="token punctuation">)</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.006783ms<span class="token punctuation">]</span> java.util.Random:nextInt<span class="token punctuation">(</span><span class="token punctuation">)</span>
+---<span class="token punctuation">[</span><span class="token number">11</span>.852594ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span>
`---<span class="token punctuation">[</span><span class="token number">0</span>.05447ms<span class="token punctuation">]</span> demo.MathGame:print<span class="token punctuation">(</span><span class="token punctuation">)</span>
3 years ago
</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><div class="custom-container tip"><p class="custom-container-title">提示</p><p>只会展示耗时大于 10ms 的调用路径,有助于在排查问题的时候,只关注异常情况</p></div><ul><li>是不是很眼熟,没错,在 JProfiler 等收费软件中你曾经见识类似的功能,这里你将可以通过命令就能打印出指定调用路径。 友情提醒下,<code>trace</code> 在执行的过程中本身是会有一定的性能开销,在统计的报告中并未像 JProfiler 一样预先减去其自身的统计开销。所以这统计出来有些许的不准,渲染路径上调用的类、方法越多,性能偏差越大。但还是能让你看清一些事情的。</li><li>[12.033735ms] 的含义,<code>12.033735</code> 的含义是:当前节点在当前步骤的耗时,单位为毫秒</li><li>[0,0,0ms,11]xxx:yyy() [throws Exception],对该方法中相同的方法调用进行了合并,<code>0,0,0ms,11</code> 表示方法调用耗时,<code>min,max,total,count</code><code>throws Exception</code> 表明该方法调用中存在异常返回</li><li>这里存在一个统计不准确的问题,就是所有方法耗时加起来可能会小于该监测方法的总耗时,这个是由于 Arthas 本身的逻辑会有一定的耗时</li></ul><h3 id="trace-多个类或者多个函数" tabindex="-1"><a class="header-anchor" href="#trace-多个类或者多个函数" aria-hidden="true">#</a> trace 多个类或者多个函数</h3><p>trace 命令只会 trace 匹配到的函数里的子调用,并不会向下 trace 多层。因为 trace 是代价比较贵的,多层 trace 可能会导致最终要 trace 的类和函数非常多。</p><p>可以用正则表匹配路径上的多个类和函数,一定程度上达到多层 trace 的效果。</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>trace <span class="token parameter variable">-E</span> com.test.ClassA<span class="token operator">|</span>org.test.ClassB method1<span class="token operator">|</span>method2<span class="token operator">|</span>method3
3 years ago
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="排除掉指定的类" tabindex="-1"><a class="header-anchor" href="#排除掉指定的类" aria-hidden="true">#</a> 排除掉指定的类</h3><p>使用 <code>--exclude-class-pattern</code> 参数可以排除掉指定的类,比如:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>trace javax.servlet.Filter * --exclude-class-pattern com.demo.TestFilter
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="动态-trace" tabindex="-1"><a class="header-anchor" href="#动态-trace" aria-hidden="true">#</a> 动态 trace</h2><div class="custom-container tip"><p class="custom-container-title">提示</p><p>3.3.0 版本后支持。</p></div><p>打开终端 1trace 上面 demo 里的<code>run</code>函数,可以看到打印出 <code>listenerId: 1</code></p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token punctuation">[</span>arthas@59161<span class="token punctuation">]</span>$ trace demo.MathGame run
Press Q or Ctrl+C to abort.
Affect<span class="token punctuation">(</span>class count: <span class="token number">1</span> , method count: <span class="token number">1</span><span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">112</span> ms, listenerId: <span class="token number">1</span>
<span class="token variable"><span class="token variable">`</span>---ts<span class="token operator">=</span><span class="token number">2020</span>-07-09 <span class="token number">16</span>:48:11<span class="token punctuation">;</span><span class="token assign-left variable">thread_name</span><span class="token operator">=</span>main<span class="token punctuation">;</span><span class="token assign-left variable">id</span><span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">;</span><span class="token assign-left variable">is_daemon</span><span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">priority</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token assign-left variable">TCCL</span><span class="token operator">=</span>sun.misc.Launcher$AppClassLoader@3d4eac69
<span class="token variable">`</span></span>---<span class="token punctuation">[</span><span class="token number">1</span>.389634ms<span class="token punctuation">]</span> demo.MathGame:run<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token variable"><span class="token variable">`</span>---<span class="token punctuation">[</span><span class="token number">0</span>.123934ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#24 [throws Exception]</span>
<span class="token variable">`</span></span>---ts<span class="token operator">=</span><span class="token number">2020</span>-07-09 <span class="token number">16</span>:48:12<span class="token punctuation">;</span><span class="token assign-left variable">thread_name</span><span class="token operator">=</span>main<span class="token punctuation">;</span><span class="token assign-left variable">id</span><span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">;</span><span class="token assign-left variable">is_daemon</span><span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">priority</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token assign-left variable">TCCL</span><span class="token operator">=</span>sun.misc.Launcher<span class="token variable">$AppClassLoader</span>@3d4eac69
<span class="token variable"><span class="token variable">`</span>---<span class="token punctuation">[</span><span class="token number">3</span>.716391ms<span class="token punctuation">]</span> demo.MathGame:run<span class="token punctuation">(</span><span class="token punctuation">)</span>
+---<span class="token punctuation">[</span><span class="token number">3</span>.182813ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#24</span>
<span class="token variable">`</span></span>---<span class="token punctuation">[</span><span class="token number">0</span>.167786ms<span class="token punctuation">]</span> demo.MathGame:print<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#25</span>
3 years ago
</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></div><p>现在想要深入子函数<code>primeFactors</code>,可以打开一个新终端 2使用<code>telnet localhost 3658</code>连接上 arthas再 trace <code>primeFactors</code>时,指定<code>listenerId</code></p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token punctuation">[</span>arthas@59161<span class="token punctuation">]</span>$ trace demo.MathGame primeFactors <span class="token parameter variable">--listenerId</span> <span class="token number">1</span>
Press Q or Ctrl+C to abort.
Affect<span class="token punctuation">(</span>class count: <span class="token number">1</span> , method count: <span class="token number">1</span><span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">34</span> ms, listenerId: <span class="token number">1</span>
</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>这时终端 2 打印的结果,说明已经增强了一个函数:<code>Affect(class count: 1 , method count: 1)</code>,但不再打印更多的结果。</p><p>再查看终端 1可以发现 trace 的结果增加了一层,打印了<code>primeFactors</code>函数里的内容:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token variable"><span class="token variable">`</span>---ts<span class="token operator">=</span><span class="token number">2020</span>-07-09 <span class="token number">16</span>:49:29<span class="token punctuation">;</span><span class="token assign-left variable">thread_name</span><span class="token operator">=</span>main<span class="token punctuation">;</span><span class="token assign-left variable">id</span><span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">;</span><span class="token assign-left variable">is_daemon</span><span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">priority</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token assign-left variable">TCCL</span><span class="token operator">=</span>sun.misc.Launcher$AppClassLoader@3d4eac69
<span class="token variable">`</span></span>---<span class="token punctuation">[</span><span class="token number">0</span>.492551ms<span class="token punctuation">]</span> demo.MathGame:run<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token variable"><span class="token variable">`</span>---<span class="token punctuation">[</span><span class="token number">0</span>.113929ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#24 [throws Exception]</span>
<span class="token variable">`</span></span>---<span class="token punctuation">[</span><span class="token number">0</span>.061462ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token variable"><span class="token variable">`</span>---<span class="token punctuation">[</span><span class="token number">0</span>.001018ms<span class="token punctuation">]</span> throw:java.lang.IllegalArgumentException<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#46</span>
<span class="token variable">`</span></span>---ts<span class="token operator">=</span><span class="token number">2020</span>-07-09 <span class="token number">16</span>:49:30<span class="token punctuation">;</span><span class="token assign-left variable">thread_name</span><span class="token operator">=</span>main<span class="token punctuation">;</span><span class="token assign-left variable">id</span><span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">;</span><span class="token assign-left variable">is_daemon</span><span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">priority</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token assign-left variable">TCCL</span><span class="token operator">=</span>sun.misc.Launcher<span class="token variable">$AppClassLoader</span>@3d4eac69
<span class="token variable"><span class="token variable">`</span>---<span class="token punctuation">[</span><span class="token number">0</span>.409446ms<span class="token punctuation">]</span> demo.MathGame:run<span class="token punctuation">(</span><span class="token punctuation">)</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.232606ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#24</span>
<span class="token operator">|</span> <span class="token variable">`</span></span>---<span class="token punctuation">[</span><span class="token number">0</span>.1294ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span>
`---<span class="token punctuation">[</span><span class="token number">0</span>.084025ms<span class="token punctuation">]</span> demo.MathGame:print<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#25</span>
3 years ago
</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></div><p>通过指定<code>listenerId</code>的方式动态 trace可以不断深入。另外 <code>watch</code>/<code>tt</code>/<code>monitor</code>等命令也支持类似的功能。</p><h2 id="trace-结果时间不准确问题" tabindex="-1"><a class="header-anchor" href="#trace-结果时间不准确问题" aria-hidden="true">#</a> trace 结果时间不准确问题</h2><p>比如下面的结果里:<code>0.705196 &gt; (0.152743 + 0.145825)</code></p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ trace demo.MathGame run <span class="token parameter variable">-n</span> <span class="token number">1</span>
Press Q or Ctrl+C to abort.
Affect<span class="token punctuation">(</span>class count: <span class="token number">1</span> , method count: <span class="token number">1</span><span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">66</span> ms, listenerId: <span class="token number">1</span>
<span class="token variable"><span class="token variable">`</span>---ts<span class="token operator">=</span><span class="token number">2021</span>-02-08 <span class="token number">11</span>:27:36<span class="token punctuation">;</span><span class="token assign-left variable">thread_name</span><span class="token operator">=</span>main<span class="token punctuation">;</span><span class="token assign-left variable">id</span><span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">;</span><span class="token assign-left variable">is_daemon</span><span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">priority</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token assign-left variable">TCCL</span><span class="token operator">=</span>sun.misc.Launcher$AppClassLoader@232204a1
<span class="token variable">`</span></span>---<span class="token punctuation">[</span><span class="token number">0</span>.705196ms<span class="token punctuation">]</span> demo.MathGame:run<span class="token punctuation">(</span><span class="token punctuation">)</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.152743ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#24</span>
`---<span class="token punctuation">[</span><span class="token number">0</span>.145825ms<span class="token punctuation">]</span> demo.MathGame:print<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#25</span>
3 years ago
</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></div><p>那么其它的时间消耗在哪些地方?</p><ol><li><p>没有被 trace 到的函数。比如<code>java.*</code> 下的函数调用默认会忽略掉。通过增加<code>--skipJDKMethod false</code>参数可以打印出来。</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ trace demo.MathGame run <span class="token parameter variable">--skipJDKMethod</span> <span class="token boolean">false</span>
Press Q or Ctrl+C to abort.
Affect<span class="token punctuation">(</span>class count: <span class="token number">1</span> , method count: <span class="token number">1</span><span class="token punctuation">)</span> cost <span class="token keyword">in</span> <span class="token number">35</span> ms, listenerId: <span class="token number">2</span>
<span class="token variable"><span class="token variable">`</span>---ts<span class="token operator">=</span><span class="token number">2021</span>-02-08 <span class="token number">11</span>:27:48<span class="token punctuation">;</span><span class="token assign-left variable">thread_name</span><span class="token operator">=</span>main<span class="token punctuation">;</span><span class="token assign-left variable">id</span><span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">;</span><span class="token assign-left variable">is_daemon</span><span class="token operator">=</span>false<span class="token punctuation">;</span><span class="token assign-left variable">priority</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token assign-left variable">TCCL</span><span class="token operator">=</span>sun.misc.Launcher$AppClassLoader@232204a1
<span class="token variable">`</span></span>---<span class="token punctuation">[</span><span class="token number">0</span>.810591ms<span class="token punctuation">]</span> demo.MathGame:run<span class="token punctuation">(</span><span class="token punctuation">)</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.034568ms<span class="token punctuation">]</span> java.util.Random:nextInt<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#23</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.119367ms<span class="token punctuation">]</span> demo.MathGame:primeFactors<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#24 [throws Exception]</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.017407ms<span class="token punctuation">]</span> java.lang.StringBuilder:<span class="token operator">&lt;</span>init<span class="token operator">&gt;</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#28</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.127922ms<span class="token punctuation">]</span> java.lang.String:format<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#57</span>
+---<span class="token punctuation">[</span>min<span class="token operator">=</span><span class="token number">0</span>.01419ms,max<span class="token operator">=</span><span class="token number">0</span>.020221ms,total<span class="token operator">=</span><span class="token number">0</span>.034411ms,count<span class="token operator">=</span><span class="token number">2</span><span class="token punctuation">]</span> java.lang.StringBuilder:append<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#57</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.021911ms<span class="token punctuation">]</span> java.lang.Exception:getMessage<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#57</span>
+---<span class="token punctuation">[</span><span class="token number">0</span>.015643ms<span class="token punctuation">]</span> java.lang.StringBuilder:toString<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#57</span>
`---<span class="token punctuation">[</span><span class="token number">0</span>.086622ms<span class="token punctuation">]</span> java.io.PrintStream:println<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">#57</span>
2 years ago
</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></div></li><li><p>非函数调用的指令消耗。比如 <code>i++</code>, <code>getfield</code>等指令。</p></li><li><p>在代码执行过程中JVM 可能出现停顿,比如 GC进入同步块等。</p></li></ol><h3 id="使用-v-参数打印更多信息" tabindex="-1"><a class="header-anchor" href="#使用-v-参数打印更多信息" aria-hidden="true">#</a> 使用 -v 参数打印更多信息</h3><div class="custom-container tip"><p class="custom-container-title">提示</p><p>watch/trace/monitor/stack/tt 命令都支持 <code>-v</code> 参数</p></div><p>当命令执行之后,没有输出结果。有两种可能:</p><ol><li>匹配到的函数没有被执行</li><li>条件表达式结果是 false</li></ol><p>但用户区分不出是哪种情况。</p><p>使用 <code>-v</code>选项,则会打印<code>Condition express</code>的具体值和执行结果,方便确认。</p></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/trace.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: i@fatpandac.com">Fatpandac</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: 47908685+duanwenjun@users.noreply.github.com">duanwenjun</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: hengyunabc@users.noreply.github.com">hengyunabc</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: 35672972+pandaapo@users.noreply.github.com">pandaapo</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: hollowman186@vip.qq.com">Hollow Man</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: favoorr@gmail.com">Jerry</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: xuzhiyi@youzan.com">徐志毅</span><!----><!--]--><!--]--></span></div></footer><nav class="page-nav right-menu-padding" data-v-fdd717e0><p class="inner"><span class="prev"><a href="/doc/stack.html" class="" aria-label="stack"><!--[--><!--]--> stack <!--[--><!--]--></a></span><span class="next"><a href="/doc/tt.html" class="" aria-label="tt"><!--[--><!--]--> tt <!--[--><!--]--></a></span></p></nav><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
<script type="module" src="/assets/app.a26fb751.js" defer></script>
</body>
</html>