Files
arthas/en/doc/ognl-express.html

78 lines
91 KiB
HTML

<!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.51">
<style>
:root {
--c-bg: #fff;
}
html.dark {
--c-bg: #22272e;
}
html, body {
background-color: var(--c-bg);
}
</style>
<script>
const userMode = localStorage.getItem('vuepress-color-scheme');
const systemDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
if (userMode === 'dark' || (userMode !== 'light' && systemDarkMode)) {
document.documentElement.classList.toggle('dark', true);
}
</script>
<link rel="icon" href="/images/favicon.ico"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta property="og:title" content="Arthas"><meta property="og:image:alt" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta property="og:image" content="/images/arthas_mate_image.png"><meta property="og:description" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="600"><meta property="twitter:image:src" content="/images/arthas_mate_image.png"><meta property="twitter:image:alt" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta itemprop="name" content="Arthas"><meta itemprop="image" content="/images/arthas_mate_image.png"><meta itemprop="description" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?d5c5e25b100f0eb51a4c35c8a86ea9b4";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script><meta name="aes-config" content="pid=xux-opensource&user_type=101&uid=&username=&dim10=arthas"><script src="//g.alicdn.com/alilog/mlog/aplus_v2.js" id="beacon-aplus" exparams="clog=o&aplus&sidx=aplusSidx&ckx=aplusCkx"></script><script src="//g.alicdn.com/aes/??tracker/1.0.34/index.js,tracker-plugin-pv/2.4.5/index.js,tracker-plugin-event/1.2.5/index.js,tracker-plugin-jserror/1.0.13/index.js,tracker-plugin-api/1.1.14/index.js,tracker-plugin-perf/1.1.8/index.js,tracker-plugin-eventTiming/1.0.4/index.js"></script><title>Tips for Complex OGNL Expressions | arthas</title><meta name="description" content="arthas user document">
<link rel="modulepreload" href="/assets/app.e2427bec.js"><link rel="modulepreload" href="/assets/ognl-express.html.3082adb7.js"><link rel="modulepreload" href="/assets/ognl-express.html.0cd6cdc8.js"><link rel="prefetch" href="/assets/index.html.cd23e113.js"><link rel="prefetch" href="/assets/index.html.6dcd1531.js"><link rel="prefetch" href="/assets/index.html.787b4b50.js"><link rel="prefetch" href="/assets/advanced-use.html.2b80fa7d.js"><link rel="prefetch" href="/assets/advice-class.html.3778e1f2.js"><link rel="prefetch" href="/assets/agent.html.55a8cd63.js"><link rel="prefetch" href="/assets/ai.html.530e41ed.js"><link rel="prefetch" href="/assets/arthas-properties.html.1c61e69c.js"><link rel="prefetch" href="/assets/arthas3.html.11401e69.js"><link rel="prefetch" href="/assets/async.html.89c66164.js"><link rel="prefetch" href="/assets/auth.html.10e5d242.js"><link rel="prefetch" href="/assets/base64.html.26159b8a.js"><link rel="prefetch" href="/assets/batch-support.html.2f7463e9.js"><link rel="prefetch" href="/assets/cat.html.317b776a.js"><link rel="prefetch" href="/assets/classloader-metaspace.html.1c3e8440.js"><link rel="prefetch" href="/assets/classloader.html.3876b1e0.js"><link rel="prefetch" href="/assets/cls.html.60c40d73.js"><link rel="prefetch" href="/assets/commands.html.f93b9fc8.js"><link rel="prefetch" href="/assets/contact-us.html.f14b9ed1.js"><link rel="prefetch" href="/assets/dashboard.html.f3712bf4.js"><link rel="prefetch" href="/assets/docker.html.7291090b.js"><link rel="prefetch" href="/assets/download.html.1a63d650.js"><link rel="prefetch" href="/assets/dump.html.0eae962a.js"><link rel="prefetch" href="/assets/echo.html.4b25719e.js"><link rel="prefetch" href="/assets/external-command.html.9a47f025.js"><link rel="prefetch" href="/assets/faq.html.36186b06.js"><link rel="prefetch" href="/assets/getstatic.html.99701f59.js"><link rel="prefetch" href="/assets/grep.html.6ba4e7cd.js"><link rel="prefetch" href="/assets/groovy.html.6c982925.js"><link rel="prefetch" href="/assets/heapdump.html.2cfa3407.js"><link rel="prefetch" href="/assets/help.html.026cd72d.js"><link rel="prefetch" href="/assets/history.html.9f5e30aa.js"><link rel="prefetch" href="/assets/http-api.html.132670cd.js"><link rel="prefetch" href="/assets/idea-plugin.html.57e8f57c.js"><link rel="prefetch" href="/assets/install-detail.html.93881ff8.js"><link rel="prefetch" href="/assets/jad.html.49ef2409.js"><link rel="prefetch" href="/assets/jfr.html.bab2ebee.js"><link rel="prefetch" href="/assets/jvm.html.684dd27a.js"><link rel="prefetch" href="/assets/keymap.html.96d9632d.js"><link rel="prefetch" href="/assets/line.html.bfbf7f2b.js"><link rel="prefetch" href="/assets/logger.html.3d035db4.js"><link rel="prefetch" href="/assets/manual-install.html.c9b06816.js"><link rel="prefetch" href="/assets/mbean.html.0bf95e2b.js"><link rel="prefetch" href="/assets/mc.html.e292ce83.js"><link rel="prefetch" href="/assets/mcp-server.html.3cd2eec5.js"><link rel="prefetch" href="/assets/memory.html.a1b2b15c.js"><link rel="prefetch" href="/assets/monitor.html.5a803975.js"><link rel="prefetch" href="/assets/ognl-express.html.f156515d.js"><link rel="prefetch" href="/assets/ognl.html.67f38565.js"><link rel="prefetch" href="/assets/options.html.7de13b4f.js"><link rel="prefetch" href="/assets/perfcounter.html.02a2f773.js"><link rel="prefetch" href="/assets/profiler.html.0cd67a30.js"><link rel="prefetch" href="/assets/pwd.html.fe379ca1.js"><link rel="prefetch" href="/assets/quick-start.html.4a4a854b.js"><link rel="prefetch" href="/assets/quit.html.e375b368.js"><link rel="prefetch" href="/assets/redefine.html.02b78145.js"><link rel="prefetch" href="/assets/release-notes.html.daaf684d.js"><link rel="prefetch" href="/assets/reset.html.334188fe.js"><link rel="prefetch" href="/assets/retransform.html.8ab36d20.js"><link rel="prefetch" href="/assets/save-log.html.6b300b97.js"><link rel="prefetch" href="/assets/sc.html.7cdf140e.js"><link rel="prefetch" href="/assets/session.html.0168cb9d.js"><link rel="prefetch" href="/assets/sm.html.fe572b7b.js"><link rel="prefetch" href="/assets/spring-boot-starter.html.89e33109.js"><link rel="prefetch" href="/assets/stack.html.67e8e31b.js"><link rel="prefetch" href="/assets/start-arthas.html.6198e218.js"><link rel="prefetch" href="/assets/stop.html.c39fd416.js"><link rel="prefetch" href="/assets/sysenv.html.152ba8c4.js"><link rel="prefetch" href="/assets/sysprop.html.f03585de.js"><link rel="prefetch" href="/assets/tee.html.dccc689b.js"><link rel="prefetch" href="/assets/thread.html.c9f7c599.js"><link rel="prefetch" href="/assets/trace.html.05e818e5.js"><link rel="prefetch" href="/assets/tt.html.ec638e55.js"><link rel="prefetch" href="/assets/tunnel.html.5c03c09c.js"><link rel="prefetch" href="/assets/version.html.08321a1e.js"><link rel="prefetch" href="/assets/vmoption.html.d219c85b.js"><link rel="prefetch" href="/assets/vmtool.html.b5c2a935.js"><link rel="prefetch" href="/assets/watch.html.a9d6b6e1.js"><link rel="prefetch" href="/assets/web-console.html.7d232bc6.js"><link rel="prefetch" href="/assets/index.html.e6b12e55.js"><link rel="prefetch" href="/assets/advanced-use.html.5dddb9fa.js"><link rel="prefetch" href="/assets/advice-class.html.12568df6.js"><link rel="prefetch" href="/assets/agent.html.d7974fce.js"><link rel="prefetch" href="/assets/ai.html.0d965d9d.js"><link rel="prefetch" href="/assets/arthas-properties.html.962908f3.js"><link rel="prefetch" href="/assets/async.html.58415566.js"><link rel="prefetch" href="/assets/auth.html.9f2ff1c7.js"><link rel="prefetch" href="/assets/base64.html.4b84930d.js"><link rel="prefetch" href="/assets/batch-support.html.2fd7dfc3.js"><link rel="prefetch" href="/assets/cat.html.8d80e219.js"><link rel="prefetch" href="/assets/classloader-metaspace.html.466bb431.js"><link rel="prefetch" href="/assets/classloader.html.3c2e72a7.js"><link rel="prefetch" href="/assets/cls.html.8f3a5491.js"><link rel="prefetch" href="/assets/commands.html.4d2820b1.js"><link rel="prefetch" href="/assets/contact-us.html.f31aa912.js"><link rel="prefetch" href="/assets/dashboard.html.1a8e32e4.js"><link rel="prefetch" href="/assets/docker.html.ab7f2873.js"><link rel="prefetch" href="/assets/download.html.c5d48124.js"><link rel="prefetch" href="/assets/dump.html.24ea4d2e.js"><link rel="prefetch" href="/assets/echo.html.fdda77b4.js"><link rel="prefetch" href="/assets/external-command.html.3e8d782b.js"><link rel="prefetch" href="/assets/faq.html.188c09a3.js"><link rel="prefetch" href="/assets/getstatic.html.06e13f21.js"><link rel="prefetch" href="/assets/grep.html.831320e0.js"><link rel="prefetch" href="/assets/groovy.html.d70f2cba.js"><link rel="prefetch" href="/assets/heapdump.html.aa31b283.js"><link rel="prefetch" href="/assets/help.html.66e76dc7.js"><link rel="prefetch" href="/assets/history.html.62683097.js"><link rel="prefetch" href="/assets/http-api.html.a3d3ab18.js"><link rel="prefetch" href="/assets/idea-plugin.html.ae6aa4f7.js"><link rel="prefetch" href="/assets/install-detail.html.743978fa.js"><link rel="prefetch" href="/assets/jad.html.039013c5.js"><link rel="prefetch" href="/assets/jfr.html.b77304ea.js"><link rel="prefetch" href="/assets/jvm.html.eac591a0.js"><link rel="prefetch" href="/assets/keymap.html.4bc836ba.js"><link rel="prefetch" href="/assets/line.html.a9e8e2e4.js"><link rel="prefetch" href="/assets/logger.html.e09aeaa6.js"><link rel="prefetch" href="/assets/manual-install.html.85f99b8b.js"><link rel="prefetch" href="/assets/mbean.html.927e96dd.js"><link rel="prefetch" href="/assets/mc.html.d96eb37d.js"><link rel="prefetch" href="/assets/mcp-server.html.609551f2.js"><link rel="prefetch" href="/assets/memory.html.3bde6b86.js"><link rel="prefetch" href="/assets/monitor.html.fc2a02d0.js"><link rel="prefetch" href="/assets/ognl.html.c20b61d9.js"><link rel="prefetch" href="/assets/options.html.7c3bfae1.js"><link rel="prefetch" href="/assets/perfcounter.html.27f41458.js"><link rel="prefetch" href="/assets/profiler.html.67035c12.js"><link rel="prefetch" href="/assets/pwd.html.5af5f815.js"><link rel="prefetch" href="/assets/quick-start.html.0a841ca8.js"><link rel="prefetch" href="/assets/quit.html.47228ba9.js"><link rel="prefetch" href="/assets/redefine.html.68e8d9d1.js"><link rel="prefetch" href="/assets/release-notes.html.bb1f1375.js"><link rel="prefetch" href="/assets/reset.html.94ebcaf7.js"><link rel="prefetch" href="/assets/retransform.html.5a86cbf5.js"><link rel="prefetch" href="/assets/save-log.html.f871291e.js"><link rel="prefetch" href="/assets/sc.html.13503b4f.js"><link rel="prefetch" href="/assets/session.html.602a88b1.js"><link rel="prefetch" href="/assets/sm.html.a226714f.js"><link rel="prefetch" href="/assets/spring-boot-starter.html.78d66843.js"><link rel="prefetch" href="/assets/stack.html.aa5021d8.js"><link rel="prefetch" href="/assets/start-arthas.html.614c57c4.js"><link rel="prefetch" href="/assets/stop.html.481c9049.js"><link rel="prefetch" href="/assets/sysenv.html.f7014c3b.js"><link rel="prefetch" href="/assets/sysprop.html.93843170.js"><link rel="prefetch" href="/assets/tee.html.796f8441.js"><link rel="prefetch" href="/assets/thread.html.96dd9ac3.js"><link rel="prefetch" href="/assets/trace.html.4fabc19b.js"><link rel="prefetch" href="/assets/tt.html.ab370b4f.js"><link rel="prefetch" href="/assets/tunnel.html.6d15b349.js"><link rel="prefetch" href="/assets/version.html.acfdfafa.js"><link rel="prefetch" href="/assets/vmoption.html.698e78cd.js"><link rel="prefetch" href="/assets/vmtool.html.ab938841.js"><link rel="prefetch" href="/assets/watch.html.72a5979d.js"><link rel="prefetch" href="/assets/web-console.html.6349f4a1.js"><link rel="prefetch" href="/assets/404.html.1b87fa04.js"><link rel="prefetch" href="/assets/index.html.086821c2.js"><link rel="prefetch" href="/assets/index.html.18118d67.js"><link rel="prefetch" href="/assets/index.html.760efd19.js"><link rel="prefetch" href="/assets/advanced-use.html.2466ac6e.js"><link rel="prefetch" href="/assets/advice-class.html.79697a1e.js"><link rel="prefetch" href="/assets/agent.html.2480ffd9.js"><link rel="prefetch" href="/assets/ai.html.4fc4211a.js"><link rel="prefetch" href="/assets/arthas-properties.html.7dc17e44.js"><link rel="prefetch" href="/assets/arthas3.html.98a1b21b.js"><link rel="prefetch" href="/assets/async.html.60215e2c.js"><link rel="prefetch" href="/assets/auth.html.15a8fda2.js"><link rel="prefetch" href="/assets/base64.html.9f351db1.js"><link rel="prefetch" href="/assets/batch-support.html.f1130b14.js"><link rel="prefetch" href="/assets/cat.html.5c2eddad.js"><link rel="prefetch" href="/assets/classloader-metaspace.html.249e56bc.js"><link rel="prefetch" href="/assets/classloader.html.1dbda3bd.js"><link rel="prefetch" href="/assets/cls.html.14369b3c.js"><link rel="prefetch" href="/assets/commands.html.3d045ea7.js"><link rel="prefetch" href="/assets/contact-us.html.bca72555.js"><link rel="prefetch" href="/assets/dashboard.html.113af276.js"><link rel="prefetch" href="/assets/docker.html.da50033d.js"><link rel="prefetch" href="/assets/download.html.6df5a02f.js"><link rel="prefetch" href="/assets/dump.html.894aad59.js"><link rel="prefetch" href="/assets/echo.html.8bd53ad3.js"><link rel="prefetch" href="/assets/external-command.html.f331f51e.js"><link rel="prefetch" href="/assets/faq.html.0b4e272a.js"><link rel="prefetch" href="/assets/getstatic.html.0079aa66.js"><link rel="prefetch" href="/assets/grep.html.a6f74b81.js"><link rel="prefetch" href="/assets/groovy.html.74effc34.js"><link rel="prefetch" href="/assets/heapdump.html.3c58b047.js"><link rel="prefetch" href="/assets/help.html.0f234388.js"><link rel="prefetch" href="/assets/history.html.a9fdd95c.js"><link rel="prefetch" href="/assets/http-api.html.99c4fcf0.js"><link rel="prefetch" href="/assets/idea-plugin.html.34a25f10.js"><link rel="prefetch" href="/assets/install-detail.html.40e05e2a.js"><link rel="prefetch" href="/assets/jad.html.2e62e37f.js"><link rel="prefetch" href="/assets/jfr.html.fc123fb3.js"><link rel="prefetch" href="/assets/jvm.html.9b922226.js"><link rel="prefetch" href="/assets/keymap.html.33e7213e.js"><link rel="prefetch" href="/assets/line.html.70ec176e.js"><link rel="prefetch" href="/assets/logger.html.c09808a8.js"><link rel="prefetch" href="/assets/manual-install.html.81853c98.js"><link rel="prefetch" href="/assets/mbean.html.ee4f07f1.js"><link rel="prefetch" href="/assets/mc.html.9ed50f47.js"><link rel="prefetch" href="/assets/mcp-server.html.b2d1ada5.js"><link rel="prefetch" href="/assets/memory.html.8e88a19c.js"><link rel="prefetch" href="/assets/monitor.html.b4c17a07.js"><link rel="prefetch" href="/assets/ognl-express.html.1fb465fc.js"><link rel="prefetch" href="/assets/ognl.html.c39364dd.js"><link rel="prefetch" href="/assets/options.html.dae019ce.js"><link rel="prefetch" href="/assets/perfcounter.html.96a88381.js"><link rel="prefetch" href="/assets/profiler.html.8e2f4114.js"><link rel="prefetch" href="/assets/pwd.html.a1551912.js"><link rel="prefetch" href="/assets/quick-start.html.7059ebe7.js"><link rel="prefetch" href="/assets/quit.html.44df6ca4.js"><link rel="prefetch" href="/assets/redefine.html.05bba39f.js"><link rel="prefetch" href="/assets/release-notes.html.c5c1003b.js"><link rel="prefetch" href="/assets/reset.html.5e039e96.js"><link rel="prefetch" href="/assets/retransform.html.cee06ec8.js"><link rel="prefetch" href="/assets/save-log.html.fea95237.js"><link rel="prefetch" href="/assets/sc.html.982b84c0.js"><link rel="prefetch" href="/assets/session.html.35f7a4aa.js"><link rel="prefetch" href="/assets/sm.html.552b6b44.js"><link rel="prefetch" href="/assets/spring-boot-starter.html.adad135d.js"><link rel="prefetch" href="/assets/stack.html.39dc52db.js"><link rel="prefetch" href="/assets/start-arthas.html.497d3293.js"><link rel="prefetch" href="/assets/stop.html.9224e553.js"><link rel="prefetch" href="/assets/sysenv.html.e76b6bf3.js"><link rel="prefetch" href="/assets/sysprop.html.0dfbbffb.js"><link rel="prefetch" href="/assets/tee.html.26f6c8a9.js"><link rel="prefetch" href="/assets/thread.html.f8f09dc5.js"><link rel="prefetch" href="/assets/trace.html.27ac97ec.js"><link rel="prefetch" href="/assets/tt.html.a410b6a0.js"><link rel="prefetch" href="/assets/tunnel.html.3a98510a.js"><link rel="prefetch" href="/assets/version.html.e13ddf0e.js"><link rel="prefetch" href="/assets/vmoption.html.7a568db9.js"><link rel="prefetch" href="/assets/vmtool.html.27325bff.js"><link rel="prefetch" href="/assets/watch.html.2383ed88.js"><link rel="prefetch" href="/assets/web-console.html.e58ea91b.js"><link rel="prefetch" href="/assets/index.html.34145a94.js"><link rel="prefetch" href="/assets/advanced-use.html.38aef1b4.js"><link rel="prefetch" href="/assets/advice-class.html.7352d445.js"><link rel="prefetch" href="/assets/agent.html.d870df79.js"><link rel="prefetch" href="/assets/ai.html.76467e93.js"><link rel="prefetch" href="/assets/arthas-properties.html.c45f5949.js"><link rel="prefetch" href="/assets/async.html.4eaabb46.js"><link rel="prefetch" href="/assets/auth.html.031f3521.js"><link rel="prefetch" href="/assets/base64.html.a74ba9fa.js"><link rel="prefetch" href="/assets/batch-support.html.8e77cbb4.js"><link rel="prefetch" href="/assets/cat.html.a8a712c6.js"><link rel="prefetch" href="/assets/classloader-metaspace.html.1d325e53.js"><link rel="prefetch" href="/assets/classloader.html.0346e215.js"><link rel="prefetch" href="/assets/cls.html.77bb73a5.js"><link rel="prefetch" href="/assets/commands.html.0766e205.js"><link rel="prefetch" href="/assets/contact-us.html.c13483a2.js"><link rel="prefetch" href="/assets/dashboard.html.981a5405.js"><link rel="prefetch" href="/assets/docker.html.3597bdbf.js"><link rel="prefetch" href="/assets/download.html.5f1c78c9.js"><link rel="prefetch" href="/assets/dump.html.30dc9666.js"><link rel="prefetch" href="/assets/echo.html.1ca1bcbf.js"><link rel="prefetch" href="/assets/external-command.html.cc4ab827.js"><link rel="prefetch" href="/assets/faq.html.8aecb0b8.js"><link rel="prefetch" href="/assets/getstatic.html.d3e5edb1.js"><link rel="prefetch" href="/assets/grep.html.c007dc7c.js"><link rel="prefetch" href="/assets/groovy.html.47cc1adc.js"><link rel="prefetch" href="/assets/heapdump.html.291f6f55.js"><link rel="prefetch" href="/assets/help.html.9a08c3c3.js"><link rel="prefetch" href="/assets/history.html.0a1c3393.js"><link rel="prefetch" href="/assets/http-api.html.d561b855.js"><link rel="prefetch" href="/assets/idea-plugin.html.7d6cbcc9.js"><link rel="prefetch" href="/assets/install-detail.html.041805f1.js"><link rel="prefetch" href="/assets/jad.html.1626c1c4.js"><link rel="prefetch" href="/assets/jfr.html.2139c5d1.js"><link rel="prefetch" href="/assets/jvm.html.43ae7a7d.js"><link rel="prefetch" href="/assets/keymap.html.bf1351b4.js"><link rel="prefetch" href="/assets/line.html.01eb3559.js"><link rel="prefetch" href="/assets/logger.html.b88626af.js"><link rel="prefetch" href="/assets/manual-install.html.315a4f72.js"><link rel="prefetch" href="/assets/mbean.html.d1e0ff54.js"><link rel="prefetch" href="/assets/mc.html.f0819ad2.js"><link rel="prefetch" href="/assets/mcp-server.html.c2f288cd.js"><link rel="prefetch" href="/assets/memory.html.e96b1c33.js"><link rel="prefetch" href="/assets/monitor.html.be46b9bd.js"><link rel="prefetch" href="/assets/ognl.html.d226d5a4.js"><link rel="prefetch" href="/assets/options.html.12136572.js"><link rel="prefetch" href="/assets/perfcounter.html.e11ca3a1.js"><link rel="prefetch" href="/assets/profiler.html.3f6cfb27.js"><link rel="prefetch" href="/assets/pwd.html.60a0a503.js"><link rel="prefetch" href="/assets/quick-start.html.90bb144c.js"><link rel="prefetch" href="/assets/quit.html.de692497.js"><link rel="prefetch" href="/assets/redefine.html.c7e214b6.js"><link rel="prefetch" href="/assets/release-notes.html.4d2c5e1d.js"><link rel="prefetch" href="/assets/reset.html.9c6228ed.js"><link rel="prefetch" href="/assets/retransform.html.822f2ec7.js"><link rel="prefetch" href="/assets/save-log.html.aaad8817.js"><link rel="prefetch" href="/assets/sc.html.049f2400.js"><link rel="prefetch" href="/assets/session.html.fa0a110f.js"><link rel="prefetch" href="/assets/sm.html.fd569c95.js"><link rel="prefetch" href="/assets/spring-boot-starter.html.cb1cd476.js"><link rel="prefetch" href="/assets/stack.html.bdb92f2d.js"><link rel="prefetch" href="/assets/start-arthas.html.1a3db2ff.js"><link rel="prefetch" href="/assets/stop.html.c30e7079.js"><link rel="prefetch" href="/assets/sysenv.html.33a80b4e.js"><link rel="prefetch" href="/assets/sysprop.html.ae3ef70a.js"><link rel="prefetch" href="/assets/tee.html.80593816.js"><link rel="prefetch" href="/assets/thread.html.bceb3488.js"><link rel="prefetch" href="/assets/trace.html.63fe4169.js"><link rel="prefetch" href="/assets/tt.html.2b487719.js"><link rel="prefetch" href="/assets/tunnel.html.7e8c485e.js"><link rel="prefetch" href="/assets/version.html.3edc2ceb.js"><link rel="prefetch" href="/assets/vmoption.html.b0134475.js"><link rel="prefetch" href="/assets/vmtool.html.9e179166.js"><link rel="prefetch" href="/assets/watch.html.9d383a57.js"><link rel="prefetch" href="/assets/web-console.html.0614d78d.js"><link rel="prefetch" href="/assets/404.html.58d317de.js">
<link rel="stylesheet" href="/assets/style.812a0039.css">
</head>
<body>
<div id="app"><!--[--><div class="theme-container"><!--[--><header class="navbar"><div class="toggle-sidebar-button" title="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-a8869d06><!----><span class="site-name can-hide" data-v-a8869d06>arthas</span><span class="navbar-version" data-v-a8869d06>v4.3.5</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a href="/en/" class="" aria-label="HOME"><!--[--><!--]--> HOME <!--[--><!--]--></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="VERSIONS"><span class="title">VERSIONS</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="VERSIONS"><span class="title">VERSIONS</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a class="external-link" href="https://arthas.aliyun.com/3.x/en/" rel="noopener noreferrer" target="_blank" aria-label="v3.x"><!--[--><!--]--><span>v3.x</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></li><!--]--></ul></div></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="Select language"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em" style="height:1.25rem;width:1.25rem;vertical-align:bottom;" viewbox="0 0 24 24"><path fill="currentColor" d="M13.35 22q-.6 0-.862-.387q-.263-.388-.063-.963l3.65-9.675q.15-.4.563-.688Q17.05 10 17.5 10q.425 0 .85.287q.425.288.575.688l3.65 9.675q.2.575-.062.963q-.263.387-.888.387q-.275 0-.5-.175q-.225-.175-.325-.425l-.85-2.45H15.1l-.875 2.45q-.1.25-.35.425q-.25.175-.525.175Zm2.35-4.8h3.6l-1.75-4.95h-.1ZM7.15 8.55q.4.725.85 1.337q.45.613 1.05 1.263q1.1-1.2 1.825-2.462Q11.6 7.425 12.1 6H2q-.425 0-.712-.287Q1 5.425 1 5t.288-.713Q1.575 4 2 4h6V3q0-.425.288-.713Q8.575 2 9 2t.713.287Q10 2.575 10 3v1h6q.425 0 .712.287Q17 4.575 17 5t-.288.713Q16.425 6 16 6h-1.9q-.525 1.775-1.425 3.45q-.9 1.675-2.225 3.15l2.4 2.45l-.75 2.05L9 14l-4.3 4.3q-.275.275-.7.275q-.425 0-.7-.275q-.275-.275-.275-.7q0-.425.275-.7l4.35-4.35q-.675-.775-1.25-1.563q-.575-.787-1.025-1.662Q5.1 8.8 5.35 8.4t.875-.4q.25 0 .525.162q.275.163.4.388Z"></path></svg><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="Select language"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em" style="height:1.25rem;width:1.25rem;vertical-align:bottom;" viewbox="0 0 24 24"><path fill="currentColor" d="M13.35 22q-.6 0-.862-.387q-.263-.388-.063-.963l3.65-9.675q.15-.4.563-.688Q17.05 10 17.5 10q.425 0 .85.287q.425.288.575.688l3.65 9.675q.2.575-.062.963q-.263.387-.888.387q-.275 0-.5-.175q-.225-.175-.325-.425l-.85-2.45H15.1l-.875 2.45q-.1.25-.35.425q-.25.175-.525.175Zm2.35-4.8h3.6l-1.75-4.95h-.1ZM7.15 8.55q.4.725.85 1.337q.45.613 1.05 1.263q1.1-1.2 1.825-2.462Q11.6 7.425 12.1 6H2q-.425 0-.712-.287Q1 5.425 1 5t.288-.713Q1.575 4 2 4h6V3q0-.425.288-.713Q8.575 2 9 2t.713.287Q10 2.575 10 3v1h6q.425 0 .712.287Q17 4.575 17 5t-.288.713Q16.425 6 16 6h-1.9q-.525 1.775-1.425 3.45q-.9 1.675-2.225 3.15l2.4 2.45l-.75 2.05L9 14l-4.3 4.3q-.275.275-.7.275q-.425 0-.7-.275q-.275-.275-.275-.7q0-.425.275-.7l4.35-4.35q-.675-.775-1.25-1.563q-.575-.787-1.025-1.662Q5.1 8.8 5.35 8.4t.875-.4q.25 0 .525.162q.275.163.4.388Z"></path></svg><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a href="/doc/ognl-express.html" class="" aria-label="简体中文"><!--[--><!--]--> 简体中文 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a aria-current="page" href="/en/doc/ognl-express.html" class="router-link-active router-link-exact-active router-link-active" aria-label="English"><!--[--><!--]--> English <!--[--><!--]--></a></li><!--]--></ul></div></div><div class="navbar-item"><a class="external-link" href="https://github.com/alibaba/arthas" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 24 24" style="height:1.25rem;width:1.25rem;vertical-align:bottom;"><path fill="currentColor" d="M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33c.85 0 1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2Z"></path></svg><!----><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button class="toggle-color-mode-button" title="toggle color mode"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><div id="docsearch-container"></div></div></header><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><nav class="navbar-items"><!--[--><div class="navbar-item"><a href="/en/" class="" aria-label="HOME"><!--[--><!--]--> HOME <!--[--><!--]--></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="VERSIONS"><span class="title">VERSIONS</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="VERSIONS"><span class="title">VERSIONS</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a class="external-link" href="https://arthas.aliyun.com/3.x/en/" rel="noopener noreferrer" target="_blank" aria-label="v3.x"><!--[--><!--]--><span>v3.x</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></li><!--]--></ul></div></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="Select language"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em" style="height:1.25rem;width:1.25rem;vertical-align:bottom;" viewbox="0 0 24 24"><path fill="currentColor" d="M13.35 22q-.6 0-.862-.387q-.263-.388-.063-.963l3.65-9.675q.15-.4.563-.688Q17.05 10 17.5 10q.425 0 .85.287q.425.288.575.688l3.65 9.675q.2.575-.062.963q-.263.387-.888.387q-.275 0-.5-.175q-.225-.175-.325-.425l-.85-2.45H15.1l-.875 2.45q-.1.25-.35.425q-.25.175-.525.175Zm2.35-4.8h3.6l-1.75-4.95h-.1ZM7.15 8.55q.4.725.85 1.337q.45.613 1.05 1.263q1.1-1.2 1.825-2.462Q11.6 7.425 12.1 6H2q-.425 0-.712-.287Q1 5.425 1 5t.288-.713Q1.575 4 2 4h6V3q0-.425.288-.713Q8.575 2 9 2t.713.287Q10 2.575 10 3v1h6q.425 0 .712.287Q17 4.575 17 5t-.288.713Q16.425 6 16 6h-1.9q-.525 1.775-1.425 3.45q-.9 1.675-2.225 3.15l2.4 2.45l-.75 2.05L9 14l-4.3 4.3q-.275.275-.7.275q-.425 0-.7-.275q-.275-.275-.275-.7q0-.425.275-.7l4.35-4.35q-.675-.775-1.25-1.563q-.575-.787-1.025-1.662Q5.1 8.8 5.35 8.4t.875-.4q.25 0 .525.162q.275.163.4.388Z"></path></svg><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="Select language"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em" style="height:1.25rem;width:1.25rem;vertical-align:bottom;" viewbox="0 0 24 24"><path fill="currentColor" d="M13.35 22q-.6 0-.862-.387q-.263-.388-.063-.963l3.65-9.675q.15-.4.563-.688Q17.05 10 17.5 10q.425 0 .85.287q.425.288.575.688l3.65 9.675q.2.575-.062.963q-.263.387-.888.387q-.275 0-.5-.175q-.225-.175-.325-.425l-.85-2.45H15.1l-.875 2.45q-.1.25-.35.425q-.25.175-.525.175Zm2.35-4.8h3.6l-1.75-4.95h-.1ZM7.15 8.55q.4.725.85 1.337q.45.613 1.05 1.263q1.1-1.2 1.825-2.462Q11.6 7.425 12.1 6H2q-.425 0-.712-.287Q1 5.425 1 5t.288-.713Q1.575 4 2 4h6V3q0-.425.288-.713Q8.575 2 9 2t.713.287Q10 2.575 10 3v1h6q.425 0 .712.287Q17 4.575 17 5t-.288.713Q16.425 6 16 6h-1.9q-.525 1.775-1.425 3.45q-.9 1.675-2.225 3.15l2.4 2.45l-.75 2.05L9 14l-4.3 4.3q-.275.275-.7.275q-.425 0-.7-.275q-.275-.275-.275-.7q0-.425.275-.7l4.35-4.35q-.675-.775-1.25-1.563q-.575-.787-1.025-1.662Q5.1 8.8 5.35 8.4t.875-.4q.25 0 .525.162q.275.163.4.388Z"></path></svg><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a href="/doc/ognl-express.html" class="" aria-label="简体中文"><!--[--><!--]--> 简体中文 <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a aria-current="page" href="/en/doc/ognl-express.html" class="router-link-active router-link-exact-active router-link-active" aria-label="English"><!--[--><!--]--> English <!--[--><!--]--></a></li><!--]--></ul></div></div><div class="navbar-item"><a class="external-link" href="https://github.com/alibaba/arthas" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewbox="0 0 24 24" style="height:1.25rem;width:1.25rem;vertical-align:bottom;"><path fill="currentColor" d="M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33c.85 0 1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2Z"></path></svg><!----><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><!--[--><div class="sidebar-search-wrapper" data-v-ff139ca7><div class="sidebar-search" role="search" data-v-ff139ca7><span class="sidebar-search-icon" aria-hidden="true" data-v-ff139ca7></span><input value="" class="sidebar-search-input" type="search" placeholder="Search" aria-label="Search" data-v-ff139ca7><!----></div></div><ul class="sidebar-items" data-v-ff139ca7><!--[--><li data-v-ff139ca7 data-v-558ea87d><p tabindex="0" class="sidebar-item sidebar-heading active" data-v-558ea87d>DOCS <!----></p><ul style="" class="sidebar-item-children" data-v-558ea87d><!--[--><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/" class="router-link-active sidebar-item" aria-label="Introduction" data-v-558ea87d><!--[--><!--]--> Introduction <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/quick-start.html" class="sidebar-item" aria-label="Quick Start" data-v-558ea87d><!--[--><!--]--> Quick Start <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/install-detail.html" class="sidebar-item" aria-label="Install Arthas" data-v-558ea87d><!--[--><!--]--> Install Arthas <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/download.html" class="sidebar-item" aria-label="Download" data-v-558ea87d><!--[--><!--]--> Download <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/advice-class.html" class="sidebar-item" aria-label="Fundamental Fields in Expressions" data-v-558ea87d><!--[--><!--]--> Fundamental Fields in Expressions <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row active collapsible" data-v-558ea87d><button type="button" class="sidebar-tree-toggle" aria-expanded="true" aria-label="Collapse All Commands" data-v-558ea87d><span class="open sidebar-tree-chevron" aria-hidden="true" data-v-558ea87d></span></button><a href="/en/doc/commands.md" class="sidebar-item active collapsible" aria-label="All Commands" data-v-558ea87d><!--[--><!--]--> All Commands <!--[--><!--]--></a></div><ul style="" class="sidebar-item-children" data-v-558ea87d><!--[--><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/auth.html" class="sidebar-item" aria-label="auth" data-v-558ea87d><!--[--><!--]--> auth <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/base64.html" class="sidebar-item" aria-label="base64" data-v-558ea87d><!--[--><!--]--> base64 <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/cat.html" class="sidebar-item" aria-label="cat" data-v-558ea87d><!--[--><!--]--> cat <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/classloader.html" class="sidebar-item" aria-label="classloader" data-v-558ea87d><!--[--><!--]--> classloader <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/classloader-metaspace.html" class="sidebar-item" aria-label="classloader-metaspace" data-v-558ea87d><!--[--><!--]--> classloader-metaspace <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/cls.html" class="sidebar-item" aria-label="cls" data-v-558ea87d><!--[--><!--]--> cls <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/dashboard.html" class="sidebar-item" aria-label="dashboard" data-v-558ea87d><!--[--><!--]--> dashboard <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/dump.html" class="sidebar-item" aria-label="dump" data-v-558ea87d><!--[--><!--]--> dump <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/echo.html" class="sidebar-item" aria-label="echo" data-v-558ea87d><!--[--><!--]--> echo <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/getstatic.html" class="sidebar-item" aria-label="getstatic" data-v-558ea87d><!--[--><!--]--> getstatic <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/grep.html" class="sidebar-item" aria-label="grep" data-v-558ea87d><!--[--><!--]--> grep <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/heapdump.html" class="sidebar-item" aria-label="heapdump" data-v-558ea87d><!--[--><!--]--> heapdump <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/help.html" class="sidebar-item" aria-label="help" data-v-558ea87d><!--[--><!--]--> help <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/history.html" class="sidebar-item" aria-label="history" data-v-558ea87d><!--[--><!--]--> history <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/jad.html" class="sidebar-item" aria-label="jad" data-v-558ea87d><!--[--><!--]--> jad <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/jfr.html" class="sidebar-item" aria-label="jfr" data-v-558ea87d><!--[--><!--]--> jfr <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/jvm.html" class="sidebar-item" aria-label="jvm" data-v-558ea87d><!--[--><!--]--> jvm <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/keymap.html" class="sidebar-item" aria-label="keymap" data-v-558ea87d><!--[--><!--]--> keymap <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/line.html" class="sidebar-item" aria-label="line" data-v-558ea87d><!--[--><!--]--> line <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/logger.html" class="sidebar-item" aria-label="logger" data-v-558ea87d><!--[--><!--]--> logger <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/mbean.html" class="sidebar-item" aria-label="mbean" data-v-558ea87d><!--[--><!--]--> mbean <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/mc.html" class="sidebar-item" aria-label="mc" data-v-558ea87d><!--[--><!--]--> mc <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/memory.html" class="sidebar-item" aria-label="memory" data-v-558ea87d><!--[--><!--]--> memory <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/monitor.html" class="sidebar-item" aria-label="monitor" data-v-558ea87d><!--[--><!--]--> monitor <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/ognl.html" class="sidebar-item" aria-label="ognl" data-v-558ea87d><!--[--><!--]--> ognl <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row active" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a aria-current="page" href="/en/doc/ognl-express.html" class="router-link-active router-link-exact-active router-link-active sidebar-item active" aria-label="Tips for Complex OGNL Expressions" data-v-558ea87d><!--[--><!--]--> Tips for Complex OGNL Expressions <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/options.html" class="sidebar-item" aria-label="options" data-v-558ea87d><!--[--><!--]--> options <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/perfcounter.html" class="sidebar-item" aria-label="perfcounter" data-v-558ea87d><!--[--><!--]--> perfcounter <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/profiler.html" class="sidebar-item" aria-label="profiler" data-v-558ea87d><!--[--><!--]--> profiler <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/pwd.html" class="sidebar-item" aria-label="pwd" data-v-558ea87d><!--[--><!--]--> pwd <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/quit.html" class="sidebar-item" aria-label="quit" data-v-558ea87d><!--[--><!--]--> quit <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/redefine.html" class="sidebar-item" aria-label="redefine" data-v-558ea87d><!--[--><!--]--> redefine <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/reset.html" class="sidebar-item" aria-label="reset" data-v-558ea87d><!--[--><!--]--> reset <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/retransform.html" class="sidebar-item" aria-label="retransform" data-v-558ea87d><!--[--><!--]--> retransform <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/sc.html" class="sidebar-item" aria-label="sc" data-v-558ea87d><!--[--><!--]--> sc <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/session.html" class="sidebar-item" aria-label="session" data-v-558ea87d><!--[--><!--]--> session <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/sm.html" class="sidebar-item" aria-label="sm" data-v-558ea87d><!--[--><!--]--> sm <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/stack.html" class="sidebar-item" aria-label="stack" data-v-558ea87d><!--[--><!--]--> stack <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/stop.html" class="sidebar-item" aria-label="stop" data-v-558ea87d><!--[--><!--]--> stop <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/sysenv.html" class="sidebar-item" aria-label="sysenv" data-v-558ea87d><!--[--><!--]--> sysenv <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/sysprop.html" class="sidebar-item" aria-label="sysprop" data-v-558ea87d><!--[--><!--]--> sysprop <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/tee.html" class="sidebar-item" aria-label="tee" data-v-558ea87d><!--[--><!--]--> tee <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/thread.html" class="sidebar-item" aria-label="thread" data-v-558ea87d><!--[--><!--]--> thread <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/trace.html" class="sidebar-item" aria-label="trace" data-v-558ea87d><!--[--><!--]--> trace <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/tt.html" class="sidebar-item" aria-label="tt" data-v-558ea87d><!--[--><!--]--> tt <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/version.html" class="sidebar-item" aria-label="version" data-v-558ea87d><!--[--><!--]--> version <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/vmoption.html" class="sidebar-item" aria-label="vmoption" data-v-558ea87d><!--[--><!--]--> vmoption <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/vmtool.html" class="sidebar-item" aria-label="vmtool" data-v-558ea87d><!--[--><!--]--> vmtool <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/watch.html" class="sidebar-item" aria-label="watch" data-v-558ea87d><!--[--><!--]--> watch <!--[--><!--]--></a></div><!----></li><!--]--></ul></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row collapsible" data-v-558ea87d><button type="button" class="sidebar-tree-toggle" aria-expanded="false" aria-label="Expand AI Integration" data-v-558ea87d><span class="sidebar-tree-chevron" aria-hidden="true" data-v-558ea87d></span></button><a href="/en/doc/ai.md" class="sidebar-item collapsible" aria-label="AI Integration" data-v-558ea87d><!--[--><!--]--> AI Integration <!--[--><!--]--></a></div><ul style="display:none;" class="sidebar-item-children" data-v-558ea87d><!--[--><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/mcp-server.html" class="sidebar-item" aria-label="Arthas MCP Server" data-v-558ea87d><!--[--><!--]--> Arthas MCP Server <!--[--><!--]--></a></div><!----></li><!--]--></ul></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row collapsible" data-v-558ea87d><button type="button" class="sidebar-tree-toggle" aria-expanded="false" aria-label="Expand Other features" data-v-558ea87d><span class="sidebar-tree-chevron" aria-hidden="true" data-v-558ea87d></span></button><a href="/en/doc/advanced-use.md" class="sidebar-item collapsible" aria-label="Other features" data-v-558ea87d><!--[--><!--]--> Other features <!--[--><!--]--></a></div><ul style="display:none;" class="sidebar-item-children" data-v-558ea87d><!--[--><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/async.html" class="sidebar-item" aria-label="Arthas Async Jobs" data-v-558ea87d><!--[--><!--]--> Arthas Async Jobs <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/save-log.html" class="sidebar-item" aria-label="Log command outputs" data-v-558ea87d><!--[--><!--]--> Log command outputs <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/docker.html" class="sidebar-item" aria-label="Docker" data-v-558ea87d><!--[--><!--]--> Docker <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/web-console.html" class="sidebar-item" aria-label="Web Console" data-v-558ea87d><!--[--><!--]--> Web Console <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/tunnel.html" class="sidebar-item" aria-label="Arthas Tunnel" data-v-558ea87d><!--[--><!--]--> Arthas Tunnel <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/idea-plugin.html" class="sidebar-item" aria-label="IDEA Plugin" data-v-558ea87d><!--[--><!--]--> IDEA Plugin <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/arthas-properties.html" class="sidebar-item" aria-label="Arthas Properties" data-v-558ea87d><!--[--><!--]--> Arthas Properties <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/agent.html" class="sidebar-item" aria-label="Start as a Java Agent" data-v-558ea87d><!--[--><!--]--> Start as a Java Agent <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/spring-boot-starter.html" class="sidebar-item" aria-label="Arthas Spring Boot Starter" data-v-558ea87d><!--[--><!--]--> Arthas Spring Boot Starter <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/external-command.html" class="sidebar-item" aria-label="Load External Commands" data-v-558ea87d><!--[--><!--]--> Load External Commands <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/http-api.html" class="sidebar-item" aria-label="Http API" data-v-558ea87d><!--[--><!--]--> Http API <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/batch-support.html" class="sidebar-item" aria-label="Batch Processing" data-v-558ea87d><!--[--><!--]--> Batch Processing <!--[--><!--]--></a></div><!----></li><!--]--></ul></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/faq.html" class="sidebar-item" aria-label="FAQ" data-v-558ea87d><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a class="external-link sidebar-item" href="https://github.com/alibaba/arthas/issues?q=label%3Auser-case" rel="noopener noreferrer" target="_blank" aria-label="User cases" data-v-558ea87d><!--[--><!--]--><span>User cases</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><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a class="external-link sidebar-item" href="https://github.com/alibaba/arthas" rel="noopener noreferrer" target="_blank" aria-label="Star me at github" data-v-558ea87d><!--[--><!--]--><span>Star me at github</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a class="external-link sidebar-item" href="https://github.com/alibaba/arthas/blob/master/CONTRIBUTING.md" rel="noopener noreferrer" target="_blank" aria-label="Compile and debug/CONTRIBUTING" data-v-558ea87d><!--[--><!--]--><span>Compile and debug/CONTRIBUTING</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><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a class="external-link sidebar-item" href="https://github.com/alibaba/arthas/releases" rel="noopener noreferrer" target="_blank" aria-label="Release Notes" data-v-558ea87d><!--[--><!--]--><span>Release Notes</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!----></li><li data-v-558ea87d data-v-558ea87d><div class="sidebar-tree-row" data-v-558ea87d><span class="sidebar-tree-toggle-placeholder" data-v-558ea87d></span><a href="/en/doc/contact-us.md" class="sidebar-item" aria-label="Contact us" data-v-558ea87d><!--[--><!--]--> Contact us <!--[--><!--]--></a></div><!----></li><!--]--></ul></li><!--]--></ul><!--]--><!--[--><!--]--></aside><!--]--><!--[--><main class="page" data-v-fdd717e0><!--[--><!--]--><div class="right-menu-padding theme-default-content" data-v-fdd717e0><!--[--><!--]--><div class="right-menu-wrapper" data-v-fdd717e0 data-v-64666cd5><div class="right-menu-margin" data-v-64666cd5><div class="right-menu-title" data-v-64666cd5>Table of Contents</div><div class="right-menu-content" data-v-64666cd5><!--[--><!--]--></div></div></div><div data-v-fdd717e0><h1 id="tips-for-complex-ognl-expressions" tabindex="-1"><a class="header-anchor" href="#tips-for-complex-ognl-expressions" aria-hidden="true">#</a> Tips for Complex OGNL Expressions</h1><p>This page covers complex but production-friendly OGNL patterns in Arthas, including variables, collection selection and projection, temporary result construction, null handling, and ClassLoaders. Every complete command in the “Verified complex expressions” section was run in a real Arthas attach session against the repository&#39;s <code>math-game</code> JVM. Dynamic values such as thread names, counts, and object addresses will vary by environment.</p><p>Read the <a href="/en/doc/ognl.html" class=""><code>ognl</code> command documentation</a> for basic options and <a href="/en/doc/advice-class.html" class="">Core variables in expressions</a> for variables exposed by commands such as <code>watch</code>.</p><div class="custom-container warning"><p class="custom-container-title">WARNING</p><p>OGNL runs inside the target JVM. A method call can read or modify application state. In production, generate and execute read-only expressions by default, and limit both the number of objects and the expansion depth. Do not invoke application methods such as <code>set*</code>, <code>add</code>, <code>remove</code>, or <code>clear</code>, and do not perform file, network, process, ClassLoader, privilege-escalating reflection, or thread-control operations. Calls to <code>put</code> in this page only modify a temporary <code>Map</code> created by the same expression.</p></div><h2 id="identify-the-expression-context-first" tabindex="-1"><a class="header-anchor" href="#identify-the-expression-context-first" aria-hidden="true">#</a> Identify the expression context first</h2><p>The grammar may be the same while the available variables are different. A common AI agent mistake is to copy context variables from another command into the standalone <code>ognl</code> command.</p><table><thead><tr><th>Location</th><th>Available root objects or variables</th><th>Common mistake</th></tr></thead><tbody><tr><td><code>ognl</code> command</td><td>Static members, constructors, literals, and self-defined <code>#variables</code></td><td>Using <code>params</code>, <code>target</code>, <code>returnObj</code>, or <code>instances</code></td></tr><tr><td><code>getstatic</code> expression</td><td>The static field value being read is the root object</td><td>Treating it as a standalone <code>ognl</code> expression with no root object</td></tr><tr><td>Observation or condition expressions in <code>watch</code>, <code>stack</code>, <code>monitor</code>, <code>tt</code>, and related commands</td><td><a href="/en/doc/advice-class.html" class=""><code>Advice</code></a> variables such as <code>params</code>, <code>target</code>, <code>returnObj</code>, <code>throwExp</code>, and <code>isReturn</code></td><td>Reading a return value at method entry, or invoking <code>returnObj</code> on the exception path</td></tr><tr><td>Conditions in <code>trace</code> and related commands</td><td>Advice variables exposed by that command; some commands also provide <code>#cost</code></td><td>Assuming that every command provides <code>#cost</code></td></tr><tr><td><code>line --express</code> / <code>--condition</code></td><td>Advice variables plus line-level variables such as <code>lineNumber</code>, <code>localVarMap</code>, and <code>#cost</code></td><td>Using <code>localVarMap</code> or <code>lineNumber</code> in another command</td></tr><tr><td><code>vmtool --express</code></td><td><code>instances</code>, the array returned by <code>getInstances</code></td><td>Using <code>instances</code> in the standalone <code>ognl</code> command</td></tr></tbody></table><p>Also distinguish a complete Arthas command from a raw expression parameter:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token comment"># The Arthas console needs the full command and outer single quotes</span>
ognl <span class="token string">&#39;#value=@java.lang.System@getProperty(&quot;java.version&quot;), #value&#39;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>When an MCP tool, HTTP API, or another client already provides a dedicated parameter named <code>expression</code>, <code>express</code>, or <code>conditionExpress</code>, pass only the raw expression. Do not add <code>ognl</code>, command options, outer single quotes, or a Markdown code fence:</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>#value=@java.lang.System@getProperty(&quot;java.version&quot;), #value
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="reliable-syntax-building-blocks" tabindex="-1"><a class="header-anchor" href="#reliable-syntax-building-blocks" aria-hidden="true">#</a> Reliable syntax building blocks</h2><table><thead><tr><th>Purpose</th><th>Syntax</th><th>Notes</th></tr></thead><tbody><tr><td>Define a temporary variable</td><td><code>#name=value</code></td><td>A custom variable must start with <code>#</code></td></tr><tr><td>Evaluate in sequence and return the last item</td><td><code>#a=1, #b=2, #a+#b</code></td><td>Use commas, not semicolons; Arthas may treat a semicolon as a command separator</td></tr><tr><td>Access a static method or field</td><td><code>@fully.qualified.Class@method()</code>, <code>@fully.qualified.Class@FIELD</code></td><td>Both <code>@</code> characters are required; prefer the fully qualified class name</td></tr><tr><td>Create a temporary object</td><td><code>new java.util.LinkedHashMap()</code></td><td>Do not include Java generics such as <code>new HashMap&lt;String,Object&gt;()</code></td></tr><tr><td>Create a List</td><td><code>{1, 2, 3}</code></td><td>The result is a List, not a Java array</td></tr><tr><td>Create a Map</td><td><code>#{&quot;name&quot;:&quot;arthas&quot;, &quot;count&quot;:1}</code></td><td>Do not insert anything between <code>#</code> and <code>{</code></td></tr><tr><td>Create an array</td><td><code>new java.lang.String[]{&quot;a&quot;, &quot;b&quot;}</code></td><td>The array type must be explicit</td></tr><tr><td>Project a collection</td><td><code>items.{#this.getName()}</code></td><td>Evaluates each item and returns a new List</td></tr><tr><td>Select from a collection</td><td><code>items.{? #this != null}</code></td><td>Returns every matching item</td></tr><tr><td>Select the first or last match</td><td><code>items.{^ condition}</code>, <code>items.{$ condition}</code></td><td>The result is still a List; account for an empty result before reading <code>[0]</code></td></tr><tr><td>Refer to the current item</td><td><code>#this</code></td><td>Its meaning changes with the current level in nested selections and projections</td></tr></tbody></table><p>For complex expressions, explicitly invoke public getters to reduce property-resolution and overload ambiguity. Prefer <code>#this.getName()</code> to <code>#this.name</code>. For maps, prefer <code>get(&quot;key&quot;)</code> and <code>containsKey(&quot;key&quot;)</code> to dotted property shorthand.</p><h2 id="verified-complex-expressions" tabindex="-1"><a class="header-anchor" href="#verified-complex-expressions" aria-hidden="true">#</a> Verified complex expressions</h2><div class="custom-container tip"><p class="custom-container-title">TIP</p><p>Some examples in this section use <code>Thread.getAllStackTraces()</code> to obtain a collection in any demo JVM. This operation captures every thread stack. On a production JVM with many threads, prefer a dedicated command such as <code>thread</code>, or assess the cost first, and do not run these examples frequently.</p></div><h3 id="selection-projection-first-match-and-last-match" tabindex="-1"><a class="header-anchor" href="#selection-projection-first-match-and-last-match" aria-hidden="true">#</a> Selection, projection, first match, and last match</h3><p>The following expression defines a list and returns projection, selection, first-match, and last-match results together:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>ognl <span class="token parameter variable">-x</span> <span class="token number">3</span> <span class="token string">&#39;#numbers={1,2,3,4,5,6}, #{&quot;projection&quot;:#numbers.{#this * 10},&quot;selection&quot;:#numbers.{? #this % 2 == 0},&quot;first&quot;:#numbers.{^ #this % 2 == 0}[0],&quot;last&quot;:#numbers.{$ #this % 2 == 0}[0]}&#39;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Even numbers are known to exist in this literal, so <code>[0]</code> is safe here. For runtime collections, save the selected list and check whether it is empty:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>ognl <span class="token string">&#39;#matched={1,3,5}.{^ #this % 2 == 0}, #matched.isEmpty() ? null : #matched[0]&#39;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="construct-a-structured-result-with-temporary-variables" tabindex="-1"><a class="header-anchor" href="#construct-a-structured-result-with-temporary-variables" aria-hidden="true">#</a> Construct a structured result with temporary variables</h3><p>Do not repeat expensive calls in a long expression. Save intermediate values, then return a newly created <code>LinkedHashMap</code>:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>ognl <span class="token parameter variable">-x</span> <span class="token number">2</span> <span class="token string">&#39;#result=new java.util.LinkedHashMap(), #props=@java.lang.System@getProperties(), #threads=@java.lang.Thread@getAllStackTraces(), #result.put(&quot;javaVersion&quot;, #props.get(&quot;java.version&quot;)), #result.put(&quot;javaHome&quot;, #props.get(&quot;java.home&quot;)), #result.put(&quot;threadCount&quot;, #threads.size()), #result&#39;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>The returned keys are <code>javaVersion</code>, <code>javaHome</code>, and <code>threadCount</code>. Comma-separated subexpressions are evaluated in order, and the value of the whole expression is the final <code>#result</code>.</p><h3 id="select-first-then-return-only-the-required-fields" tabindex="-1"><a class="header-anchor" href="#select-first-then-return-only-the-required-fields" aria-hidden="true">#</a> Select first, then return only the required fields</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>ognl <span class="token string">&#39;@java.lang.Thread@getAllStackTraces().keySet().{? #this.isAlive() &amp;&amp; !#this.isDaemon()}.{#this.getName()}&#39;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><code>.{? ...}</code> returns the selected threads. The following <code>.{...}</code> projects only thread names, avoiding expansion of complete <code>Thread</code> objects.</p><h3 id="count-by-group" tabindex="-1"><a class="header-anchor" href="#count-by-group" aria-hidden="true">#</a> Count by group</h3><p>The following expression counts threads by state. <code>#counts</code> is a temporary map created by this expression and does not modify an existing application object:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>ognl <span class="token parameter variable">-x</span> <span class="token number">2</span> <span class="token string">&#39;#counts=new java.util.LinkedHashMap(), @java.lang.Thread@getAllStackTraces().keySet().{#state=#this.getState().toString(), #counts.put(#state, #counts.containsKey(#state) ? #counts.get(#state) + 1 : 1)}, #counts&#39;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Example output:</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>@LinkedHashMap[
@String[RUNNABLE]:@Integer[10],
@String[TIMED_WAITING]:@Integer[6],
@String[WAITING]:@Integer[2],
]
</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></div><p>Do not put Java Stream syntax such as <code>stream().filter(x -&gt; ...)</code>, method references such as <code>Type::method</code>, or <code>computeIfAbsent(..., x -&gt; ...)</code> into OGNL. OGNL does not parse Java lambdas. Use OGNL selection <code>.{? ...}</code> and projection <code>.{...}</code> instead.</p><h3 id="bind-this-early-in-nested-objects" tabindex="-1"><a class="header-anchor" href="#bind-this-early-in-nested-objects" aria-hidden="true">#</a> Bind <code>#this</code> early in nested objects</h3><p>Inside the projection over <code>entrySet()</code>, <code>#this</code> is the current <code>Map.Entry</code>. Bind its key and value to meaningful variables before using them in a longer expression:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>ognl <span class="token string">&#39;#all=@java.lang.Thread@getAllStackTraces(), #all.entrySet().{? #this.getKey().getName().startsWith(&quot;arthas&quot;)}.{#thread=#this.getKey(), #stack=#this.getValue(), #thread.getName() + &quot; | &quot; + #thread.getState() + &quot; | depth=&quot; + #stack.length}&#39;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="handle-null-explicitly" tabindex="-1"><a class="header-anchor" href="#handle-null-explicitly" aria-hidden="true">#</a> Handle null explicitly</h3><p>OGNL does not support JavaScript-style <code>?.</code>. Do not mix in SpEL <code>T(...)</code> or template syntax <code>${...}</code> either. Save a possibly null value and protect the method call with a conditional expression:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>ognl <span class="token string">&#39;#value=@java.lang.System@getProperty(&quot;arthas.not.exists&quot;), #value == null ? &quot;&lt;missing&gt;&quot; : #value.trim()&#39;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Result:</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>@String[&lt;missing&gt;]
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="handle-both-return-and-exception-paths-in-watch" tabindex="-1"><a class="header-anchor" href="#handle-both-return-and-exception-paths-in-watch" aria-hidden="true">#</a> Handle both return and exception paths in <code>watch</code></h3><p><code>-f</code> evaluates the expression after both a normal return and an exception. Branch on <code>isReturn</code> before accessing <code>returnObj</code> or <code>throwExp</code>:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code><span class="token function">watch</span> demo.MathGame primeFactors <span class="token string">&#39;#result=new java.util.LinkedHashMap(), #result.put(&quot;number&quot;, params[0]), #result.put(&quot;outcome&quot;, isReturn ? &quot;return&quot; : &quot;throw&quot;), #result.put(&quot;detail&quot;, isReturn ? returnObj.size() : throwExp.getMessage()), #result&#39;</span> <span class="token parameter variable">-f</span> <span class="token parameter variable">-n</span> <span class="token number">2</span> <span class="token parameter variable">-x</span> <span class="token number">2</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>This expression evaluates on both paths in the real <code>math-game</code> JVM. <code>-n 2</code> limits the number of observations so the command terminates.</p><h3 id="use-instances-in-vmtool" tabindex="-1"><a class="header-anchor" href="#use-instances-in-vmtool" aria-hidden="true">#</a> Use <code>instances</code> in <code>vmtool</code></h3><p><code>instances</code> exists only in the expression context of <code>vmtool --action getInstances --express</code>:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>vmtool <span class="token parameter variable">--action</span> getInstances <span class="token parameter variable">--className</span> java.lang.Thread <span class="token parameter variable">--limit</span> <span class="token number">100</span> <span class="token parameter variable">--express</span> <span class="token string">&#39;instances.{? #this.isAlive() &amp;&amp; #this.getName().startsWith(&quot;arthas&quot;)}.{#this.getName()}&#39;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Use <code>--limit</code> before selection and projection. Do not use <code>--limit -1</code> unconditionally for an application class that may have many instances.</p><h2 id="classloader-selection-is-not-ognl-syntax" tabindex="-1"><a class="header-anchor" href="#classloader-selection-is-not-ognl-syntax" aria-hidden="true">#</a> ClassLoader selection is not OGNL syntax</h2><p>Before accessing an application class, identify its ClassLoader:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>sc <span class="token parameter variable">-d</span> com.example.OrderService
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Read <code>classLoaderHash</code> from the output and pass it as an <code>ognl</code> command option:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>ognl <span class="token parameter variable">-c</span> <span class="token operator">&lt;</span>classLoaderHash<span class="token operator">&gt;</span> <span class="token string">&#39;@com.example.OrderService@STATIC_FIELD&#39;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Keep these points in mind:</p><ul><li><code>-c</code> and <code>--classLoaderClass</code> are Arthas command options, not parts of the OGNL expression.</li><li>A class name may be loaded by multiple ClassLoaders. Do not guess the hash, and remember that it may change after a JVM restart.</li><li>For <code>ClassNotFoundException</code>, inspect the ClassLoader before randomly rewriting OGNL syntax.</li><li><code>--classLoaderClass</code> is appropriate only when exactly one ClassLoader instance has that type. Use the hash when multiple instances match.</li></ul><h2 id="quoting-and-formatting-there-are-two-parsers" tabindex="-1"><a class="header-anchor" href="#quoting-and-formatting-there-are-two-parsers" aria-hidden="true">#</a> Quoting and formatting: there are two parsers</h2><p>Arthas parses the command line first, then OGNL parses the expression. A shell, JSON, or MCP transport adds another formatting layer.</p><ul><li>In the Arthas console, wrap a complete expression in single quotes and use double quotes for OGNL string literals.</li><li>Keep the final command on one physical line. Visual terminal wrapping is harmless, but do not insert a real line break inside a class name, <code>.</code>, <code>@</code>, <code>#variable</code>, or an operator.</li><li>Do not insert whitespace after <code>.</code>, as in the invalid form <code>#map. get(&quot;key&quot;)</code>.</li><li>Join expression steps with commas, not semicolons.</li><li>Keep outer single quotes around expressions containing <code>{$ ...}</code>, otherwise some shells will interpret <code>$</code>.</li><li>For an MCP expression parameter, do not include Markdown backticks, outer single quotes, or the complete command.</li><li>For JSON transport, escape double quotes according to JSON rules only. Do not copy shell backslash escaping verbatim into a raw expression parameter.</li></ul><p>When quoting becomes deeply nested, prefer an Arthas <a href="/en/doc/batch-support.html" class="">batch file</a> or a dedicated expression field in the API to reduce shell-escaping layers.</p><h2 id="do-not-classify-every-failure-as-a-syntax-error" tabindex="-1"><a class="header-anchor" href="#do-not-classify-every-failure-as-a-syntax-error" aria-hidden="true">#</a> Do not classify every failure as a syntax error</h2><table><thead><tr><th>Symptom or exception keyword</th><th>Check first</th><th>Recommended action</th></tr></thead><tbody><tr><td><code>Malformed OGNL expression</code>, <code>ExpressionSyntaxException</code></td><td>Quotes, brackets, <code>@class@member</code>, commas, and projection/selection braces</td><td>Reduce to a minimal expression, then add one fragment at a time</td></tr><tr><td><code>NoSuchPropertyException</code></td><td>Whether the command exposes that variable; whether the property name is correct</td><td>Check the context-variable table and use an explicit public getter</td></tr><tr><td><code>MethodFailedException</code>, <code>NoSuchMethodException</code></td><td>Method name, argument types, and static versus instance invocation</td><td>Use <code>sm</code>/<code>jad</code> to inspect the real signature instead of guessing an overload</td></tr><tr><td><code>ClassNotFoundException</code></td><td>ClassLoader</td><td>Run <code>sc -d</code>, then specify <code>-c</code></td></tr><tr><td>A null intermediate object</td><td>Missing null branch in a call chain</td><td>Assign it to a <code>#variable</code> and guard the next call with a conditional expression</td></tr><tr><td><code>stricter invocation mode</code></td><td>The method or declaring class is blocked by OGNL strict mode</td><td>Do not disable the protection or bypass it with reflection; use <code>jvm</code>, <code>thread</code>, <code>sysprop</code>, or another dedicated command, or a safe public API</td></tr><tr><td><code>module ... does not export</code></td><td>JDK module boundaries, not necessarily OGNL grammar</td><td>Use a dedicated Arthas command or an accessible public application API</td></tr><tr><td>Timeout, huge output, or target-JVM disturbance</td><td>Expression work and expansion scope</td><td>Select before projecting, avoid repeated calls, and set <code>--limit</code>, <code>-n</code>, and a reasonable <code>-x</code></td></tr></tbody></table><p>For example, <code>@java.lang.Runtime@getRuntime()</code> can be rejected by the default OGNL strict invocation mode even though its syntax is valid. Repeatedly changing <code>@</code>, brackets, or quotes cannot fix this category of failure.</p><h2 id="generation-and-validation-protocol-for-ai-agents" tabindex="-1"><a class="header-anchor" href="#generation-and-validation-protocol-for-ai-agents" aria-hidden="true">#</a> Generation and validation protocol for AI agents</h2><p>Consider adding the following constraints to prompts for agents that generate Arthas commands:</p><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>You are generating OGNL for Arthas. Before generating it, you must confirm:
1. Whether the caller needs a complete Arthas command or a raw expression parameter. Output only the requested form.
2. Whether the expression runs in the ognl, getstatic, watch/stack/monitor/tt/trace, line, or vmtool context. Use only variables that actually exist in that context.
3. For application classes, run sc -d to identify the ClassLoader. If a method or field is uncertain, inspect it with sm/jad instead of guessing its name or overload.
4. Use @fully.qualified.Class@member for static access, #name for temporary variables, and commas for sequential steps.
5. Do not generate Java lambdas/Streams, method references, ?., SpEL T(...), ${...}, generic constructors, or semicolon statements.
6. Default to read-only behavior. Forbid process, file, network, ClassLoader, privilege-escalating reflection, thread-control, and application-state mutations. Mutation is allowed only on temporary collections created with new inside the expression.
7. Select before projecting, return only required fields, and set reasonable limit, -n, and -x values.
8. Keep the final expression on one physical line. Never break or insert whitespace inside a class name, dot access, @...@, #variable, or operator.
Validate incrementally instead of submitting one untested long expression:
A. Verify that the minimal root object, static field, or context variable is accessible.
B. Add only one #variable assignment, method call, selection, or projection per attempt, and execute it.
C. Add Map/List output construction and limiting options last.
D. On failure, classify it as command/escaping, grammar, context variable, ClassLoader, null, method signature, access restriction, or resource cost. Preserve the validated prefix and change only the failing fragment.
E. Claim that an expression is verified only after receiving a real Arthas result without a syntax exception.
</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></div><p>Before returning output, the agent should also perform a mechanical check:</p><ul><li>Does every <code>@class@member</code> contain a matching pair of <code>@</code> characters?</li><li>Are <code>()</code>, <code>[]</code>, <code>{}</code>, and quotes balanced?</li><li>Does every custom variable start with <code>#</code>?</li><li>Does <code>#this</code> refer to the intended nesting level in each selection or projection?</li><li>Are possibly empty selections, map values, <code>returnObj</code>, and <code>throwExp</code> protected by a branch?</li><li>Was a command option incorrectly placed inside the expression, or a complete command placed in a tool&#39;s expression field?</li><li>Did automatic formatting split a class name, method name, or operator?</li></ul><p>This process—confirm context, execute incrementally, then construct the final output—is more reliable than rewriting an entire complex expression after every failure, and it preserves evidence about the actual cause.</p><h2 id="further-reading" tabindex="-1"><a class="header-anchor" href="#further-reading" aria-hidden="true">#</a> Further reading</h2><ul><li><a href="https://github.com/alibaba/arthas/issues/71" target="_blank" rel="noopener noreferrer">Arthas issue #71: special OGNL usages<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><a href="https://commons.apache.org/dormant/commons-ognl/language-guide.html" target="_blank" rel="noopener noreferrer">Apache Commons OGNL Language Guide<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></ul></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/en/doc/ognl-express.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></div></footer><nav class="page-nav right-menu-padding" data-v-fdd717e0><p class="inner"><span class="prev"><a href="/en/doc/ognl.html" class="" aria-label="ognl"><!--[--><!--]--> ognl <!--[--><!--]--></a></span><span class="next"><a href="/en/doc/options.html" class="" aria-label="options"><!--[--><!--]--> options <!--[--><!--]--></a></span></p></nav><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
<script type="module" src="/assets/app.e2427bec.js" defer></script>
</body>
</html>