<!DOCTYPE html>
< html lang = "en-US" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width,initial-scale=1" >
< meta name = "generator" content = "VuePress 2.0.0-beta.49" >
< 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=" > < 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 user document" >
< link rel = "modulepreload" href = "/assets/app.e9adadd6.js" > < link rel = "modulepreload" href = "/assets/trace.html.894e5b5a.js" > < link rel = "modulepreload" href = "/assets/trace.html.88277454.js" > < link rel = "prefetch" href = "/assets/index.html.fc6fe773.js" > < link rel = "prefetch" href = "/assets/index.html.303ae9ec.js" > < link rel = "prefetch" href = "/assets/index.html.5be10814.js" > < link rel = "prefetch" href = "/assets/advanced-use.html.80c572ab.js" > < link rel = "prefetch" href = "/assets/advice-class.html.30be8b5c.js" > < link rel = "prefetch" href = "/assets/agent.html.478e63bb.js" > < link rel = "prefetch" href = "/assets/arthas-properties.html.126a2442.js" > < link rel = "prefetch" href = "/assets/arthas3.html.f866a915.js" > < link rel = "prefetch" href = "/assets/async.html.7fc6690f.js" > < link rel = "prefetch" href = "/assets/auth.html.7faa0702.js" > < link rel = "prefetch" href = "/assets/base64.html.91916ad8.js" > < link rel = "prefetch" href = "/assets/batch-support.html.6d8369c7.js" > < link rel = "prefetch" href = "/assets/cat.html.49018237.js" > < link rel = "prefetch" href = "/assets/classloader.html.e5597a48.js" > < link rel = "prefetch" href = "/assets/cls.html.3d057407.js" > < link rel = "prefetch" href = "/assets/commands.html.58e9e974.js" > < link rel = "prefetch" href = "/assets/contact-us.html.e0d74259.js" > < link rel = "prefetch" href = "/assets/dashboard.html.688b447f.js" > < link rel = "prefetch" href = "/assets/docker.html.17503d14.js" > < link rel = "prefetch" href = "/assets/download.html.19809e39.js" > < link rel = "prefetch" href = "/assets/dump.html.35a47ccf.js" > < link rel = "prefetch" href = "/assets/echo.html.81510109.js" > < link rel = "prefetch" href = "/assets/faq.html.e22d74d2.js" > < link rel = "prefetch" href = "/assets/getstatic.html.9ffb9ff2.js" > < link rel = "prefetch" href = "/assets/grep.html.7747b85b.js" > < link rel = "prefetch" href = "/assets/groovy.html.3c2a5669.js" > < link rel = "prefetch" href = "/assets/heapdump.html.98d7b14d.js" > < link rel = "prefetch" href = "/assets/help.html.67db59f7.js" > < link rel = "prefetch" href = "/assets/history.html.f6e93473.js" > < link rel = "prefetch" href = "/assets/http-api.html.8abd260a.js" > < link rel = "prefetch" href = "/assets/idea-plugin.html.68b7d4f4.js" > < link rel = "prefetch" href = "/assets/install-detail.html.666bc4d2.js" > < link rel = "prefetch" href = "/assets/jad.html.a62cf748.js" > < link rel = "prefetch" href = "/assets/jfr.html.fb32b04e.js" > < link rel = "prefetch" href = "/assets/jvm.html.970a2dcd.js" > < link rel = "prefetch" href = "/assets/keymap.html.79b77d01.js" > < link rel = "prefetch" href = "/assets/logger.html.1c7e6fb8.js" > < link rel = "prefetch" href = "/assets/manual-install.html.5992ea2f.js" > < link rel = "prefetch" href = "/assets/mbean.html.07f7548d.js" > < link rel = "prefetch" href = "/assets/mc.html.4a8fe9c1.js" > < link rel = "prefetch" href = "/assets/memory.html.f3395aa5.js" > < link rel = "prefetch" href = "/assets/monitor.html.f16f1733.js" > < link rel = "prefetch" href = "/assets/ognl.html.e96e8461.js" > < link rel = "prefetch" href = "/assets/options.html.f364e3b1.js" > < link rel = "prefetch" href = "/assets/perfcounter.html.5ac9dd17.js" > < link rel = "prefetch" href = "/assets/profiler.html.8b48b000.js" > < link rel = "prefetch" href = "/assets/pwd.html.0881d938.js" > < link rel = "prefetch" href = "/assets/quick-start.html.d22745bc.js" > < link rel = "prefetch" href = "/assets/quit.html.7ac530c1.js" > < link rel = "prefetch" href = "/assets/redefine.html.7a72fe7b.js" > < link rel = "prefetch" href = "/assets/release-notes.html.dd1cd195.js" > < link rel = "prefetch" href = "/assets/reset.html.452a35fa.js" > < link rel = "prefetch" href = "/assets/retransform.html.fbef0997.js" > < link rel = "prefetch" href = "/assets/save-log.html.c6a45ce2.js" > < link rel = "prefetch" href = "/assets/sc.html.6441d65e.js" > < link rel = "prefetch" href = "/assets/session.html.ebfd8261.js" > < link rel = "prefetch" href = "/assets/sm.html.9e10db61.js" > < link rel = "prefetch" href = "/assets/spring-boot-starter.html.c4118b0a.js" > < link rel = "prefetch" href = "/assets/stack.html.9add4cf4.js" > < link rel = "prefetch" href = "/assets/start-arthas.html.bb492515.js" > < link rel = "prefetch" href = "/assets/stop.html.b66bc06b.js" > < link rel = "prefetch" href = "/assets/sysenv.html.26a8e556.js" > < link rel = "prefetch" href = "/assets/sysprop.html.b7e9f6f3.js" > < link rel = "prefetch" href = "/assets/tee.html.ad9aa342.js"
< link rel = "stylesheet" href = "/assets/style.3627c3cf.css" >
< / head >
< body >
< div id = "app" > <!-- [ --> < div class = "theme-container" > <!-- [ --> < header class = "navbar" > < div class = "toggle-sidebar-button" title = "toggle sidebar" aria-expanded = "false" role = "button" tabindex = "0" > < div class = "icon" aria-hidden = "true" > < span > < / span > < span > < / span > < span > < / span > < / div > < / div > < span > < a href = "/en/" class = "" data-v-2aa8cc94 > <!-- --> < span class = "site-name can-hide" data-v-2aa8cc94 > arthas< / span > < span class = "navbar-version" data-v-2aa8cc94 > v3.6.5< / span > < / a > < / span > < div class = "navbar-items-wrapper" style = "" > <!-- [ --> <!-- ] --> < nav class = "navbar-items can-hide" > <!-- [ --> < div class = "navbar-item" > < a href = "/en/" class = "" aria-label = "HOME" > <!-- [ --> <!-- ] --> HOME <!-- [ --> <!-- ] --> < / a > < / div > < div class = "navbar-item" > < a class = "external-link" href = "/doc/arthas-tutorials.html?language=en&id=arthas-basics" rel = "noopener noreferrer" target = "_blank" aria-label = "ONLINE TUTORIALS" > <!-- [ --> <!-- ] --> < span > ONLINE TUTORIALS< / 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" > open in new window< / span > < / span > <!-- [ --> <!-- ] --> < / a > < / div > < div class = "navbar-item" > < a href = "/en/doc" class = "router-link-active" aria-label = "DOCS" > <!-- [ --> <!-- ] --> DOCS <!-- [ --> <!-- ] --> < / a > < / div > < div class = "navbar-item" > < a href = "/en/doc/commands.md" class = "" aria-label = "COMMANDS" > <!-- [ --> <!-- ] --> COMMANDS <!-- [ --> <!-- ] --> < / a > < / div > < div class = "navbar-item" > < a href = "/en/doc/download.md" class = "" aria-label = "DOWNLOAD" > <!-- [ --> <!-- ] --> DOWNLOAD <!-- [ --> <!-- ] --> < / a > < / div > < div class = "navbar-item" > < div class = "navbar-dropdown-wrapper" > < button class = "navbar-dropdown-title" type = "button" aria-label = "SOLUTIONS" > < span class = "title" > SOLUTIONS< / span > < span class = "arrow down" > < / span > < / button > < button class = "navbar-dropdown-title-mobile" type = "button" aria-label = "SOLUTIONS" > < span class = "title" > SOLUTIONS< / 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 = "Microservice solutions" > <!-- [ --> <!-- ] --> < span > Microservice solutions< / 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" > open in new window< / 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 = "Distributed transaction solutions" > <!-- [ --> <!-- ] --> < span > Distributed transaction solutions< / 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" > open in new window< / span > < / span > <!-- [ --> <!-- ] --> < / a > < / li > < li class = "navbar-dropdown-item" > < a class = "external-link" href = "https://www.aliyun.com/product/aha
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 >
< / 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" > TIP< / p > < p > The < code > #24< / code > in the result indicates that in the run function, the < code > primeFactors()< / code > function was called on line < code > 24< / code > of the source file.< / p > < / div > < h3 id = "trace-times-limit" tabindex = "-1" > < a class = "header-anchor" href = "#trace-times-limit" aria-hidden = "true" > #< / a > Trace times limit< / h3 > < p > If the method invoked many times, use < code > -n< / code > options to specify trace times. For example, the command will exit when received a trace result.< / p > < div class = "language-bash ext-sh line-numbers-mode" > < pre class = "language-bash" > < code > $ trace demo.MathGame run -n < 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 >
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 -n 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 = "include-jdk-method" tabindex = "-1" > < a class = "header-anchor" href = "#include-jdk-method" aria-hidden = "true" > #< / a > Include jdk method< / h3 > < ul > < li > < code > --skipJDKMethod < value> < / code > skip jdk method trace, default value true.< / li > < / ul > < div class = "language-bash ext-sh line-numbers-mode" > < pre class = "language-bash" > < code > $ trace --skipJDKMethod < 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" > < < / span > init< span class = "token operator" > > < / 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" > < < / span > init< span class = "token operator" > > < / 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 >
< / 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 = "filtering-by-cost" tabindex = "-1" > < a class = "header-anchor" href = "#filtering-by-cost" aria-hidden = "true" > #< / a > Filtering by cost< / h3 > < div class = "language-bash ext-sh line-numbers-mode" > < pre class = "language-bash" > < code > $ trace demo.MathGame run < span class = "token string" > ' #cost > 10' < / 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 >
< / 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" > TIP< / p > < p > Only the call path which' s time cost is higher than < code > 10ms< / code > will be shown. This feature is handy to focus on what' s needed to focus when troubleshoot.< / p > < / div > < ul > < li > Here Arthas provides the similar functionality JProfile and other commercial software provide. Compared to these professional softwares, Arthas doesn' t deduce the time cost < code > trace< / code > itself takes, therefore it is not as accurate as these softwares offer. More classes and methods on the calling path, more inaccurate < code > trace< / code > output is, but it is still helpful for diagnostics where the bottleneck is.< / li > < li > " [12.033735ms]" means the method on the node takes < code > 12.033735< / code > ms.< / li > < li > " [min=0.005428ms,max=0.094064ms,total=0.105228ms,count=3] demo:call()" means aggregating all same method calls into one single line. The minimum time cost is < code > 0.005428< / code > ms, the maximum time cost is < code > 0.094064< / code > ms, and the total time cost for all method calls (< code > 3< / code > times in total) to " demo:call()" is < code > 0.105228ms< / code > . If " throws Exception" appears in this line, it means some exceptions have been thrown from this method calls.< / li > < li > The total time cost may not equal to the sum of the time costs each sub method call takes, this is because Arthas instrumented code takes time too.< / li > < / ul > < h3 id = "trace-multiple-classes-or-multiple-methods" tabindex = "-1" > < a class = "header-anchor" href = "#trace-multiple-classes-or-multiple-methods" aria-hidden = "true" > #< / a > Trace multiple classes or multiple methods< / h3 > < p > The trace command will only trace the subcalls in the method to the trace, and will not trace down multiple layers. Because traces are expensive, multi-layer traces can lead to a lot of classes and methods that ultimately have to be traced.< / p > < p > You can use the regular expression to match multiple classes and methods on the path to achieve a multi-layer trace effect to some extent.< / p > < div class = "language-bash ext-sh line-numbers-mode" > < pre class = "language-bash" > < code > Trace -E com.test.ClassA< span class = "token operator" > |< / span > org.test.ClassB method1< span class = "token operator" > |< / span > method2< span class = "token operator" > |< / span > method3
< / code > < / pre > < div class = "line-numbers" aria-hidden = "true" > < div class = "line-number" > < / div > < / div > < / div > < h3 id = "exclude-the-specified-class" tabindex = "-1" > < a class = "header-anchor" href = "#exclude-the-specified-class" aria-hidden = "true" > #< / a > Exclude the specified class< / h3 > < div class = "custom-container tip" > < p class = "custom-container-title" > TIP< / p > < p > The watch/trace/monitor/stack/tt commands all support the < code > --exclude-class-pattern< / code > parameter< / p > < / div > < p > Use the < code > --exclude-class-pattern< / code > parameter to exclude the specified class, for example:< / p > < div class = "language-bash ext-sh line-numbers-mode" > < pre class = "language-bash" > < code > < span class = "token function" > watch< / span > 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 > < h3 id = "dynamic-trace" tabindex = "-1" > < a class = "header-anchor" href = "#dynamic-trace" aria-hidden = "true" > #< / a > Dynamic trace< / h3 > < div class = "custom-container tip" > < p class = "custom-container-title" > TIP< / p > < p > Supported since version 3.3.0.< / p > < / div > < p > Open terminal 1, trace the < code > run< / code > method in the above demo, and you can see the printout < 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 >
< / 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 > Now to drill down into the sub method < code > primeFactors< / code > , you can open a new terminal 2 and use the < code > telnet localhost 3658< / code > connects to the arthas, then trace < code > primeFactors< / code > with the specify < 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 --listenerId < 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 > At Terminal 2 prints the results, indicating that a method has been enhanced: < code > Affect(class count: 1 , method count: 1)< / code > , but no more results are printed.< / p > < p > At terminal 1, you can see that the trace result has increased by one layer:< / 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 >
< / 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 > Dynamic trace by specifying < code > listenerId< / code > , you can go deeper and deeper. In addition, commands such as < code > watch< / code > /< code > tt< / code > /< code > monitor< / code > also support similar functionality.< / p > < h2 id = "trace-result-time-inaccuracy-problem" tabindex = "-1" > < a class = "header-anchor" href = "#trace-result-time-inaccuracy-problem" aria-hidden = "true" > #< / a > Trace result time inaccuracy problem< / h2 > < p > For example, in the following result: < code > 0.705196 > (0.152743 + 0.145825)< / code > < / p > < div class = "language-bash ext-sh line-numbers-mode" > < pre class = "language-bash" > < code > $ trace demo.MathGame run -n < 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 >
< / 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 > So where is the rest of the time consumed?< / p > < ol > < li > < p > Methods that are not traced to. For example, methods under < code > java.*< / code > are ignored by default. This can be printed out by adding the < code > -skipJDKMethod false< / code > parameter.< / p > < div class = "language-bash ext-sh line-numbers-mode" > < pre class = "language-bash" > < code > $ trace demo.MathGame run --skipJDKMethod < 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:timeFactors< 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" > < < / span > init< span class = "token operator" > > < / 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 >
< / 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 > Instruction consumption. For example, instructions such as < code > i++< / code > , < code > getfield< / code > , etc.< / p > < / li > < li > < p > Possible JVM pause during code execution, such as GC, entering synchronization blocks, etc.< / p > < / li > < / ol > < h3 id = "use-the-v-parameter-to-print-more-information" tabindex = "-1" > < a class = "header-anchor" href = "#use-the-v-parameter-to-print-more-information" aria-hidden = "true" > #< / a > Use the -v parameter to print more information< / h3 > < div class = "custom-container tip" > < p class = "custom-container-title" > TIP< / p > < p > The watch/trace/monitor/stack/tt commands all support the < code > -v< / code > parameter.< / p > < / div > < p > When the command is executed, there is no output result. There are two possibilities:< / p > < ol > < li > The matched function is not executed< / li > < li > The result of the conditional expression is false< / li > < / ol > < p > But the user cannot tell which situation is.< / p > < p > Using the < code > -v< / code > option, the specific value and execution result of < code > Condition express< / code > will be printed for easy confirmation.< / p > < / div > <!-- [ --> <!-- ] --> < / div > < footer class = "page-meta right-menu-padding" data-v-8e2a76de > < div class = "meta-item edit-link" > < a class = "external-link meta-item-label" href = "https://github.com/alibaba/arthas/edit/master/site/docs/en/doc/trace.md" rel = "noopener noreferrer" target = "_blank" aria-label = "Edit this page on GitHub" > <!-- [ --> <!-- ] --> < span > Edit this page on 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" > open in new window< / 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" > Contributors: < / 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: 26602940+0xflotus@users.noreply.github.com" > 0xflotus< / span > <!-- [ --> , <!-- ] --> <!-- ] --> <!-- [ --> < span class = "contributor" title = "email: LHearen@126.com" > Hearen< / 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: lhearen@gmail.com" > LHearen< / span > <!-- [ --> , <!-- ] --> <!-- ] --> <!-- [ --> < span class = "contributor" title = "email: ian.luo@gmail.com" > beiwei30< / span > <!-- --> <!-- ] --> <!-- ] --> < / span > < / div > < / footer > < nav class = "page-nav right-menu-padding" data-v-8e2a76de > < p class = "inner" > < span class = "prev" > < a href = "/en/doc/stack.html" class = "" aria-label = "stack" > <!-- [ --> <!-- ] --> stack <!-- [ --> <!-- ] --> < / a > < / span > < span class = "next" > < a href = "/en/doc/tt.html" class = "" aria-label = "tt" > <!-- [ --> <!-- ] --> tt <!-- [ --> <!-- ] --> < / a > < / span > < / p > < / nav > <!-- [ --> <!-- ] --> < / main > <!-- ] --> < / div > <!-- --> <!-- ] --> < / div >
< script type = "module" src = "/assets/app.e9adadd6.js" defer > < / script >
< / body >
< / html >