From c36d2f10aa32650717e2423fa7b4467f74f9efac Mon Sep 17 00:00:00 2001 From: hengyunabc Date: Sat, 14 Sep 2024 16:45:35 +0800 Subject: [PATCH] add 3.x docs --- 3.x/404.html | 41 + 3.x/assets/404.html.2154acec.js | 1 + 3.x/assets/404.html.d0402927.js | 1 + 3.x/assets/advanced-use.html.2f295a56.js | 1 + 3.x/assets/advanced-use.html.94d49710.js | 1 + 3.x/assets/advanced-use.html.9554def2.js | 30 + 3.x/assets/advanced-use.html.b6fb70e9.js | 30 + 3.x/assets/advice-class.html.0e371faa.js | 1 + 3.x/assets/advice-class.html.21f2ea38.js | 1 + 3.x/assets/advice-class.html.913cd28f.js | 16 + 3.x/assets/advice-class.html.b56b5ad0.js | 16 + 3.x/assets/agent.html.2c661add.js | 1 + 3.x/assets/agent.html.5d625533.js | 2 + 3.x/assets/agent.html.a8d22dff.js | 2 + 3.x/assets/agent.html.ad1674bc.js | 1 + 3.x/assets/app.4d248835.js | 38 + .../arthas-output-recording.5e4ef7bc.js | 1 + 3.x/assets/arthas-output-svg.30f64f53.js | 1 + 3.x/assets/arthas-properties.html.1fb20763.js | 1 + 3.x/assets/arthas-properties.html.3164354d.js | 13 + 3.x/assets/arthas-properties.html.c6a378d8.js | 1 + 3.x/assets/arthas-properties.html.f3f99ef8.js | 13 + 3.x/assets/arthas-web-ui.89f4fc6d.js | 1 + 3.x/assets/arthas.b23d3e5a.js | 1 + 3.x/assets/arthas3.html.62e301e7.js | 49 + 3.x/assets/arthas3.html.f5096367.js | 1 + 3.x/assets/async.html.0718d03c.js | 14 + 3.x/assets/async.html.08408f7f.js | 1 + 3.x/assets/async.html.0990e2e8.js | 1 + 3.x/assets/async.html.d8cce9ca.js | 14 + 3.x/assets/auth.html.0cae929d.js | 1 + 3.x/assets/auth.html.35f80b21.js | 13 + 3.x/assets/auth.html.3fe3d5ca.js | 1 + 3.x/assets/auth.html.d091b8de.js | 13 + 3.x/assets/back-to-top.8efcbe56.svg | 1 + 3.x/assets/base64.html.4fc99fea.js | 11 + 3.x/assets/base64.html.4feec68d.js | 11 + 3.x/assets/base64.html.d9951e03.js | 1 + 3.x/assets/base64.html.e5a32bd6.js | 1 + 3.x/assets/batch-support.html.09feead8.js | 10 + 3.x/assets/batch-support.html.1959143d.js | 10 + 3.x/assets/batch-support.html.a2012b98.js | 1 + 3.x/assets/batch-support.html.acbd1eb9.js | 1 + 3.x/assets/cat.html.77044202.js | 2 + 3.x/assets/cat.html.79af7693.js | 1 + 3.x/assets/cat.html.7e324ac6.js | 2 + 3.x/assets/cat.html.c8a558a6.js | 1 + 3.x/assets/classloader.html.2b5b952f.js | 87 ++ 3.x/assets/classloader.html.50846686.js | 1 + 3.x/assets/classloader.html.5b255ef1.js | 1 + 3.x/assets/classloader.html.d971b2e3.js | 87 ++ 3.x/assets/cls.html.92ac93b9.js | 1 + 3.x/assets/cls.html.9332bbdf.js | 1 + 3.x/assets/cls.html.a6a13162.js | 1 + 3.x/assets/cls.html.aef45d21.js | 1 + 3.x/assets/commands.html.b9c3ff85.js | 1 + 3.x/assets/commands.html.e2567b24.js | 1 + 3.x/assets/commands.html.e522310c.js | 1 + 3.x/assets/commands.html.ea43666c.js | 1 + 3.x/assets/contact-us.html.6b2c4bcc.js | 1 + 3.x/assets/contact-us.html.6d0fe4e6.js | 1 + 3.x/assets/contact-us.html.77c0699c.js | 1 + 3.x/assets/contact-us.html.c4d19d8e.js | 1 + 3.x/assets/dashboard.eb1e1fee.js | 1 + 3.x/assets/dashboard.html.79bd7e0f.js | 33 + 3.x/assets/dashboard.html.88ef26c5.js | 33 + 3.x/assets/dashboard.html.c7a97553.js | 1 + 3.x/assets/dashboard.html.f56e6c96.js | 1 + 3.x/assets/docker.html.030cca04.js | 1 + 3.x/assets/docker.html.77dd787e.js | 50 + 3.x/assets/docker.html.8430667f.js | 50 + 3.x/assets/docker.html.a7fd435f.js | 1 + 3.x/assets/download.html.0aec292a.js | 5 + 3.x/assets/download.html.127d6cde.js | 1 + 3.x/assets/download.html.5cdfc6bd.js | 5 + 3.x/assets/download.html.b853bfd7.js | 1 + 3.x/assets/dump.html.148d41dc.js | 1 + 3.x/assets/dump.html.3f441711.js | 1 + 3.x/assets/dump.html.a9afcd2b.js | 20 + 3.x/assets/dump.html.aa1d0523.js | 20 + 3.x/assets/echo.html.239528da.js | 1 + 3.x/assets/echo.html.8619670c.js | 1 + 3.x/assets/echo.html.c9564b4c.js | 2 + 3.x/assets/echo.html.f45a06cc.js | 2 + 3.x/assets/faq.html.18da055d.js | 1 + 3.x/assets/faq.html.39698152.js | 7 + 3.x/assets/faq.html.abd28b1f.js | 1 + 3.x/assets/faq.html.b9626740.js | 7 + 3.x/assets/getstatic.html.194e97dd.js | 34 + 3.x/assets/getstatic.html.2229049b.js | 1 + 3.x/assets/getstatic.html.d81e76f2.js | 34 + 3.x/assets/getstatic.html.e01bd744.js | 1 + 3.x/assets/grep.html.1c2ee274.js | 30 + 3.x/assets/grep.html.4aa91236.js | 1 + 3.x/assets/grep.html.8e0aee31.js | 1 + 3.x/assets/grep.html.c753d37b.js | 30 + 3.x/assets/groovy.html.21de60b6.js | 1 + 3.x/assets/groovy.html.292661c1.js | 124 ++ 3.x/assets/groovy.html.2ef01485.js | 124 ++ 3.x/assets/groovy.html.92f5e844.js | 1 + 3.x/assets/heapdump.html.19f5486f.js | 1 + 3.x/assets/heapdump.html.2d73c547.js | 10 + 3.x/assets/heapdump.html.3fe356b2.js | 1 + 3.x/assets/heapdump.html.51c1271f.js | 10 + 3.x/assets/help.html.3d260e86.js | 1 + 3.x/assets/help.html.5a1d36ec.js | 66 + 3.x/assets/help.html.67ffadca.js | 66 + 3.x/assets/help.html.7ba26453.js | 1 + 3.x/assets/history.html.006cedb1.js | 1 + 3.x/assets/history.html.3f90631d.js | 10 + 3.x/assets/history.html.5c8da1d4.js | 1 + 3.x/assets/history.html.72971f6a.js | 10 + 3.x/assets/http-api.html.1bd8ba57.js | 344 +++++ 3.x/assets/http-api.html.5c8cd6bc.js | 344 +++++ 3.x/assets/http-api.html.a19a0b64.js | 1 + 3.x/assets/http-api.html.f5e81364.js | 1 + 3.x/assets/idea-plugin.html.0961bb69.js | 1 + 3.x/assets/idea-plugin.html.32b2309e.js | 1 + 3.x/assets/idea-plugin.html.5cd3ae1a.js | 1 + 3.x/assets/idea-plugin.html.d7acd139.js | 1 + 3.x/assets/index.html.27b99973.js | 1 + 3.x/assets/index.html.349dc4ce.js | 1 + 3.x/assets/index.html.3951988f.js | 1 + 3.x/assets/index.html.636fad3d.js | 1 + 3.x/assets/index.html.6c4675e2.js | 1 + 3.x/assets/index.html.72b89313.js | 1 + 3.x/assets/index.html.88e6b040.js | 1 + 3.x/assets/index.html.da04bb04.js | 1 + 3.x/assets/install-detail.html.0208e8d8.js | 1 + 3.x/assets/install-detail.html.0c410a89.js | 1 + 3.x/assets/install-detail.html.50cfaa59.js | 13 + 3.x/assets/install-detail.html.cbd1e77a.js | 12 + 3.x/assets/jad.html.01fefda3.js | 119 ++ 3.x/assets/jad.html.67f11a53.js | 119 ++ 3.x/assets/jad.html.d639a8bb.js | 1 + 3.x/assets/jad.html.e520a68e.js | 1 + 3.x/assets/jfr.html.57a326e6.js | 1 + 3.x/assets/jfr.html.63d78e12.js | 22 + 3.x/assets/jfr.html.bb7f02ab.js | 22 + 3.x/assets/jfr.html.e858c4d3.js | 1 + 3.x/assets/jvm.html.4efee18b.js | 1 + 3.x/assets/jvm.html.5fd9778c.js | 100 ++ 3.x/assets/jvm.html.a00151a5.js | 1 + 3.x/assets/jvm.html.b5bfa365.js | 100 ++ 3.x/assets/keymap.html.35ecd977.js | 20 + 3.x/assets/keymap.html.6e72672f.js | 20 + 3.x/assets/keymap.html.e3647cfd.js | 1 + 3.x/assets/keymap.html.e94a5d53.js | 1 + 3.x/assets/logger.html.3230d5ce.js | 1 + 3.x/assets/logger.html.7a983455.js | 1 + 3.x/assets/logger.html.7de7427f.js | 136 ++ 3.x/assets/logger.html.cdea0f90.js | 136 ++ 3.x/assets/manual-install.html.09d3b86a.js | 1 + 3.x/assets/manual-install.html.42509750.js | 1 + 3.x/assets/manual-install.html.aba050db.js | 20 + 3.x/assets/manual-install.html.d729afcd.js | 20 + 3.x/assets/mbean.html.26631030.js | 9 + 3.x/assets/mbean.html.405141c1.js | 1 + 3.x/assets/mbean.html.555cb2c7.js | 1 + 3.x/assets/mbean.html.7437cca3.js | 9 + 3.x/assets/mc.html.19c82f53.js | 8 + 3.x/assets/mc.html.70645c5e.js | 1 + 3.x/assets/mc.html.89ccac82.js | 1 + 3.x/assets/mc.html.ac459852.js | 8 + 3.x/assets/memory.html.078c4658.js | 1 + 3.x/assets/memory.html.7bfef615.js | 15 + 3.x/assets/memory.html.9926de30.js | 15 + 3.x/assets/memory.html.e3c4914e.js | 1 + 3.x/assets/monitor.html.0b324722.js | 81 ++ 3.x/assets/monitor.html.30828325.js | 1 + 3.x/assets/monitor.html.5f496a09.js | 81 ++ 3.x/assets/monitor.html.d6717549.js | 1 + 3.x/assets/ognl.html.59679ee9.js | 46 + 3.x/assets/ognl.html.a04123af.js | 1 + 3.x/assets/ognl.html.a2f5b795.js | 1 + 3.x/assets/ognl.html.c5956d1f.js | 46 + 3.x/assets/options.html.39ae73d3.js | 1 + 3.x/assets/options.html.6ca60b92.js | 61 + 3.x/assets/options.html.76f0ad11.js | 1 + 3.x/assets/options.html.b8b42168.js | 61 + 3.x/assets/perfcounter.html.04486209.js | 1 + 3.x/assets/perfcounter.html.3794d77f.js | 20 + 3.x/assets/perfcounter.html.a2008d46.js | 1 + 3.x/assets/perfcounter.html.c8d6f07e.js | 20 + 3.x/assets/profiler.html.2fe5463f.js | 1 + 3.x/assets/profiler.html.95a82517.js | 53 + 3.x/assets/profiler.html.e7f88019.js | 53 + 3.x/assets/profiler.html.ecb6c417.js | 1 + 3.x/assets/pwd.html.4f686509.js | 2 + 3.x/assets/pwd.html.5c70637d.js | 1 + 3.x/assets/pwd.html.b8813280.js | 1 + 3.x/assets/pwd.html.d34432c3.js | 2 + 3.x/assets/qqgroup3_qr.f82e3fd0.js | 1 + 3.x/assets/quick-start.html.2afac43e.js | 1 + 3.x/assets/quick-start.html.463266ab.js | 1 + 3.x/assets/quick-start.html.70301235.js | 165 +++ 3.x/assets/quick-start.html.cbab3d30.js | 165 +++ 3.x/assets/quit.html.052c6b91.js | 1 + 3.x/assets/quit.html.125451fe.js | 1 + 3.x/assets/quit.html.64b41fb3.js | 1 + 3.x/assets/quit.html.adcbca9c.js | 1 + 3.x/assets/redefine.html.2e16ab41.js | 35 + 3.x/assets/redefine.html.4f4236c3.js | 35 + 3.x/assets/redefine.html.a2b54a14.js | 1 + 3.x/assets/redefine.html.ee728e3e.js | 1 + 3.x/assets/release-notes.html.5e40eac1.js | 1 + 3.x/assets/release-notes.html.79040020.js | 1 + 3.x/assets/release-notes.html.8810e03d.js | 1 + 3.x/assets/release-notes.html.bd30f66e.js | 1 + 3.x/assets/reset.html.613ce22c.js | 36 + 3.x/assets/reset.html.6542e356.js | 1 + 3.x/assets/reset.html.b7ada98f.js | 36 + 3.x/assets/reset.html.d6cfba7b.js | 1 + 3.x/assets/retransform.html.509ca8a2.js | 50 + 3.x/assets/retransform.html.590b7b85.js | 50 + 3.x/assets/retransform.html.8eba17c2.js | 1 + 3.x/assets/retransform.html.c9177e92.js | 1 + 3.x/assets/save-log.html.1848baa1.js | 1 + 3.x/assets/save-log.html.59e37d28.js | 1 + 3.x/assets/save-log.html.6fa77f22.js | 6 + 3.x/assets/save-log.html.aede14f6.js | 6 + 3.x/assets/sc.html.09e2c24b.js | 65 + 3.x/assets/sc.html.4231ef3b.js | 65 + 3.x/assets/sc.html.74c76d3a.js | 1 + 3.x/assets/sc.html.7e6d0647.js | 1 + 3.x/assets/session.html.5c4eabed.js | 1 + 3.x/assets/session.html.61530ca8.js | 7 + 3.x/assets/session.html.c643c273.js | 1 + 3.x/assets/session.html.ebca9c60.js | 6 + 3.x/assets/sm.html.0d66961e.js | 57 + 3.x/assets/sm.html.961479d6.js | 1 + 3.x/assets/sm.html.981fdfec.js | 57 + 3.x/assets/sm.html.e7e61e0b.js | 1 + .../spring-boot-starter.html.0ccae142.js | 37 + .../spring-boot-starter.html.304b29da.js | 1 + .../spring-boot-starter.html.60544b4f.js | 37 + .../spring-boot-starter.html.f437e222.js | 1 + 3.x/assets/stack.html.6561e199.js | 1 + 3.x/assets/stack.html.bbfa304b.js | 1 + 3.x/assets/stack.html.db4b5700.js | 32 + 3.x/assets/stack.html.dfb85a5e.js | 32 + 3.x/assets/start-arthas.html.11758ed5.js | 1 + 3.x/assets/start-arthas.html.4886b6be.js | 18 + 3.x/assets/start-arthas.html.aeeb9c4f.js | 18 + 3.x/assets/start-arthas.html.ddd2298e.js | 1 + 3.x/assets/stop.html.17210afa.js | 1 + 3.x/assets/stop.html.29be75c6.js | 1 + 3.x/assets/stop.html.493e47db.js | 1 + 3.x/assets/stop.html.8c6a9664.js | 1 + 3.x/assets/style.f2bd2fc0.css | 1 + 3.x/assets/sysenv.html.2f968356.js | 1 + 3.x/assets/sysenv.html.ac969eec.js | 52 + 3.x/assets/sysenv.html.ce9a0bce.js | 52 + 3.x/assets/sysenv.html.d4a09599.js | 1 + 3.x/assets/sysprop.html.024045c5.js | 1 + 3.x/assets/sysprop.html.36bf4069.js | 1 + 3.x/assets/sysprop.html.76aee09d.js | 96 ++ 3.x/assets/sysprop.html.aeb4ee87.js | 96 ++ 3.x/assets/tee.html.2c90d1cb.js | 1 + 3.x/assets/tee.html.8aa74468.js | 18 + 3.x/assets/tee.html.9daca569.js | 18 + 3.x/assets/tee.html.f88833bc.js | 1 + 3.x/assets/thread.html.036b2896.js | 1 + 3.x/assets/thread.html.3171fcb1.js | 112 ++ 3.x/assets/thread.html.c837e66a.js | 112 ++ 3.x/assets/thread.html.e4dd07a8.js | 1 + 3.x/assets/trace.html.0dc105ca.js | 1 + 3.x/assets/trace.html.53ffd359.js | 111 ++ 3.x/assets/trace.html.861de4ab.js | 111 ++ 3.x/assets/trace.html.987171f7.js | 1 + 3.x/assets/tt.html.1800bc01.js | 1 + 3.x/assets/tt.html.51ba2266.js | 92 ++ 3.x/assets/tt.html.980704e8.js | 93 ++ 3.x/assets/tt.html.fd7438d0.js | 1 + 3.x/assets/tunnel-server-agents.03d5eafa.js | 1 + 3.x/assets/tunnel.html.203ccf1d.js | 1 + 3.x/assets/tunnel.html.5346db5d.js | 1 + 3.x/assets/tunnel.html.9c3dcb91.js | 47 + 3.x/assets/tunnel.html.d20e61ab.js | 47 + 3.x/assets/version.html.18257b2f.js | 3 + 3.x/assets/version.html.2ce43555.js | 1 + 3.x/assets/version.html.48ec1551.js | 3 + 3.x/assets/version.html.85cfef6a.js | 1 + 3.x/assets/vmoption.html.58b16737.js | 1 + 3.x/assets/vmoption.html.a450713f.js | 40 + 3.x/assets/vmoption.html.c32a5087.js | 40 + 3.x/assets/vmoption.html.c8c7e7fc.js | 1 + 3.x/assets/vmtool.html.3a06f08b.js | 1 + 3.x/assets/vmtool.html.65118aec.js | 29 + 3.x/assets/vmtool.html.ab0c1d24.js | 1 + 3.x/assets/vmtool.html.dc9e0833.js | 29 + 3.x/assets/watch.html.30c91d3e.js | 188 +++ 3.x/assets/watch.html.3663bb24.js | 1 + 3.x/assets/watch.html.8b8293d0.js | 1 + 3.x/assets/watch.html.e73d5269.js | 188 +++ 3.x/assets/web-console-local.156ba0ce.js | 1 + 3.x/assets/web-console.html.8f3242b3.js | 1 + 3.x/assets/web-console.html.a124c728.js | 1 + 3.x/assets/web-console.html.ad1a9f26.js | 1 + 3.x/assets/web-console.html.cea17e0f.js | 1 + 3.x/doc/advanced-use.html | 70 + 3.x/doc/advice-class.html | 56 + 3.x/doc/agent.html | 42 + 3.x/doc/arthas-properties.html | 53 + 3.x/doc/arthas-tutorials.html | 1224 +++++++++++++++++ 3.x/doc/arthas3.html | 89 ++ 3.x/doc/async.html | 54 + 3.x/doc/auth.html | 53 + 3.x/doc/base64.html | 51 + 3.x/doc/batch-support.html | 50 + 3.x/doc/cat.html | 42 + 3.x/doc/classloader.html | 127 ++ 3.x/doc/cls.html | 41 + 3.x/doc/commands.html | 41 + 3.x/doc/contact-us.html | 41 + 3.x/doc/dashboard.html | 73 + 3.x/doc/docker.html | 90 ++ 3.x/doc/download.html | 45 + 3.x/doc/dump.html | 60 + 3.x/doc/echo.html | 42 + 3.x/doc/en/advanced-use.html | 17 + 3.x/doc/en/advice-class.html | 17 + 3.x/doc/en/agent.html | 17 + 3.x/doc/en/arthas-properties.html | 17 + 3.x/doc/en/async.html | 17 + 3.x/doc/en/auth.html | 17 + 3.x/doc/en/base64.html | 17 + 3.x/doc/en/batch-support.html | 17 + 3.x/doc/en/cat.html | 17 + 3.x/doc/en/classloader.html | 17 + 3.x/doc/en/cls.html | 17 + 3.x/doc/en/commands.html | 17 + 3.x/doc/en/contact-us.html | 17 + 3.x/doc/en/dashboard.html | 17 + 3.x/doc/en/docker.html | 17 + 3.x/doc/en/download.html | 17 + 3.x/doc/en/dump.html | 17 + 3.x/doc/en/echo.html | 17 + 3.x/doc/en/faq.html | 17 + 3.x/doc/en/getstatic.html | 17 + 3.x/doc/en/grep.html | 17 + 3.x/doc/en/groovy.html | 17 + 3.x/doc/en/heapdump.html | 17 + 3.x/doc/en/help.html | 17 + 3.x/doc/en/history.html | 17 + 3.x/doc/en/http-api.html | 17 + 3.x/doc/en/idea-plugin.html | 17 + 3.x/doc/en/index.html | 17 + 3.x/doc/en/install-detail.html | 17 + 3.x/doc/en/jad.html | 17 + 3.x/doc/en/jfr.html | 17 + 3.x/doc/en/jvm.html | 17 + 3.x/doc/en/keymap.html | 17 + 3.x/doc/en/logger.html | 17 + 3.x/doc/en/manual-install.html | 17 + 3.x/doc/en/mbean.html | 17 + 3.x/doc/en/mc.html | 17 + 3.x/doc/en/memory.html | 17 + 3.x/doc/en/monitor.html | 17 + 3.x/doc/en/ognl.html | 17 + 3.x/doc/en/options.html | 17 + 3.x/doc/en/perfcounter.html | 17 + 3.x/doc/en/profiler.html | 17 + 3.x/doc/en/pwd.html | 17 + 3.x/doc/en/quick-start.html | 17 + 3.x/doc/en/quit.html | 17 + 3.x/doc/en/redefine.html | 17 + 3.x/doc/en/release-notes.html | 17 + 3.x/doc/en/reset.html | 17 + 3.x/doc/en/retransform.html | 17 + 3.x/doc/en/save-log.html | 17 + 3.x/doc/en/sc.html | 17 + 3.x/doc/en/session.html | 17 + 3.x/doc/en/sm.html | 17 + 3.x/doc/en/spring-boot-starter.html | 17 + 3.x/doc/en/stack.html | 17 + 3.x/doc/en/start-arthas.html | 17 + 3.x/doc/en/stop.html | 17 + 3.x/doc/en/sysenv.html | 17 + 3.x/doc/en/sysprop.html | 17 + 3.x/doc/en/tee.html | 17 + 3.x/doc/en/thread.html | 17 + 3.x/doc/en/trace.html | 17 + 3.x/doc/en/tt.html | 17 + 3.x/doc/en/tunnel.html | 17 + 3.x/doc/en/version.html | 17 + 3.x/doc/en/vmoption.html | 17 + 3.x/doc/en/vmtool.html | 17 + 3.x/doc/en/watch.html | 17 + 3.x/doc/en/web-console.html | 17 + 3.x/doc/faq.html | 47 + 3.x/doc/getstatic.html | 74 + 3.x/doc/grep.html | 70 + 3.x/doc/groovy.html | 164 +++ 3.x/doc/heapdump.html | 50 + 3.x/doc/help.html | 106 ++ 3.x/doc/history.html | 50 + 3.x/doc/http-api.html | 384 ++++++ 3.x/doc/idea-plugin.html | 41 + 3.x/doc/index.html | 41 + 3.x/doc/install-detail.html | 53 + 3.x/doc/jad.html | 159 +++ 3.x/doc/jfr.html | 62 + 3.x/doc/jvm.html | 140 ++ 3.x/doc/keymap.html | 60 + 3.x/doc/logger.html | 176 +++ 3.x/doc/manual-install.html | 60 + 3.x/doc/mbean.html | 49 + 3.x/doc/mc.html | 48 + 3.x/doc/memory.html | 55 + 3.x/doc/monitor.html | 121 ++ 3.x/doc/ognl.html | 86 ++ 3.x/doc/options.html | 101 ++ 3.x/doc/perfcounter.html | 60 + 3.x/doc/profiler.html | 93 ++ 3.x/doc/pwd.html | 42 + 3.x/doc/quick-start.html | 205 +++ 3.x/doc/quit.html | 41 + 3.x/doc/redefine.html | 75 + 3.x/doc/release-notes.html | 41 + 3.x/doc/reset.html | 76 + 3.x/doc/retransform.html | 90 ++ 3.x/doc/save-log.html | 46 + 3.x/doc/sc.html | 105 ++ 3.x/doc/session.html | 47 + 3.x/doc/sm.html | 97 ++ 3.x/doc/spring-boot-starter.html | 77 ++ 3.x/doc/stack.html | 72 + 3.x/doc/start-arthas.html | 58 + 3.x/doc/stop.html | 41 + 3.x/doc/sysenv.html | 92 ++ 3.x/doc/sysprop.html | 136 ++ 3.x/doc/tee.html | 58 + 3.x/doc/thread.html | 152 ++ 3.x/doc/trace.html | 151 ++ 3.x/doc/tt.html | 133 ++ 3.x/doc/tunnel.html | 87 ++ 3.x/doc/version.html | 43 + 3.x/doc/vmoption.html | 80 ++ 3.x/doc/vmtool.html | 69 + 3.x/doc/watch.html | 228 +++ 3.x/doc/web-console.html | 41 + 3.x/en-us/index.html | 17 + 3.x/en/doc/advanced-use.html | 70 + 3.x/en/doc/advice-class.html | 56 + 3.x/en/doc/agent.html | 42 + 3.x/en/doc/arthas-properties.html | 53 + 3.x/en/doc/async.html | 54 + 3.x/en/doc/auth.html | 53 + 3.x/en/doc/base64.html | 51 + 3.x/en/doc/batch-support.html | 50 + 3.x/en/doc/cat.html | 42 + 3.x/en/doc/classloader.html | 127 ++ 3.x/en/doc/cls.html | 41 + 3.x/en/doc/commands.html | 41 + 3.x/en/doc/contact-us.html | 41 + 3.x/en/doc/dashboard.html | 73 + 3.x/en/doc/docker.html | 90 ++ 3.x/en/doc/download.html | 45 + 3.x/en/doc/dump.html | 60 + 3.x/en/doc/echo.html | 42 + 3.x/en/doc/faq.html | 47 + 3.x/en/doc/getstatic.html | 74 + 3.x/en/doc/grep.html | 70 + 3.x/en/doc/groovy.html | 164 +++ 3.x/en/doc/heapdump.html | 50 + 3.x/en/doc/help.html | 106 ++ 3.x/en/doc/history.html | 50 + 3.x/en/doc/http-api.html | 384 ++++++ 3.x/en/doc/idea-plugin.html | 41 + 3.x/en/doc/index.html | 41 + 3.x/en/doc/install-detail.html | 52 + 3.x/en/doc/jad.html | 159 +++ 3.x/en/doc/jfr.html | 62 + 3.x/en/doc/jvm.html | 140 ++ 3.x/en/doc/keymap.html | 60 + 3.x/en/doc/logger.html | 176 +++ 3.x/en/doc/manual-install.html | 60 + 3.x/en/doc/mbean.html | 49 + 3.x/en/doc/mc.html | 48 + 3.x/en/doc/memory.html | 55 + 3.x/en/doc/monitor.html | 121 ++ 3.x/en/doc/ognl.html | 86 ++ 3.x/en/doc/options.html | 101 ++ 3.x/en/doc/perfcounter.html | 60 + 3.x/en/doc/profiler.html | 93 ++ 3.x/en/doc/pwd.html | 42 + 3.x/en/doc/quick-start.html | 205 +++ 3.x/en/doc/quit.html | 41 + 3.x/en/doc/redefine.html | 75 + 3.x/en/doc/release-notes.html | 41 + 3.x/en/doc/reset.html | 76 + 3.x/en/doc/retransform.html | 90 ++ 3.x/en/doc/save-log.html | 46 + 3.x/en/doc/sc.html | 105 ++ 3.x/en/doc/session.html | 46 + 3.x/en/doc/sm.html | 97 ++ 3.x/en/doc/spring-boot-starter.html | 77 ++ 3.x/en/doc/stack.html | 72 + 3.x/en/doc/start-arthas.html | 58 + 3.x/en/doc/stop.html | 41 + 3.x/en/doc/sysenv.html | 92 ++ 3.x/en/doc/sysprop.html | 136 ++ 3.x/en/doc/tee.html | 58 + 3.x/en/doc/thread.html | 152 ++ 3.x/en/doc/trace.html | 151 ++ 3.x/en/doc/tt.html | 132 ++ 3.x/en/doc/tunnel.html | 87 ++ 3.x/en/doc/version.html | 43 + 3.x/en/doc/vmoption.html | 80 ++ 3.x/en/doc/vmtool.html | 69 + 3.x/en/doc/watch.html | 228 +++ 3.x/en/doc/web-console.html | 41 + 3.x/en/index.html | 56 + 3.x/images/alibabacloud_hotreload.png | Bin 0 -> 204025 bytes 3.x/images/arthas-output-recording.png | Bin 0 -> 20263 bytes 3.x/images/arthas-output-svg.jpg | Bin 0 -> 319943 bytes 3.x/images/arthas-output.jpg | Bin 0 -> 59086 bytes 3.x/images/arthas-tunnel-server.png | Bin 0 -> 153515 bytes 3.x/images/arthas-web-ui.png | Bin 0 -> 249971 bytes 3.x/images/arthas.png | Bin 0 -> 16775 bytes 3.x/images/arthas_dark.png | Bin 0 -> 5621 bytes 3.x/images/arthas_light.png | Bin 0 -> 5656 bytes 3.x/images/arthas_mate_image.png | Bin 0 -> 100409 bytes 3.x/images/dashboard.png | Bin 0 -> 809884 bytes 3.x/images/dingding2_qr.jpg | Bin 0 -> 28539 bytes 3.x/images/dingding3_qr.jpg | Bin 0 -> 28289 bytes 3.x/images/dingding_group_search.png | Bin 0 -> 21913 bytes 3.x/images/dingding_qr.jpg | Bin 0 -> 28684 bytes 3.x/images/favicon.ico | Bin 0 -> 16958 bytes 3.x/images/logo.png | Bin 0 -> 6328 bytes 3.x/images/qqgroup2_qr.jpg | Bin 0 -> 89788 bytes 3.x/images/qqgroup3_qr.jpg | Bin 0 -> 28965 bytes 3.x/images/qqgroup_qr.jpg | Bin 0 -> 57780 bytes 3.x/images/qr-jd-2019.png | Bin 0 -> 7043 bytes 3.x/images/qrcode_gongzhonghao.jpg | Bin 0 -> 40069 bytes 3.x/images/trace.png | Bin 0 -> 123912 bytes 3.x/images/tunnel-server-agents.png | Bin 0 -> 40658 bytes 3.x/images/tunnel-server-apps.png | Bin 0 -> 27975 bytes 3.x/images/users/users_alibaba.png | Bin 0 -> 9743 bytes 3.x/images/users/users_didi.png | Bin 0 -> 12450 bytes 3.x/images/users/users_icbc.png | Bin 0 -> 11211 bytes 3.x/images/users/users_kaola.png | Bin 0 -> 8392 bytes 3.x/images/users/users_qunar.png | Bin 0 -> 9974 bytes 3.x/images/users/users_telecom.png | Bin 0 -> 18758 bytes 3.x/images/users/users_weidian.png | Bin 0 -> 7389 bytes 3.x/images/users/users_yinlian.png | Bin 0 -> 13213 bytes 3.x/images/web-console-local.png | Bin 0 -> 50070 bytes 3.x/index.html | 56 + 3.x/zh-cn/index.html | 17 + arthas-boot3.jar | Bin 0 -> 142610 bytes as3.sh | 1109 +++++++++++++++ install3.sh | 48 + 553 files changed, 21541 insertions(+) create mode 100644 3.x/404.html create mode 100644 3.x/assets/404.html.2154acec.js create mode 100644 3.x/assets/404.html.d0402927.js create mode 100644 3.x/assets/advanced-use.html.2f295a56.js create mode 100644 3.x/assets/advanced-use.html.94d49710.js create mode 100644 3.x/assets/advanced-use.html.9554def2.js create mode 100644 3.x/assets/advanced-use.html.b6fb70e9.js create mode 100644 3.x/assets/advice-class.html.0e371faa.js create mode 100644 3.x/assets/advice-class.html.21f2ea38.js create mode 100644 3.x/assets/advice-class.html.913cd28f.js create mode 100644 3.x/assets/advice-class.html.b56b5ad0.js create mode 100644 3.x/assets/agent.html.2c661add.js create mode 100644 3.x/assets/agent.html.5d625533.js create mode 100644 3.x/assets/agent.html.a8d22dff.js create mode 100644 3.x/assets/agent.html.ad1674bc.js create mode 100644 3.x/assets/app.4d248835.js create mode 100644 3.x/assets/arthas-output-recording.5e4ef7bc.js create mode 100644 3.x/assets/arthas-output-svg.30f64f53.js create mode 100644 3.x/assets/arthas-properties.html.1fb20763.js create mode 100644 3.x/assets/arthas-properties.html.3164354d.js create mode 100644 3.x/assets/arthas-properties.html.c6a378d8.js create mode 100644 3.x/assets/arthas-properties.html.f3f99ef8.js create mode 100644 3.x/assets/arthas-web-ui.89f4fc6d.js create mode 100644 3.x/assets/arthas.b23d3e5a.js create mode 100644 3.x/assets/arthas3.html.62e301e7.js create mode 100644 3.x/assets/arthas3.html.f5096367.js create mode 100644 3.x/assets/async.html.0718d03c.js create mode 100644 3.x/assets/async.html.08408f7f.js create mode 100644 3.x/assets/async.html.0990e2e8.js create mode 100644 3.x/assets/async.html.d8cce9ca.js create mode 100644 3.x/assets/auth.html.0cae929d.js create mode 100644 3.x/assets/auth.html.35f80b21.js create mode 100644 3.x/assets/auth.html.3fe3d5ca.js create mode 100644 3.x/assets/auth.html.d091b8de.js create mode 100644 3.x/assets/back-to-top.8efcbe56.svg create mode 100644 3.x/assets/base64.html.4fc99fea.js create mode 100644 3.x/assets/base64.html.4feec68d.js create mode 100644 3.x/assets/base64.html.d9951e03.js create mode 100644 3.x/assets/base64.html.e5a32bd6.js create mode 100644 3.x/assets/batch-support.html.09feead8.js create mode 100644 3.x/assets/batch-support.html.1959143d.js create mode 100644 3.x/assets/batch-support.html.a2012b98.js create mode 100644 3.x/assets/batch-support.html.acbd1eb9.js create mode 100644 3.x/assets/cat.html.77044202.js create mode 100644 3.x/assets/cat.html.79af7693.js create mode 100644 3.x/assets/cat.html.7e324ac6.js create mode 100644 3.x/assets/cat.html.c8a558a6.js create mode 100644 3.x/assets/classloader.html.2b5b952f.js create mode 100644 3.x/assets/classloader.html.50846686.js create mode 100644 3.x/assets/classloader.html.5b255ef1.js create mode 100644 3.x/assets/classloader.html.d971b2e3.js create mode 100644 3.x/assets/cls.html.92ac93b9.js create mode 100644 3.x/assets/cls.html.9332bbdf.js create mode 100644 3.x/assets/cls.html.a6a13162.js create mode 100644 3.x/assets/cls.html.aef45d21.js create mode 100644 3.x/assets/commands.html.b9c3ff85.js create mode 100644 3.x/assets/commands.html.e2567b24.js create mode 100644 3.x/assets/commands.html.e522310c.js create mode 100644 3.x/assets/commands.html.ea43666c.js create mode 100644 3.x/assets/contact-us.html.6b2c4bcc.js create mode 100644 3.x/assets/contact-us.html.6d0fe4e6.js create mode 100644 3.x/assets/contact-us.html.77c0699c.js create mode 100644 3.x/assets/contact-us.html.c4d19d8e.js create mode 100644 3.x/assets/dashboard.eb1e1fee.js create mode 100644 3.x/assets/dashboard.html.79bd7e0f.js create mode 100644 3.x/assets/dashboard.html.88ef26c5.js create mode 100644 3.x/assets/dashboard.html.c7a97553.js create mode 100644 3.x/assets/dashboard.html.f56e6c96.js create mode 100644 3.x/assets/docker.html.030cca04.js create mode 100644 3.x/assets/docker.html.77dd787e.js create mode 100644 3.x/assets/docker.html.8430667f.js create mode 100644 3.x/assets/docker.html.a7fd435f.js create mode 100644 3.x/assets/download.html.0aec292a.js create mode 100644 3.x/assets/download.html.127d6cde.js create mode 100644 3.x/assets/download.html.5cdfc6bd.js create mode 100644 3.x/assets/download.html.b853bfd7.js create mode 100644 3.x/assets/dump.html.148d41dc.js create mode 100644 3.x/assets/dump.html.3f441711.js create mode 100644 3.x/assets/dump.html.a9afcd2b.js create mode 100644 3.x/assets/dump.html.aa1d0523.js create mode 100644 3.x/assets/echo.html.239528da.js create mode 100644 3.x/assets/echo.html.8619670c.js create mode 100644 3.x/assets/echo.html.c9564b4c.js create mode 100644 3.x/assets/echo.html.f45a06cc.js create mode 100644 3.x/assets/faq.html.18da055d.js create mode 100644 3.x/assets/faq.html.39698152.js create mode 100644 3.x/assets/faq.html.abd28b1f.js create mode 100644 3.x/assets/faq.html.b9626740.js create mode 100644 3.x/assets/getstatic.html.194e97dd.js create mode 100644 3.x/assets/getstatic.html.2229049b.js create mode 100644 3.x/assets/getstatic.html.d81e76f2.js create mode 100644 3.x/assets/getstatic.html.e01bd744.js create mode 100644 3.x/assets/grep.html.1c2ee274.js create mode 100644 3.x/assets/grep.html.4aa91236.js create mode 100644 3.x/assets/grep.html.8e0aee31.js create mode 100644 3.x/assets/grep.html.c753d37b.js create mode 100644 3.x/assets/groovy.html.21de60b6.js create mode 100644 3.x/assets/groovy.html.292661c1.js create mode 100644 3.x/assets/groovy.html.2ef01485.js create mode 100644 3.x/assets/groovy.html.92f5e844.js create mode 100644 3.x/assets/heapdump.html.19f5486f.js create mode 100644 3.x/assets/heapdump.html.2d73c547.js create mode 100644 3.x/assets/heapdump.html.3fe356b2.js create mode 100644 3.x/assets/heapdump.html.51c1271f.js create mode 100644 3.x/assets/help.html.3d260e86.js create mode 100644 3.x/assets/help.html.5a1d36ec.js create mode 100644 3.x/assets/help.html.67ffadca.js create mode 100644 3.x/assets/help.html.7ba26453.js create mode 100644 3.x/assets/history.html.006cedb1.js create mode 100644 3.x/assets/history.html.3f90631d.js create mode 100644 3.x/assets/history.html.5c8da1d4.js create mode 100644 3.x/assets/history.html.72971f6a.js create mode 100644 3.x/assets/http-api.html.1bd8ba57.js create mode 100644 3.x/assets/http-api.html.5c8cd6bc.js create mode 100644 3.x/assets/http-api.html.a19a0b64.js create mode 100644 3.x/assets/http-api.html.f5e81364.js create mode 100644 3.x/assets/idea-plugin.html.0961bb69.js create mode 100644 3.x/assets/idea-plugin.html.32b2309e.js create mode 100644 3.x/assets/idea-plugin.html.5cd3ae1a.js create mode 100644 3.x/assets/idea-plugin.html.d7acd139.js create mode 100644 3.x/assets/index.html.27b99973.js create mode 100644 3.x/assets/index.html.349dc4ce.js create mode 100644 3.x/assets/index.html.3951988f.js create mode 100644 3.x/assets/index.html.636fad3d.js create mode 100644 3.x/assets/index.html.6c4675e2.js create mode 100644 3.x/assets/index.html.72b89313.js create mode 100644 3.x/assets/index.html.88e6b040.js create mode 100644 3.x/assets/index.html.da04bb04.js create mode 100644 3.x/assets/install-detail.html.0208e8d8.js create mode 100644 3.x/assets/install-detail.html.0c410a89.js create mode 100644 3.x/assets/install-detail.html.50cfaa59.js create mode 100644 3.x/assets/install-detail.html.cbd1e77a.js create mode 100644 3.x/assets/jad.html.01fefda3.js create mode 100644 3.x/assets/jad.html.67f11a53.js create mode 100644 3.x/assets/jad.html.d639a8bb.js create mode 100644 3.x/assets/jad.html.e520a68e.js create mode 100644 3.x/assets/jfr.html.57a326e6.js create mode 100644 3.x/assets/jfr.html.63d78e12.js create mode 100644 3.x/assets/jfr.html.bb7f02ab.js create mode 100644 3.x/assets/jfr.html.e858c4d3.js create mode 100644 3.x/assets/jvm.html.4efee18b.js create mode 100644 3.x/assets/jvm.html.5fd9778c.js create mode 100644 3.x/assets/jvm.html.a00151a5.js create mode 100644 3.x/assets/jvm.html.b5bfa365.js create mode 100644 3.x/assets/keymap.html.35ecd977.js create mode 100644 3.x/assets/keymap.html.6e72672f.js create mode 100644 3.x/assets/keymap.html.e3647cfd.js create mode 100644 3.x/assets/keymap.html.e94a5d53.js create mode 100644 3.x/assets/logger.html.3230d5ce.js create mode 100644 3.x/assets/logger.html.7a983455.js create mode 100644 3.x/assets/logger.html.7de7427f.js create mode 100644 3.x/assets/logger.html.cdea0f90.js create mode 100644 3.x/assets/manual-install.html.09d3b86a.js create mode 100644 3.x/assets/manual-install.html.42509750.js create mode 100644 3.x/assets/manual-install.html.aba050db.js create mode 100644 3.x/assets/manual-install.html.d729afcd.js create mode 100644 3.x/assets/mbean.html.26631030.js create mode 100644 3.x/assets/mbean.html.405141c1.js create mode 100644 3.x/assets/mbean.html.555cb2c7.js create mode 100644 3.x/assets/mbean.html.7437cca3.js create mode 100644 3.x/assets/mc.html.19c82f53.js create mode 100644 3.x/assets/mc.html.70645c5e.js create mode 100644 3.x/assets/mc.html.89ccac82.js create mode 100644 3.x/assets/mc.html.ac459852.js create mode 100644 3.x/assets/memory.html.078c4658.js create mode 100644 3.x/assets/memory.html.7bfef615.js create mode 100644 3.x/assets/memory.html.9926de30.js create mode 100644 3.x/assets/memory.html.e3c4914e.js create mode 100644 3.x/assets/monitor.html.0b324722.js create mode 100644 3.x/assets/monitor.html.30828325.js create mode 100644 3.x/assets/monitor.html.5f496a09.js create mode 100644 3.x/assets/monitor.html.d6717549.js create mode 100644 3.x/assets/ognl.html.59679ee9.js create mode 100644 3.x/assets/ognl.html.a04123af.js create mode 100644 3.x/assets/ognl.html.a2f5b795.js create mode 100644 3.x/assets/ognl.html.c5956d1f.js create mode 100644 3.x/assets/options.html.39ae73d3.js create mode 100644 3.x/assets/options.html.6ca60b92.js create mode 100644 3.x/assets/options.html.76f0ad11.js create mode 100644 3.x/assets/options.html.b8b42168.js create mode 100644 3.x/assets/perfcounter.html.04486209.js create mode 100644 3.x/assets/perfcounter.html.3794d77f.js create mode 100644 3.x/assets/perfcounter.html.a2008d46.js create mode 100644 3.x/assets/perfcounter.html.c8d6f07e.js create mode 100644 3.x/assets/profiler.html.2fe5463f.js create mode 100644 3.x/assets/profiler.html.95a82517.js create mode 100644 3.x/assets/profiler.html.e7f88019.js create mode 100644 3.x/assets/profiler.html.ecb6c417.js create mode 100644 3.x/assets/pwd.html.4f686509.js create mode 100644 3.x/assets/pwd.html.5c70637d.js create mode 100644 3.x/assets/pwd.html.b8813280.js create mode 100644 3.x/assets/pwd.html.d34432c3.js create mode 100644 3.x/assets/qqgroup3_qr.f82e3fd0.js create mode 100644 3.x/assets/quick-start.html.2afac43e.js create mode 100644 3.x/assets/quick-start.html.463266ab.js create mode 100644 3.x/assets/quick-start.html.70301235.js create mode 100644 3.x/assets/quick-start.html.cbab3d30.js create mode 100644 3.x/assets/quit.html.052c6b91.js create mode 100644 3.x/assets/quit.html.125451fe.js create mode 100644 3.x/assets/quit.html.64b41fb3.js create mode 100644 3.x/assets/quit.html.adcbca9c.js create mode 100644 3.x/assets/redefine.html.2e16ab41.js create mode 100644 3.x/assets/redefine.html.4f4236c3.js create mode 100644 3.x/assets/redefine.html.a2b54a14.js create mode 100644 3.x/assets/redefine.html.ee728e3e.js create mode 100644 3.x/assets/release-notes.html.5e40eac1.js create mode 100644 3.x/assets/release-notes.html.79040020.js create mode 100644 3.x/assets/release-notes.html.8810e03d.js create mode 100644 3.x/assets/release-notes.html.bd30f66e.js create mode 100644 3.x/assets/reset.html.613ce22c.js create mode 100644 3.x/assets/reset.html.6542e356.js create mode 100644 3.x/assets/reset.html.b7ada98f.js create mode 100644 3.x/assets/reset.html.d6cfba7b.js create mode 100644 3.x/assets/retransform.html.509ca8a2.js create mode 100644 3.x/assets/retransform.html.590b7b85.js create mode 100644 3.x/assets/retransform.html.8eba17c2.js create mode 100644 3.x/assets/retransform.html.c9177e92.js create mode 100644 3.x/assets/save-log.html.1848baa1.js create mode 100644 3.x/assets/save-log.html.59e37d28.js create mode 100644 3.x/assets/save-log.html.6fa77f22.js create mode 100644 3.x/assets/save-log.html.aede14f6.js create mode 100644 3.x/assets/sc.html.09e2c24b.js create mode 100644 3.x/assets/sc.html.4231ef3b.js create mode 100644 3.x/assets/sc.html.74c76d3a.js create mode 100644 3.x/assets/sc.html.7e6d0647.js create mode 100644 3.x/assets/session.html.5c4eabed.js create mode 100644 3.x/assets/session.html.61530ca8.js create mode 100644 3.x/assets/session.html.c643c273.js create mode 100644 3.x/assets/session.html.ebca9c60.js create mode 100644 3.x/assets/sm.html.0d66961e.js create mode 100644 3.x/assets/sm.html.961479d6.js create mode 100644 3.x/assets/sm.html.981fdfec.js create mode 100644 3.x/assets/sm.html.e7e61e0b.js create mode 100644 3.x/assets/spring-boot-starter.html.0ccae142.js create mode 100644 3.x/assets/spring-boot-starter.html.304b29da.js create mode 100644 3.x/assets/spring-boot-starter.html.60544b4f.js create mode 100644 3.x/assets/spring-boot-starter.html.f437e222.js create mode 100644 3.x/assets/stack.html.6561e199.js create mode 100644 3.x/assets/stack.html.bbfa304b.js create mode 100644 3.x/assets/stack.html.db4b5700.js create mode 100644 3.x/assets/stack.html.dfb85a5e.js create mode 100644 3.x/assets/start-arthas.html.11758ed5.js create mode 100644 3.x/assets/start-arthas.html.4886b6be.js create mode 100644 3.x/assets/start-arthas.html.aeeb9c4f.js create mode 100644 3.x/assets/start-arthas.html.ddd2298e.js create mode 100644 3.x/assets/stop.html.17210afa.js create mode 100644 3.x/assets/stop.html.29be75c6.js create mode 100644 3.x/assets/stop.html.493e47db.js create mode 100644 3.x/assets/stop.html.8c6a9664.js create mode 100644 3.x/assets/style.f2bd2fc0.css create mode 100644 3.x/assets/sysenv.html.2f968356.js create mode 100644 3.x/assets/sysenv.html.ac969eec.js create mode 100644 3.x/assets/sysenv.html.ce9a0bce.js create mode 100644 3.x/assets/sysenv.html.d4a09599.js create mode 100644 3.x/assets/sysprop.html.024045c5.js create mode 100644 3.x/assets/sysprop.html.36bf4069.js create mode 100644 3.x/assets/sysprop.html.76aee09d.js create mode 100644 3.x/assets/sysprop.html.aeb4ee87.js create mode 100644 3.x/assets/tee.html.2c90d1cb.js create mode 100644 3.x/assets/tee.html.8aa74468.js create mode 100644 3.x/assets/tee.html.9daca569.js create mode 100644 3.x/assets/tee.html.f88833bc.js create mode 100644 3.x/assets/thread.html.036b2896.js create mode 100644 3.x/assets/thread.html.3171fcb1.js create mode 100644 3.x/assets/thread.html.c837e66a.js create mode 100644 3.x/assets/thread.html.e4dd07a8.js create mode 100644 3.x/assets/trace.html.0dc105ca.js create mode 100644 3.x/assets/trace.html.53ffd359.js create mode 100644 3.x/assets/trace.html.861de4ab.js create mode 100644 3.x/assets/trace.html.987171f7.js create mode 100644 3.x/assets/tt.html.1800bc01.js create mode 100644 3.x/assets/tt.html.51ba2266.js create mode 100644 3.x/assets/tt.html.980704e8.js create mode 100644 3.x/assets/tt.html.fd7438d0.js create mode 100644 3.x/assets/tunnel-server-agents.03d5eafa.js create mode 100644 3.x/assets/tunnel.html.203ccf1d.js create mode 100644 3.x/assets/tunnel.html.5346db5d.js create mode 100644 3.x/assets/tunnel.html.9c3dcb91.js create mode 100644 3.x/assets/tunnel.html.d20e61ab.js create mode 100644 3.x/assets/version.html.18257b2f.js create mode 100644 3.x/assets/version.html.2ce43555.js create mode 100644 3.x/assets/version.html.48ec1551.js create mode 100644 3.x/assets/version.html.85cfef6a.js create mode 100644 3.x/assets/vmoption.html.58b16737.js create mode 100644 3.x/assets/vmoption.html.a450713f.js create mode 100644 3.x/assets/vmoption.html.c32a5087.js create mode 100644 3.x/assets/vmoption.html.c8c7e7fc.js create mode 100644 3.x/assets/vmtool.html.3a06f08b.js create mode 100644 3.x/assets/vmtool.html.65118aec.js create mode 100644 3.x/assets/vmtool.html.ab0c1d24.js create mode 100644 3.x/assets/vmtool.html.dc9e0833.js create mode 100644 3.x/assets/watch.html.30c91d3e.js create mode 100644 3.x/assets/watch.html.3663bb24.js create mode 100644 3.x/assets/watch.html.8b8293d0.js create mode 100644 3.x/assets/watch.html.e73d5269.js create mode 100644 3.x/assets/web-console-local.156ba0ce.js create mode 100644 3.x/assets/web-console.html.8f3242b3.js create mode 100644 3.x/assets/web-console.html.a124c728.js create mode 100644 3.x/assets/web-console.html.ad1a9f26.js create mode 100644 3.x/assets/web-console.html.cea17e0f.js create mode 100644 3.x/doc/advanced-use.html create mode 100644 3.x/doc/advice-class.html create mode 100644 3.x/doc/agent.html create mode 100644 3.x/doc/arthas-properties.html create mode 100644 3.x/doc/arthas-tutorials.html create mode 100644 3.x/doc/arthas3.html create mode 100644 3.x/doc/async.html create mode 100644 3.x/doc/auth.html create mode 100644 3.x/doc/base64.html create mode 100644 3.x/doc/batch-support.html create mode 100644 3.x/doc/cat.html create mode 100644 3.x/doc/classloader.html create mode 100644 3.x/doc/cls.html create mode 100644 3.x/doc/commands.html create mode 100644 3.x/doc/contact-us.html create mode 100644 3.x/doc/dashboard.html create mode 100644 3.x/doc/docker.html create mode 100644 3.x/doc/download.html create mode 100644 3.x/doc/dump.html create mode 100644 3.x/doc/echo.html create mode 100644 3.x/doc/en/advanced-use.html create mode 100644 3.x/doc/en/advice-class.html create mode 100644 3.x/doc/en/agent.html create mode 100644 3.x/doc/en/arthas-properties.html create mode 100644 3.x/doc/en/async.html create mode 100644 3.x/doc/en/auth.html create mode 100644 3.x/doc/en/base64.html create mode 100644 3.x/doc/en/batch-support.html create mode 100644 3.x/doc/en/cat.html create mode 100644 3.x/doc/en/classloader.html create mode 100644 3.x/doc/en/cls.html create mode 100644 3.x/doc/en/commands.html create mode 100644 3.x/doc/en/contact-us.html create mode 100644 3.x/doc/en/dashboard.html create mode 100644 3.x/doc/en/docker.html create mode 100644 3.x/doc/en/download.html create mode 100644 3.x/doc/en/dump.html create mode 100644 3.x/doc/en/echo.html create mode 100644 3.x/doc/en/faq.html create mode 100644 3.x/doc/en/getstatic.html create mode 100644 3.x/doc/en/grep.html create mode 100644 3.x/doc/en/groovy.html create mode 100644 3.x/doc/en/heapdump.html create mode 100644 3.x/doc/en/help.html create mode 100644 3.x/doc/en/history.html create mode 100644 3.x/doc/en/http-api.html create mode 100644 3.x/doc/en/idea-plugin.html create mode 100644 3.x/doc/en/index.html create mode 100644 3.x/doc/en/install-detail.html create mode 100644 3.x/doc/en/jad.html create mode 100644 3.x/doc/en/jfr.html create mode 100644 3.x/doc/en/jvm.html create mode 100644 3.x/doc/en/keymap.html create mode 100644 3.x/doc/en/logger.html create mode 100644 3.x/doc/en/manual-install.html create mode 100644 3.x/doc/en/mbean.html create mode 100644 3.x/doc/en/mc.html create mode 100644 3.x/doc/en/memory.html create mode 100644 3.x/doc/en/monitor.html create mode 100644 3.x/doc/en/ognl.html create mode 100644 3.x/doc/en/options.html create mode 100644 3.x/doc/en/perfcounter.html create mode 100644 3.x/doc/en/profiler.html create mode 100644 3.x/doc/en/pwd.html create mode 100644 3.x/doc/en/quick-start.html create mode 100644 3.x/doc/en/quit.html create mode 100644 3.x/doc/en/redefine.html create mode 100644 3.x/doc/en/release-notes.html create mode 100644 3.x/doc/en/reset.html create mode 100644 3.x/doc/en/retransform.html create mode 100644 3.x/doc/en/save-log.html create mode 100644 3.x/doc/en/sc.html create mode 100644 3.x/doc/en/session.html create mode 100644 3.x/doc/en/sm.html create mode 100644 3.x/doc/en/spring-boot-starter.html create mode 100644 3.x/doc/en/stack.html create mode 100644 3.x/doc/en/start-arthas.html create mode 100644 3.x/doc/en/stop.html create mode 100644 3.x/doc/en/sysenv.html create mode 100644 3.x/doc/en/sysprop.html create mode 100644 3.x/doc/en/tee.html create mode 100644 3.x/doc/en/thread.html create mode 100644 3.x/doc/en/trace.html create mode 100644 3.x/doc/en/tt.html create mode 100644 3.x/doc/en/tunnel.html create mode 100644 3.x/doc/en/version.html create mode 100644 3.x/doc/en/vmoption.html create mode 100644 3.x/doc/en/vmtool.html create mode 100644 3.x/doc/en/watch.html create mode 100644 3.x/doc/en/web-console.html create mode 100644 3.x/doc/faq.html create mode 100644 3.x/doc/getstatic.html create mode 100644 3.x/doc/grep.html create mode 100644 3.x/doc/groovy.html create mode 100644 3.x/doc/heapdump.html create mode 100644 3.x/doc/help.html create mode 100644 3.x/doc/history.html create mode 100644 3.x/doc/http-api.html create mode 100644 3.x/doc/idea-plugin.html create mode 100644 3.x/doc/index.html create mode 100644 3.x/doc/install-detail.html create mode 100644 3.x/doc/jad.html create mode 100644 3.x/doc/jfr.html create mode 100644 3.x/doc/jvm.html create mode 100644 3.x/doc/keymap.html create mode 100644 3.x/doc/logger.html create mode 100644 3.x/doc/manual-install.html create mode 100644 3.x/doc/mbean.html create mode 100644 3.x/doc/mc.html create mode 100644 3.x/doc/memory.html create mode 100644 3.x/doc/monitor.html create mode 100644 3.x/doc/ognl.html create mode 100644 3.x/doc/options.html create mode 100644 3.x/doc/perfcounter.html create mode 100644 3.x/doc/profiler.html create mode 100644 3.x/doc/pwd.html create mode 100644 3.x/doc/quick-start.html create mode 100644 3.x/doc/quit.html create mode 100644 3.x/doc/redefine.html create mode 100644 3.x/doc/release-notes.html create mode 100644 3.x/doc/reset.html create mode 100644 3.x/doc/retransform.html create mode 100644 3.x/doc/save-log.html create mode 100644 3.x/doc/sc.html create mode 100644 3.x/doc/session.html create mode 100644 3.x/doc/sm.html create mode 100644 3.x/doc/spring-boot-starter.html create mode 100644 3.x/doc/stack.html create mode 100644 3.x/doc/start-arthas.html create mode 100644 3.x/doc/stop.html create mode 100644 3.x/doc/sysenv.html create mode 100644 3.x/doc/sysprop.html create mode 100644 3.x/doc/tee.html create mode 100644 3.x/doc/thread.html create mode 100644 3.x/doc/trace.html create mode 100644 3.x/doc/tt.html create mode 100644 3.x/doc/tunnel.html create mode 100644 3.x/doc/version.html create mode 100644 3.x/doc/vmoption.html create mode 100644 3.x/doc/vmtool.html create mode 100644 3.x/doc/watch.html create mode 100644 3.x/doc/web-console.html create mode 100644 3.x/en-us/index.html create mode 100644 3.x/en/doc/advanced-use.html create mode 100644 3.x/en/doc/advice-class.html create mode 100644 3.x/en/doc/agent.html create mode 100644 3.x/en/doc/arthas-properties.html create mode 100644 3.x/en/doc/async.html create mode 100644 3.x/en/doc/auth.html create mode 100644 3.x/en/doc/base64.html create mode 100644 3.x/en/doc/batch-support.html create mode 100644 3.x/en/doc/cat.html create mode 100644 3.x/en/doc/classloader.html create mode 100644 3.x/en/doc/cls.html create mode 100644 3.x/en/doc/commands.html create mode 100644 3.x/en/doc/contact-us.html create mode 100644 3.x/en/doc/dashboard.html create mode 100644 3.x/en/doc/docker.html create mode 100644 3.x/en/doc/download.html create mode 100644 3.x/en/doc/dump.html create mode 100644 3.x/en/doc/echo.html create mode 100644 3.x/en/doc/faq.html create mode 100644 3.x/en/doc/getstatic.html create mode 100644 3.x/en/doc/grep.html create mode 100644 3.x/en/doc/groovy.html create mode 100644 3.x/en/doc/heapdump.html create mode 100644 3.x/en/doc/help.html create mode 100644 3.x/en/doc/history.html create mode 100644 3.x/en/doc/http-api.html create mode 100644 3.x/en/doc/idea-plugin.html create mode 100644 3.x/en/doc/index.html create mode 100644 3.x/en/doc/install-detail.html create mode 100644 3.x/en/doc/jad.html create mode 100644 3.x/en/doc/jfr.html create mode 100644 3.x/en/doc/jvm.html create mode 100644 3.x/en/doc/keymap.html create mode 100644 3.x/en/doc/logger.html create mode 100644 3.x/en/doc/manual-install.html create mode 100644 3.x/en/doc/mbean.html create mode 100644 3.x/en/doc/mc.html create mode 100644 3.x/en/doc/memory.html create mode 100644 3.x/en/doc/monitor.html create mode 100644 3.x/en/doc/ognl.html create mode 100644 3.x/en/doc/options.html create mode 100644 3.x/en/doc/perfcounter.html create mode 100644 3.x/en/doc/profiler.html create mode 100644 3.x/en/doc/pwd.html create mode 100644 3.x/en/doc/quick-start.html create mode 100644 3.x/en/doc/quit.html create mode 100644 3.x/en/doc/redefine.html create mode 100644 3.x/en/doc/release-notes.html create mode 100644 3.x/en/doc/reset.html create mode 100644 3.x/en/doc/retransform.html create mode 100644 3.x/en/doc/save-log.html create mode 100644 3.x/en/doc/sc.html create mode 100644 3.x/en/doc/session.html create mode 100644 3.x/en/doc/sm.html create mode 100644 3.x/en/doc/spring-boot-starter.html create mode 100644 3.x/en/doc/stack.html create mode 100644 3.x/en/doc/start-arthas.html create mode 100644 3.x/en/doc/stop.html create mode 100644 3.x/en/doc/sysenv.html create mode 100644 3.x/en/doc/sysprop.html create mode 100644 3.x/en/doc/tee.html create mode 100644 3.x/en/doc/thread.html create mode 100644 3.x/en/doc/trace.html create mode 100644 3.x/en/doc/tt.html create mode 100644 3.x/en/doc/tunnel.html create mode 100644 3.x/en/doc/version.html create mode 100644 3.x/en/doc/vmoption.html create mode 100644 3.x/en/doc/vmtool.html create mode 100644 3.x/en/doc/watch.html create mode 100644 3.x/en/doc/web-console.html create mode 100644 3.x/en/index.html create mode 100644 3.x/images/alibabacloud_hotreload.png create mode 100644 3.x/images/arthas-output-recording.png create mode 100644 3.x/images/arthas-output-svg.jpg create mode 100644 3.x/images/arthas-output.jpg create mode 100644 3.x/images/arthas-tunnel-server.png create mode 100644 3.x/images/arthas-web-ui.png create mode 100644 3.x/images/arthas.png create mode 100644 3.x/images/arthas_dark.png create mode 100644 3.x/images/arthas_light.png create mode 100644 3.x/images/arthas_mate_image.png create mode 100644 3.x/images/dashboard.png create mode 100644 3.x/images/dingding2_qr.jpg create mode 100644 3.x/images/dingding3_qr.jpg create mode 100644 3.x/images/dingding_group_search.png create mode 100644 3.x/images/dingding_qr.jpg create mode 100644 3.x/images/favicon.ico create mode 100644 3.x/images/logo.png create mode 100644 3.x/images/qqgroup2_qr.jpg create mode 100644 3.x/images/qqgroup3_qr.jpg create mode 100644 3.x/images/qqgroup_qr.jpg create mode 100644 3.x/images/qr-jd-2019.png create mode 100644 3.x/images/qrcode_gongzhonghao.jpg create mode 100644 3.x/images/trace.png create mode 100644 3.x/images/tunnel-server-agents.png create mode 100644 3.x/images/tunnel-server-apps.png create mode 100644 3.x/images/users/users_alibaba.png create mode 100644 3.x/images/users/users_didi.png create mode 100644 3.x/images/users/users_icbc.png create mode 100644 3.x/images/users/users_kaola.png create mode 100644 3.x/images/users/users_qunar.png create mode 100644 3.x/images/users/users_telecom.png create mode 100644 3.x/images/users/users_weidian.png create mode 100644 3.x/images/users/users_yinlian.png create mode 100644 3.x/images/web-console-local.png create mode 100644 3.x/index.html create mode 100644 3.x/zh-cn/index.html create mode 100644 arthas-boot3.jar create mode 100755 as3.sh create mode 100644 install3.sh diff --git a/3.x/404.html b/3.x/404.html new file mode 100644 index 00000000000..c2bd7ef42c0 --- /dev/null +++ b/3.x/404.html @@ -0,0 +1,41 @@ + + + + + + + + + arthas + + + + +

404

这是一个 404 页面
回到首页
+ + + diff --git a/3.x/assets/404.html.2154acec.js b/3.x/assets/404.html.2154acec.js new file mode 100644 index 00000000000..7c41f9f0f29 --- /dev/null +++ b/3.x/assets/404.html.2154acec.js @@ -0,0 +1 @@ +import{_ as e,o as c,c as t}from"./app.4d248835.js";const _={};function o(r,n){return c(),t("div")}const a=e(_,[["render",o],["__file","404.html.vue"]]);export{a as default}; diff --git a/3.x/assets/404.html.d0402927.js b/3.x/assets/404.html.d0402927.js new file mode 100644 index 00000000000..af2aa3138d7 --- /dev/null +++ b/3.x/assets/404.html.d0402927.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-3706649a","path":"/404.html","title":"","lang":"zh-CN","frontmatter":{"layout":"NotFound"},"excerpt":"","headers":[],"git":{},"filePathRelative":null,"version":"3.7.3"}');export{t as data}; diff --git a/3.x/assets/advanced-use.html.2f295a56.js b/3.x/assets/advanced-use.html.2f295a56.js new file mode 100644 index 00000000000..748a1b43013 --- /dev/null +++ b/3.x/assets/advanced-use.html.2f295a56.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-463d120e","path":"/en/doc/advanced-use.html","title":"Other features","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Arthas Async Jobs","slug":"arthas-async-jobs","link":"#arthas-async-jobs","children":[]},{"level":2,"title":"Log the output","slug":"log-the-output","link":"#log-the-output","children":[]},{"level":2,"title":"Docker","slug":"docker","link":"#docker","children":[]},{"level":2,"title":"Web Console","slug":"web-console","link":"#web-console","children":[]},{"level":2,"title":"Arthas Tunnel","slug":"arthas-tunnel","link":"#arthas-tunnel","children":[]},{"level":2,"title":"How to use ognl","slug":"how-to-use-ognl","link":"#how-to-use-ognl","children":[]},{"level":2,"title":"IDEA Plugin","slug":"idea-plugin","link":"#idea-plugin","children":[]},{"level":2,"title":"Arthas Properties","slug":"arthas-properties","link":"#arthas-properties","children":[]},{"level":2,"title":"Start as a Java Agent","slug":"start-as-a-java-agent","link":"#start-as-a-java-agent","children":[]},{"level":2,"title":"Arthas Spring Boot Starter","slug":"arthas-spring-boot-starter","link":"#arthas-spring-boot-starter","children":[]},{"level":2,"title":"HTTP API","slug":"http-api","link":"#http-api","children":[]},{"level":2,"title":"Batch Processing","slug":"batch-processing","link":"#batch-processing","children":[]},{"level":2,"title":"as3.sh and arthas-boot3 tips","slug":"as3-sh-and-arthas-boot3-tips","link":"#as3-sh-and-arthas-boot3-tips","children":[]},{"level":2,"title":"User data report","slug":"user-data-report","link":"#user-data-report","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":2},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/advanced-use.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/advanced-use.html.94d49710.js b/3.x/assets/advanced-use.html.94d49710.js new file mode 100644 index 00000000000..493a0d8c4a6 --- /dev/null +++ b/3.x/assets/advanced-use.html.94d49710.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-0d09f68d","path":"/doc/advanced-use.html","title":"\u5176\u4ED6\u7279\u6027","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Arthas \u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","slug":"arthas-\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","link":"#arthas-\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","children":[]},{"level":2,"title":"\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7","slug":"\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7","link":"#\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7","children":[]},{"level":2,"title":"Docker","slug":"docker","link":"#docker","children":[]},{"level":2,"title":"Web Console","slug":"web-console","link":"#web-console","children":[]},{"level":2,"title":"Arthas Tunnel","slug":"arthas-tunnel","link":"#arthas-tunnel","children":[]},{"level":2,"title":"ognl \u8868\u8FBE\u5F0F\u7528\u6CD5","slug":"ognl-\u8868\u8FBE\u5F0F\u7528\u6CD5","link":"#ognl-\u8868\u8FBE\u5F0F\u7528\u6CD5","children":[]},{"level":2,"title":"IDEA Plugin","slug":"idea-plugin","link":"#idea-plugin","children":[]},{"level":2,"title":"Arthas Properties","slug":"arthas-properties","link":"#arthas-properties","children":[]},{"level":2,"title":"\u4EE5 java agent \u65B9\u5F0F\u542F\u52A8","slug":"\u4EE5-java-agent-\u65B9\u5F0F\u542F\u52A8","link":"#\u4EE5-java-agent-\u65B9\u5F0F\u542F\u52A8","children":[]},{"level":2,"title":"Arthas Spring Boot Starter","slug":"arthas-spring-boot-starter","link":"#arthas-spring-boot-starter","children":[]},{"level":2,"title":"HTTP API","slug":"http-api","link":"#http-api","children":[]},{"level":2,"title":"\u6279\u5904\u7406\u529F\u80FD","slug":"\u6279\u5904\u7406\u529F\u80FD","link":"#\u6279\u5904\u7406\u529F\u80FD","children":[]},{"level":2,"title":"as3.sh \u548C arthas-boot3 \u6280\u5DE7","slug":"as3-sh-\u548C-arthas-boot3-\u6280\u5DE7","link":"#as3-sh-\u548C-arthas-boot3-\u6280\u5DE7","children":[]},{"level":2,"title":"\u7528\u6237\u6570\u636E\u56DE\u62A5","slug":"\u7528\u6237\u6570\u636E\u56DE\u62A5","link":"#\u7528\u6237\u6570\u636E\u56DE\u62A5","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":2},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/advanced-use.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/advanced-use.html.9554def2.js b/3.x/assets/advanced-use.html.9554def2.js new file mode 100644 index 00000000000..80782e01100 --- /dev/null +++ b/3.x/assets/advanced-use.html.9554def2.js @@ -0,0 +1,30 @@ +import{_ as r,o as i,c,a,b as n,w as t,e as s,d,r as o}from"./app.4d248835.js";const p={},h=a("h1",{id:"\u5176\u4ED6\u7279\u6027",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u5176\u4ED6\u7279\u6027","aria-hidden":"true"},"#"),s(" \u5176\u4ED6\u7279\u6027")],-1),u=a("h2",{id:"arthas-\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","aria-hidden":"true"},"#"),s(" Arthas \u540E\u53F0\u5F02\u6B65\u4EFB\u52A1")],-1),_=a("p",null,"\u5F53\u9700\u8981\u6392\u67E5\u4E00\u4E2A\u95EE\u9898\uFF0C\u4F46\u662F\u8FD9\u4E2A\u95EE\u9898\u7684\u51FA\u73B0\u65F6\u95F4\u4E0D\u80FD\u786E\u5B9A\uFF0C\u90A3\u6211\u4EEC\u5C31\u53EF\u4EE5\u628A\u68C0\u6D4B\u547D\u4EE4\u6302\u5728\u540E\u53F0\u8FD0\u884C\uFF0C\u5E76\u5C06\u4FDD\u5B58\u5230\u8F93\u51FA\u65E5\u5FD7\u3002",-1),b=s("Arthas \u540E\u53F0\u5F02\u6B65\u4EFB\u52A1"),v=a("h2",{id:"\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7","aria-hidden":"true"},"#"),s(" \u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7")],-1),m=a("p",null,"\u6240\u6709\u6267\u884C\u8BB0\u5F55\u7684\u7ED3\u679C\u5B8C\u6574\u4FDD\u5B58\u5728\u65E5\u5FD7\u6587\u4EF6\u4E2D\uFF0C\u4FBF\u4E8E\u540E\u7EED\u8FDB\u884C\u5206\u6790\u3002",-1),k=s("\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7"),g=a("h2",{id:"docker",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#docker","aria-hidden":"true"},"#"),s(" Docker")],-1),f=a("p",null,"Arthas \u5728 docker \u5BB9\u5668\u4E2D\u4F7F\u7528\u914D\u7F6E\u53C2\u8003\u3002",-1),x=s("Docker"),A=a("h2",{id:"web-console",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#web-console","aria-hidden":"true"},"#"),s(" Web Console")],-1),j=a("p",null,"\u901A\u8FC7 websocket \u8FDE\u63A5 Arthas\u3002",-1),I=s("Web Console"),P=a("h2",{id:"arthas-tunnel",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-tunnel","aria-hidden":"true"},"#"),s(" Arthas Tunnel")],-1),C=a("p",null,"\u901A\u8FC7 Arthas Tunnel Server/Client \u6765\u8FDC\u7A0B\u7BA1\u7406/\u8FDE\u63A5\u591A\u4E2A\u670D\u52A1\u5668\u4E0B\u7684Java\u670D\u52A1\u3002",-1),T=s("Arthas Tunnel"),w=a("h2",{id:"ognl-\u8868\u8FBE\u5F0F\u7528\u6CD5",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#ognl-\u8868\u8FBE\u5F0F\u7528\u6CD5","aria-hidden":"true"},"#"),s(" ognl \u8868\u8FBE\u5F0F\u7528\u6CD5")],-1),E={href:"https://github.com/alibaba/arthas/issues/11",target:"_blank",rel:"noopener noreferrer"},S=s("ognl \u8868\u8FBE\u5F0F\u7684\u7528\u6CD5\u8BF4\u660E"),D={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},y=s("\u4E00\u4E9B ognl \u7279\u6B8A\u7528\u6CD5"),B=a("h2",{id:"idea-plugin",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#idea-plugin","aria-hidden":"true"},"#"),s(" IDEA Plugin")],-1),N=a("p",null,"IntelliJ IDEA \u7F16\u8BD1\u5668\u4E2D\u66F4\u52A0\u5FEB\u6377\u6784\u5EFA arhtas \u547D\u4EE4\u3002",-1),V=s("IDEA Plugin"),H=a("h2",{id:"arthas-properties",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-properties","aria-hidden":"true"},"#"),s(" Arthas Properties")],-1),J=a("p",null,"Arthas \u652F\u6301\u914D\u7F6E\u9879\u53C2\u8003\u3002",-1),L=s("Arthas Properties"),O=a("h2",{id:"\u4EE5-java-agent-\u65B9\u5F0F\u542F\u52A8",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u4EE5-java-agent-\u65B9\u5F0F\u542F\u52A8","aria-hidden":"true"},"#"),s(" \u4EE5 java agent \u65B9\u5F0F\u542F\u52A8")],-1),U=s("\u4EE5 java agent \u65B9\u5F0F\u542F\u52A8"),R=a("h2",{id:"arthas-spring-boot-starter",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-spring-boot-starter","aria-hidden":"true"},"#"),s(" Arthas Spring Boot Starter")],-1),W=a("p",null,"\u968F\u5E94\u7528\u4E00\u8D77\u542F\u52A8\u3002",-1),$=s("Arthas Spring Boot Starter"),z=a("h2",{id:"http-api",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#http-api","aria-hidden":"true"},"#"),s(" HTTP API")],-1),F=a("p",null,"Http API \u63D0\u4F9B\u7ED3\u6784\u5316\u7684\u6570\u636E\uFF0C\u652F\u6301\u66F4\u590D\u6742\u7684\u4EA4\u4E92\u529F\u80FD\uFF0C\u65B9\u4FBF\u81EA\u5B9A\u4E49\u754C\u9762\u96C6\u6210 arthas\u3002",-1),M=s("HTTP API"),q=a("h2",{id:"\u6279\u5904\u7406\u529F\u80FD",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u6279\u5904\u7406\u529F\u80FD","aria-hidden":"true"},"#"),s(" \u6279\u5904\u7406\u529F\u80FD")],-1),G=a("p",null,[s("\u65B9\u4FBF\u81EA\u5B9A\u4E49\u811A\u672C\u4E00\u6B21\u6027\u6279\u91CF\u8FD0\u884C\u591A\u4E2A\u547D\u4EE4\uFF0C\u53EF\u7ED3\u5408 "),a("code",null,"--select"),s(" \u53C2\u6570\u53EF\u4EE5\u6307\u5B9A\u8FDB\u7A0B\u540D\u5B57\u4E00\u8D77\u4F7F\u7528\u3002")],-1),K=s("\u6279\u5904\u7406\u529F\u80FD"),Q=d(`

as3.sh \u548C arthas-boot3 \u6280\u5DE7

\u6B63\u5E38\u60C5\u51B5\u4E0B\uFF0C\u6BCF\u6B21\u6267\u884Cas3.sh/arthas-boot3.jar\u9700\u8981\u9009\u62E9\uFF0C\u6216\u8005\u6307\u5B9A PID\u3002\u8FD9\u6837\u4F1A\u6BD4\u8F83\u9EBB\u70E6\uFF0C\u56E0\u4E3A\u6BCF\u6B21\u542F\u52A8\u5E94\u7528\uFF0C\u5B83\u7684 PID \u4F1A\u53D8\u5316\u3002

\u6BD4\u5982\uFF0C\u5DF2\u7ECF\u542F\u52A8\u4E86math-game.jar\uFF0C\u4F7F\u7528jps\u547D\u4EE4\u67E5\u770B\uFF1A

$ jps
+58883 math-game.jar
+58884 Jps
+

\u901A\u8FC7select\u53C2\u6570\u53EF\u4EE5\u6307\u5B9A\u8FDB\u7A0B\u540D\u5B57\uFF0C\u975E\u5E38\u65B9\u4FBF\u3002

$ ./as3.sh --select math-game
+Arthas script version: 3.3.6
+[INFO] JAVA_HOME: /tmp/java/8.0.222-zulu
+Arthas home: /Users/admin/.arthas/lib/3.3.6/arthas
+Calculating attach execution time...
+Attaching to 59161 using version /Users/admin/.arthas/lib/3.3.6/arthas...
+
+real	0m0.572s
+user	0m0.281s
+sys	0m0.039s
+Attach success.
+telnet connecting to arthas server... current timestamp is 1594280799
+Trying 127.0.0.1...
+Connected to localhost.
+Escape character is '^]'.
+  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
+ /  O  \\ |  .--. ''--.  .--'|  '--'  | /  O  \\ '   .-'
+|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |\`.  \`-.
+|  | |  ||  |\\  \\    |  |   |  |  |  ||  | |  |.-'    |
+\`--' \`--'\`--' '--'   \`--'   \`--'  \`--'\`--' \`--'\`-----'
+
+
+wiki      https://arthas.aliyun.com/3.x/doc
+tutorials https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html
+version   3.3.6
+pid       58883
+

\u7528\u6237\u6570\u636E\u56DE\u62A5

\u57283.1.4\u7248\u672C\u540E\uFF0C\u589E\u52A0\u4E86\u7528\u6237\u6570\u636E\u56DE\u62A5\u529F\u80FD\uFF0C\u65B9\u4FBF\u7EDF\u4E00\u505A\u5B89\u5168\u6216\u8005\u5386\u53F2\u6570\u636E\u7EDF\u8BA1\u3002

\u5728\u542F\u52A8\u65F6\uFF0C\u6307\u5B9Astat-url\uFF0C\u5C31\u4F1A\u56DE\u62A5\u6267\u884C\u7684\u6BCF\u4E00\u884C\u547D\u4EE4\uFF0C\u6BD4\u5982\uFF1A ./as3.sh --stat-url 'http://192.168.10.11:8080/api/stat'

\u5728 tunnel server \u91CC\u6709\u4E00\u4E2A\u793A\u4F8B\u7684\u56DE\u62A5\u4EE3\u7801\uFF0C\u7528\u6237\u53EF\u4EE5\u81EA\u5DF1\u5728\u670D\u52A1\u5668\u4E0A\u5B9E\u73B0\u3002

`,11),X={href:"https://github.com/alibaba/arthas/blob/master/tunnel-server/src/main/java/com/alibaba/arthas/tunnel/server/app/web/StatController.java",target:"_blank",rel:"noopener noreferrer"},Y=s("StatController.java");function Z(aa,sa){const e=o("RouterLink"),l=o("ExternalLinkIcon");return i(),c("div",null,[h,u,_,a("ul",null,[a("li",null,[n(e,{to:"/doc/async.html"},{default:t(()=>[b]),_:1})])]),v,m,a("ul",null,[a("li",null,[n(e,{to:"/doc/save-log.html"},{default:t(()=>[k]),_:1})])]),g,f,a("ul",null,[a("li",null,[n(e,{to:"/doc/docker.html"},{default:t(()=>[x]),_:1})])]),A,j,a("ul",null,[a("li",null,[n(e,{to:"/doc/web-console.html"},{default:t(()=>[I]),_:1})])]),P,C,a("ul",null,[a("li",null,[n(e,{to:"/doc/tunnel.html"},{default:t(()=>[T]),_:1})])]),w,a("ul",null,[a("li",null,[a("a",E,[S,n(l)])]),a("li",null,[a("a",D,[y,n(l)])])]),B,N,a("ul",null,[a("li",null,[n(e,{to:"/doc/idea-plugin.html"},{default:t(()=>[V]),_:1})])]),H,J,a("ul",null,[a("li",null,[n(e,{to:"/doc/arthas-properties.html"},{default:t(()=>[L]),_:1})])]),O,a("ul",null,[a("li",null,[n(e,{to:"/doc/agent.html"},{default:t(()=>[U]),_:1})])]),R,W,a("ul",null,[a("li",null,[n(e,{to:"/doc/spring-boot-starter.html"},{default:t(()=>[$]),_:1})])]),z,F,a("ul",null,[a("li",null,[n(e,{to:"/doc/http-api.html"},{default:t(()=>[M]),_:1})])]),q,G,a("ul",null,[a("li",null,[n(e,{to:"/doc/batch-support.html"},{default:t(()=>[K]),_:1})])]),Q,a("p",null,[a("a",X,[Y,n(l)])])])}const ea=r(p,[["render",Z],["__file","advanced-use.html.vue"]]);export{ea as default}; diff --git a/3.x/assets/advanced-use.html.b6fb70e9.js b/3.x/assets/advanced-use.html.b6fb70e9.js new file mode 100644 index 00000000000..f7b50fcb2e6 --- /dev/null +++ b/3.x/assets/advanced-use.html.b6fb70e9.js @@ -0,0 +1,30 @@ +import{_ as i,o as l,c,a,b as e,w as t,e as s,d,r}from"./app.4d248835.js";const p={},h=a("h1",{id:"other-features",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#other-features","aria-hidden":"true"},"#"),s(" Other features")],-1),u=a("h2",{id:"arthas-async-jobs",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-async-jobs","aria-hidden":"true"},"#"),s(" Arthas Async Jobs")],-1),b=a("p",null,"If you need to investigate an issue, but you are unsure about the exact time it occurs, you can run the monitoring command in the background and save the output to a log file.",-1),m=s("Arthas Async Jobs"),v=a("h2",{id:"log-the-output",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#log-the-output","aria-hidden":"true"},"#"),s(" Log the output")],-1),_=a("p",null,"All execution records are fully saved in the log file for subsequent analysis.",-1),k=s("log the output"),g=a("h2",{id:"docker",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#docker","aria-hidden":"true"},"#"),s(" Docker")],-1),f=a("p",null,"Arthas configuration reference for using in Docker containers.",-1),x=s("Docker"),A=a("h2",{id:"web-console",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#web-console","aria-hidden":"true"},"#"),s(" Web Console")],-1),w=a("p",null,"Arthas supports living inside a browser. The communication between arthas and browser is via websocket.",-1),y=s("Web Console"),j=a("h2",{id:"arthas-tunnel",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-tunnel","aria-hidden":"true"},"#"),s(" Arthas Tunnel")],-1),I=a("p",null,"Arthas Tunnel Server/Client enables remote management/connection to Java services across multiple servers.",-1),T=s("Arthas Tunnel"),S=a("h2",{id:"how-to-use-ognl",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#how-to-use-ognl","aria-hidden":"true"},"#"),s(" How to use ognl")],-1),P={href:"https://github.com/alibaba/arthas/issues/11",target:"_blank",rel:"noopener noreferrer"},B=s("Basic ognl example"),C={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},E=s("Ognl special uses"),J=a("h2",{id:"idea-plugin",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#idea-plugin","aria-hidden":"true"},"#"),s(" IDEA Plugin")],-1),D=a("p",null,"Build arthas commands more efficiently in the IntelliJ IDEA compiler.",-1),N=s("IDEA Plugin"),O=a("h2",{id:"arthas-properties",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-properties","aria-hidden":"true"},"#"),s(" Arthas Properties")],-1),H=a("p",null,"Arthas supports configuration options reference.",-1),L=s("Arthas Properties"),V=a("h2",{id:"start-as-a-java-agent",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#start-as-a-java-agent","aria-hidden":"true"},"#"),s(" Start as a Java Agent")],-1),U=s("Start as a Java Agent"),F=a("h2",{id:"arthas-spring-boot-starter",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-spring-boot-starter","aria-hidden":"true"},"#"),s(" Arthas Spring Boot Starter")],-1),R=a("p",null,"Starting with the application.",-1),W=s("Arthas Spring Boot Starter"),$=a("h2",{id:"http-api",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#http-api","aria-hidden":"true"},"#"),s(" HTTP API")],-1),q=a("p",null,"The Http API provides structured data and supports more complex interactive functions, making it easier to integrate Arthas into custom interfaces.",-1),z=s("HTTP API"),M=a("h2",{id:"batch-processing",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#batch-processing","aria-hidden":"true"},"#"),s(" Batch Processing")],-1),G=a("p",null,[s("It is convenient for running multiple commands in bulk with custom scripts. It can be used in conjunction with the "),a("code",null,"--select"),s(" parameter to specify the process name.")],-1),K=s("Batch Processing"),Q=d(`

as3.sh and arthas-boot3 tips

Normally, as3.sh/arthas-boot3.jar needs to a pid, bacause the pid will change.

For example, with math-game.jar already started, use the jps command to see.

$ jps
+58883 math-game.jar
+58884 Jps
+

The select option allows you to specify a process name, which is very convenient.

$ ./as3.sh --select math-game
+Arthas script version: 3.3.6
+[INFO] JAVA_HOME: /tmp/java/8.0.222-zulu
+Arthas home: /Users/admin/.arthas/lib/3.3.6/arthas
+Calculating attach execution time...
+Attaching to 59161 using version /Users/admin/.arthas/lib/3.3.6/arthas...
+
+real	0m0.572s
+user	0m0.281s
+sys	0m0.039s
+Attach success.
+telnet connecting to arthas server... current timestamp is 1594280799
+Trying 127.0.0.1...
+Connected to localhost.
+Escape character is '^]'.
+  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
+ /  O  \\ |  .--. ''--.  .--'|  '--'  | /  O  \\ '   .-'
+|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |\`.  \`-.
+|  | |  ||  |\\  \\    |  |   |  |  |  ||  | |  |.-'    |
+\`--' \`--'\`--' '--'   \`--'   \`--'  \`--'\`--' \`--'\`-----'
+
+
+wiki      https://arthas.aliyun.com/3.x/doc
+tutorials https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html
+version   3.3.6
+pid       58883
+

User data report

After the 3.1.4 version, arthas support user data report.

At startup, use the stat-url option, such as: ./as3.sh --stat-url 'http://192.168.10.11:8080/api/stat'

There is a sample data report in the tunnel server that users can implement on their own.

`,11),X={href:"https://github.com/alibaba/arthas/blob/master/tunnel-server/src/main/java/com/alibaba/arthas/tunnel/server/app/web/StatController.java",target:"_blank",rel:"noopener noreferrer"},Y=s("StatController.java");function Z(aa,sa){const n=r("RouterLink"),o=r("ExternalLinkIcon");return l(),c("div",null,[h,u,b,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/async.html"},{default:t(()=>[m]),_:1})])]),v,_,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/save-log.html"},{default:t(()=>[k]),_:1})])]),g,f,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/docker.html"},{default:t(()=>[x]),_:1})])]),A,w,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/web-console.html"},{default:t(()=>[y]),_:1})])]),j,I,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/tunnel.html"},{default:t(()=>[T]),_:1})])]),S,a("ul",null,[a("li",null,[a("a",P,[B,e(o)])]),a("li",null,[a("a",C,[E,e(o)])])]),J,D,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/idea-plugin.html"},{default:t(()=>[N]),_:1})])]),O,H,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/arthas-properties.html"},{default:t(()=>[L]),_:1})])]),V,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/agent.html"},{default:t(()=>[U]),_:1})])]),F,R,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/spring-boot-starter.html"},{default:t(()=>[W]),_:1})])]),$,q,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/http-api.html"},{default:t(()=>[z]),_:1})])]),M,G,a("ul",null,[a("li",null,[e(n,{to:"/en/doc/batch-support.html"},{default:t(()=>[K]),_:1})])]),Q,a("p",null,[a("a",X,[Y,e(o)])])])}const na=i(p,[["render",Z],["__file","advanced-use.html.vue"]]);export{na as default}; diff --git a/3.x/assets/advice-class.html.0e371faa.js b/3.x/assets/advice-class.html.0e371faa.js new file mode 100644 index 00000000000..aca10e429c7 --- /dev/null +++ b/3.x/assets/advice-class.html.0e371faa.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-46e53834","path":"/doc/advice-class.html","title":"\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1658120060000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/advice-class.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/advice-class.html.21f2ea38.js b/3.x/assets/advice-class.html.21f2ea38.js new file mode 100644 index 00000000000..83e454d311b --- /dev/null +++ b/3.x/assets/advice-class.html.21f2ea38.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-a736375c","path":"/en/doc/advice-class.html","title":"Fundamental Fields in Expressions","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1658120060000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/advice-class.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/advice-class.html.913cd28f.js b/3.x/assets/advice-class.html.913cd28f.js new file mode 100644 index 00000000000..1061ef21288 --- /dev/null +++ b/3.x/assets/advice-class.html.913cd28f.js @@ -0,0 +1,16 @@ +import{_ as s,o as l,c as o,a as e,b as a,d as r,e as t,r as i}from"./app.4d248835.js";const c={},d=r(`

Fundamental Fields in Expressions

There is a very fundamental class Advice for the expressions used in filtering, tracing or monitoring and other aspects in commands.

public class Advice {
+
+    private final ClassLoader loader;
+    private final Class<?> clazz;
+    private final ArthasMethod method;
+    private final Object target;
+    private final Object[] params;
+    private final Object returnObj;
+    private final Throwable throwExp;
+    private final boolean isBefore;
+    private final boolean isThrow;
+    private final boolean isReturn;
+
+    // getter/setter
+}
+

Description for the variables in the class Advice:

NameSpecification
loaderthe class loader for the current called class
clazzthe reference to the current called class
methodthe reference to the current called method
targetthe instance of the current called class
paramsthe parameters for the current call, which is an array (when there's no parameter, it will be an empty array)
returnObjthe return value from the current call - only available when the method call returns normally (isReturn==true), and null is for void return value
throwExpthe exceptions thrown from the current call - only available when the method call throws exception (isThrow==true)
isBeforeflag to indicate the method is about to execute. isBefore==true but isThrow==false and isReturn==false since it's no way to know how the method call will end
isThrowflag to indicate the method call ends with exception thrown
isReturnflag to indicate the method call ends normally without exception thrown
`,5),p=t("All variables listed above can be used directly in the "),h={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},u=t("OGNL expression"),k=t(". The command will not execute and exit if there's illegal OGNL grammar or unexpected variable in the expression."),m={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},g=t("typical use cases"),v=t(";"),f={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},y=t("OGNL language guide"),b=t(".");function w(x,_){const n=i("ExternalLinkIcon");return l(),o("div",null,[d,e("p",null,[p,e("a",h,[u,a(n)]),k]),e("ul",null,[e("li",null,[e("a",m,[g,a(n)]),v]),e("li",null,[e("a",f,[y,a(n)]),b])])])}const N=s(c,[["render",w],["__file","advice-class.html.vue"]]);export{N as default}; diff --git a/3.x/assets/advice-class.html.b56b5ad0.js b/3.x/assets/advice-class.html.b56b5ad0.js new file mode 100644 index 00000000000..0b4c27e8577 --- /dev/null +++ b/3.x/assets/advice-class.html.b56b5ad0.js @@ -0,0 +1,16 @@ +import{_ as e,o as l,c as o,a as s,b as n,d as r,e as a,r as i}from"./app.4d248835.js";const c={},p=r(`

\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF

\u65E0\u8BBA\u662F\u5339\u914D\u8868\u8FBE\u5F0F\u4E5F\u597D\u3001\u89C2\u5BDF\u8868\u8FBE\u5F0F\u4E5F\u7F62\uFF0C\u4ED6\u4EEC\u6838\u5FC3\u5224\u65AD\u53D8\u91CF\u90FD\u662F\u56F4\u7ED5\u7740\u4E00\u4E2A Arthas \u4E2D\u7684\u901A\u7528\u901A\u77E5\u5BF9\u8C61 Advice \u8FDB\u884C\u3002

\u5B83\u7684\u7B80\u7565\u4EE3\u7801\u7ED3\u6784\u5982\u4E0B

public class Advice {
+
+    private final ClassLoader loader;
+    private final Class<?> clazz;
+    private final ArthasMethod method;
+    private final Object target;
+    private final Object[] params;
+    private final Object returnObj;
+    private final Throwable throwExp;
+    private final boolean isBefore;
+    private final boolean isThrow;
+    private final boolean isReturn;
+
+    // getter/setter
+}
+

\u8FD9\u91CC\u5217\u4E00\u4E2A\u8868\u683C\u6765\u8BF4\u660E\u4E0D\u540C\u53D8\u91CF\u7684\u542B\u4E49

\u53D8\u91CF\u540D\u53D8\u91CF\u89E3\u91CA
loader\u672C\u6B21\u8C03\u7528\u7C7B\u6240\u5728\u7684 ClassLoader
clazz\u672C\u6B21\u8C03\u7528\u7C7B\u7684 Class \u5F15\u7528
method\u672C\u6B21\u8C03\u7528\u65B9\u6CD5\u53CD\u5C04\u5F15\u7528
target\u672C\u6B21\u8C03\u7528\u7C7B\u7684\u5B9E\u4F8B
params\u672C\u6B21\u8C03\u7528\u53C2\u6570\u5217\u8868\uFF0C\u8FD9\u662F\u4E00\u4E2A\u6570\u7EC4\uFF0C\u5982\u679C\u65B9\u6CD5\u662F\u65E0\u53C2\u65B9\u6CD5\u5219\u4E3A\u7A7A\u6570\u7EC4
returnObj\u672C\u6B21\u8C03\u7528\u8FD4\u56DE\u7684\u5BF9\u8C61\u3002\u5F53\u4E14\u4EC5\u5F53 isReturn==true \u6210\u7ACB\u65F6\u5019\u6709\u6548\uFF0C\u8868\u660E\u65B9\u6CD5\u8C03\u7528\u662F\u4EE5\u6B63\u5E38\u8FD4\u56DE\u7684\u65B9\u5F0F\u7ED3\u675F\u3002\u5982\u679C\u5F53\u524D\u65B9\u6CD5\u65E0\u8FD4\u56DE\u503C void\uFF0C\u5219\u503C\u4E3A null
throwExp\u672C\u6B21\u8C03\u7528\u629B\u51FA\u7684\u5F02\u5E38\u3002\u5F53\u4E14\u4EC5\u5F53 isThrow==true \u6210\u7ACB\u65F6\u6709\u6548\uFF0C\u8868\u660E\u65B9\u6CD5\u8C03\u7528\u662F\u4EE5\u629B\u51FA\u5F02\u5E38\u7684\u65B9\u5F0F\u7ED3\u675F\u3002
isBefore\u8F85\u52A9\u5224\u65AD\u6807\u8BB0\uFF0C\u5F53\u524D\u7684\u901A\u77E5\u8282\u70B9\u6709\u53EF\u80FD\u662F\u5728\u65B9\u6CD5\u4E00\u5F00\u59CB\u5C31\u901A\u77E5\uFF0C\u6B64\u65F6 isBefore==true \u6210\u7ACB\uFF0C\u540C\u65F6 isThrow==false \u548C isReturn==false\uFF0C\u56E0\u4E3A\u5728\u65B9\u6CD5\u521A\u5F00\u59CB\u65F6\uFF0C\u8FD8\u65E0\u6CD5\u786E\u5B9A\u65B9\u6CD5\u8C03\u7528\u5C06\u4F1A\u5982\u4F55\u7ED3\u675F\u3002
isThrow\u8F85\u52A9\u5224\u65AD\u6807\u8BB0\uFF0C\u5F53\u524D\u7684\u65B9\u6CD5\u8C03\u7528\u4EE5\u629B\u5F02\u5E38\u7684\u5F62\u5F0F\u7ED3\u675F\u3002
isReturn\u8F85\u52A9\u5224\u65AD\u6807\u8BB0\uFF0C\u5F53\u524D\u7684\u65B9\u6CD5\u8C03\u7528\u4EE5\u6B63\u5E38\u8FD4\u56DE\u7684\u5F62\u5F0F\u7ED3\u675F\u3002

\u6240\u6709\u53D8\u91CF\u90FD\u53EF\u4EE5\u5728\u8868\u8FBE\u5F0F\u4E2D\u76F4\u63A5\u4F7F\u7528\uFF0C\u5982\u679C\u5728\u8868\u8FBE\u5F0F\u4E2D\u7F16\u5199\u4E86\u4E0D\u7B26\u5408 OGNL \u811A\u672C\u8BED\u6CD5\u6216\u8005\u5F15\u5165\u4E86\u4E0D\u5728\u8868\u683C\u4E2D\u7684\u53D8\u91CF\uFF0C\u5219\u9000\u51FA\u547D\u4EE4\u7684\u6267\u884C\uFF1B\u7528\u6237\u53EF\u4EE5\u6839\u636E\u5F53\u524D\u7684\u5F02\u5E38\u4FE1\u606F\u4FEE\u6B63\u6761\u4EF6\u8868\u8FBE\u5F0F\u6216\u89C2\u5BDF\u8868\u8FBE\u5F0F

`,7),d=a("\u7279\u6B8A\u7528\u6CD5\u8BF7\u53C2\u8003\uFF1A"),k={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},u=a("https://github.com/alibaba/arthas/issues/71"),h=a("OGNL \u8868\u8FBE\u5F0F\u5B98\u7F51\uFF1A"),g={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},v=a("https://commons.apache.org/proper/commons-ognl/language-guide.html");function m(y,b){const t=i("ExternalLinkIcon");return l(),o("div",null,[p,s("ul",null,[s("li",null,[d,s("a",k,[u,n(t)])]),s("li",null,[h,s("a",g,[v,n(t)])])])])}const w=e(c,[["render",m],["__file","advice-class.html.vue"]]);export{w as default}; diff --git a/3.x/assets/agent.html.2c661add.js b/3.x/assets/agent.html.2c661add.js new file mode 100644 index 00000000000..5712ef77eed --- /dev/null +++ b/3.x/assets/agent.html.2c661add.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-37178538","path":"/doc/agent.html","title":"\u4EE5 Java Agent \u7684\u65B9\u5F0F\u542F\u52A8","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1658120060000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/agent.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/agent.html.5d625533.js b/3.x/assets/agent.html.5d625533.js new file mode 100644 index 00000000000..192f7eb46db --- /dev/null +++ b/3.x/assets/agent.html.5d625533.js @@ -0,0 +1,2 @@ +import{_ as s,o as r,c as n,a as e,b as o,w as c,d as i,e as a,r as d}from"./app.4d248835.js";const l={},h=i(`

Start as a Java Agent

Usually Arthas dynamic attach the applications on the fly, but from version 3.2.0 onwards, Arthas supports starting directly as a java agent.

For example, download the full arthas zip package, decompress it and start it by specifying arthas-agent.jar with the parameter -javaagent.

java -javaagent:/tmp/test/arthas-agent.jar -jar math-game.jar
+
`,4),p=a("The default configuration is in the "),m=e("code",null,"arthas.properties",-1),_=a(" file in the decompression directory. Reference: "),u=a("Arthas Properties"),g=e("p",null,"Reference: https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html",-1);function v(f,j){const t=d("RouterLink");return r(),n("div",null,[h,e("p",null,[p,m,_,o(t,{to:"/en/doc/arthas-properties.html"},{default:c(()=>[u]),_:1})]),g])}const y=s(l,[["render",v],["__file","agent.html.vue"]]);export{y as default}; diff --git a/3.x/assets/agent.html.a8d22dff.js b/3.x/assets/agent.html.a8d22dff.js new file mode 100644 index 00000000000..bb4f485ff56 --- /dev/null +++ b/3.x/assets/agent.html.a8d22dff.js @@ -0,0 +1,2 @@ +import{_ as s,o,c as n,a as e,b as r,w as c,d,e as a,r as i}from"./app.4d248835.js";const l={},h=d(`

\u4EE5 Java Agent \u7684\u65B9\u5F0F\u542F\u52A8

\u901A\u5E38 Arthas \u662F\u4EE5\u52A8\u6001 attach \u7684\u65B9\u5F0F\u6765\u8BCA\u65AD\u5E94\u7528\uFF0C\u4F46\u4ECE3.2.0\u7248\u672C\u8D77\uFF0CArthas \u652F\u6301\u76F4\u63A5\u4EE5 java agent \u7684\u65B9\u5F0F\u542F\u52A8\u3002

\u6BD4\u5982\u4E0B\u8F7D\u5168\u91CF\u7684 arthas zip \u5305\uFF0C\u89E3\u538B\u4E4B\u540E\u4EE5 -javaagent \u7684\u53C2\u6570\u6307\u5B9Aarthas-agent.jar\u6765\u542F\u52A8\uFF1A

java -javaagent:/tmp/test/arthas-agent.jar -jar math-game.jar
+
`,4),_=a("\u9ED8\u8BA4\u7684\u914D\u7F6E\u9879\u5728\u89E3\u538B\u76EE\u5F55\u91CC\u7684"),p=e("code",null,"arthas.properties",-1),m=a("\u6587\u4EF6\u91CC\u3002\u53C2\u8003\uFF1A"),u=a("Arthas Properties"),v=e("p",null,"Java Agent \u673A\u5236\u53C2\u8003\uFF1A https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html",-1);function g(j,x){const t=i("RouterLink");return o(),n("div",null,[h,e("p",null,[_,p,m,r(t,{to:"/doc/arthas-properties.html"},{default:c(()=>[u]),_:1})]),v])}const b=s(l,[["render",g],["__file","agent.html.vue"]]);export{b as default}; diff --git a/3.x/assets/agent.html.ad1674bc.js b/3.x/assets/agent.html.ad1674bc.js new file mode 100644 index 00000000000..f304a5755c8 --- /dev/null +++ b/3.x/assets/agent.html.ad1674bc.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-f6b5c310","path":"/en/doc/agent.html","title":"Start as a Java Agent","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1658120060000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/agent.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/app.4d248835.js b/3.x/assets/app.4d248835.js new file mode 100644 index 00000000000..60a66ded3e7 --- /dev/null +++ b/3.x/assets/app.4d248835.js @@ -0,0 +1,38 @@ +const Om="modulepreload",Pm=function(e){return"/3.x/"+e},Oi={},h=function(t,n,o){return!n||n.length===0?t():Promise.all(n.map(r=>{if(r=Pm(r),r in Oi)return;Oi[r]=!0;const a=r.endsWith(".css"),i=a?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${r}"]${i}`))return;const c=document.createElement("link");if(c.rel=a?"stylesheet":Om,a||(c.as="script",c.crossOrigin=""),c.href=r,document.head.appendChild(c),a)return new Promise((s,l)=>{c.addEventListener("load",s),c.addEventListener("error",()=>l(new Error(`Unable to preload CSS for ${r}`)))})})).then(()=>t())},Sm={"v-8daa1a0e":()=>h(()=>import("./index.html.6c4675e2.js"),[]).then(({data:e})=>e),"v-7445f070":()=>h(()=>import("./index.html.636fad3d.js"),[]).then(({data:e})=>e),"v-0d09f68d":()=>h(()=>import("./advanced-use.html.94d49710.js"),[]).then(({data:e})=>e),"v-46e53834":()=>h(()=>import("./advice-class.html.0e371faa.js"),[]).then(({data:e})=>e),"v-37178538":()=>h(()=>import("./agent.html.2c661add.js"),[]).then(({data:e})=>e),"v-5c517900":()=>h(()=>import("./arthas-properties.html.c6a378d8.js"),[]).then(({data:e})=>e),"v-02eb6d0d":()=>h(()=>import("./arthas3.html.f5096367.js"),[]).then(({data:e})=>e),"v-4f82df66":()=>h(()=>import("./async.html.08408f7f.js"),[]).then(({data:e})=>e),"v-d0358c7e":()=>h(()=>import("./auth.html.0cae929d.js"),[]).then(({data:e})=>e),"v-3157067a":()=>h(()=>import("./base64.html.e5a32bd6.js"),[]).then(({data:e})=>e),"v-cc8f4ae6":()=>h(()=>import("./batch-support.html.acbd1eb9.js"),[]).then(({data:e})=>e),"v-6542b733":()=>h(()=>import("./cat.html.79af7693.js"),[]).then(({data:e})=>e),"v-49b1709e":()=>h(()=>import("./classloader.html.5b255ef1.js"),[]).then(({data:e})=>e),"v-ad1b2b42":()=>h(()=>import("./cls.html.9332bbdf.js"),[]).then(({data:e})=>e),"v-5ed4d0e1":()=>h(()=>import("./commands.html.e2567b24.js"),[]).then(({data:e})=>e),"v-3992adde":()=>h(()=>import("./contact-us.html.6d0fe4e6.js"),[]).then(({data:e})=>e),"v-0d1e3f35":()=>h(()=>import("./dashboard.html.c7a97553.js"),[]).then(({data:e})=>e),"v-02361049":()=>h(()=>import("./docker.html.030cca04.js"),[]).then(({data:e})=>e),"v-2116d2e1":()=>h(()=>import("./download.html.b853bfd7.js"),[]).then(({data:e})=>e),"v-1fe4a616":()=>h(()=>import("./dump.html.3f441711.js"),[]).then(({data:e})=>e),"v-2c48f364":()=>h(()=>import("./echo.html.239528da.js"),[]).then(({data:e})=>e),"v-d070981a":()=>h(()=>import("./faq.html.abd28b1f.js"),[]).then(({data:e})=>e),"v-78c35af6":()=>h(()=>import("./getstatic.html.2229049b.js"),[]).then(({data:e})=>e),"v-63f4cd5a":()=>h(()=>import("./grep.html.4aa91236.js"),[]).then(({data:e})=>e),"v-809381ca":()=>h(()=>import("./groovy.html.21de60b6.js"),[]).then(({data:e})=>e),"v-07868089":()=>h(()=>import("./heapdump.html.3fe356b2.js"),[]).then(({data:e})=>e),"v-e3b34070":()=>h(()=>import("./help.html.7ba26453.js"),[]).then(({data:e})=>e),"v-26f43d96":()=>h(()=>import("./history.html.5c8da1d4.js"),[]).then(({data:e})=>e),"v-225de034":()=>h(()=>import("./http-api.html.f5e81364.js"),[]).then(({data:e})=>e),"v-7c670020":()=>h(()=>import("./idea-plugin.html.d7acd139.js"),[]).then(({data:e})=>e),"v-0cb398f4":()=>h(()=>import("./install-detail.html.0c410a89.js"),[]).then(({data:e})=>e),"v-211d675c":()=>h(()=>import("./jad.html.d639a8bb.js"),[]).then(({data:e})=>e),"v-41806853":()=>h(()=>import("./jfr.html.e858c4d3.js"),[]).then(({data:e})=>e),"v-f1483d70":()=>h(()=>import("./jvm.html.a00151a5.js"),[]).then(({data:e})=>e),"v-4039cdec":()=>h(()=>import("./keymap.html.e3647cfd.js"),[]).then(({data:e})=>e),"v-5ae8aed9":()=>h(()=>import("./logger.html.7a983455.js"),[]).then(({data:e})=>e),"v-6a31cc55":()=>h(()=>import("./manual-install.html.09d3b86a.js"),[]).then(({data:e})=>e),"v-8ebd6c68":()=>h(()=>import("./mbean.html.555cb2c7.js"),[]).then(({data:e})=>e),"v-3b401ada":()=>h(()=>import("./mc.html.70645c5e.js"),[]).then(({data:e})=>e),"v-4d9433f0":()=>h(()=>import("./memory.html.078c4658.js"),[]).then(({data:e})=>e),"v-6e88d7a2":()=>h(()=>import("./monitor.html.d6717549.js"),[]).then(({data:e})=>e),"v-627e52da":()=>h(()=>import("./ognl.html.a04123af.js"),[]).then(({data:e})=>e),"v-27b6152a":()=>h(()=>import("./options.html.76f0ad11.js"),[]).then(({data:e})=>e),"v-2f05b636":()=>h(()=>import("./perfcounter.html.a2008d46.js"),[]).then(({data:e})=>e),"v-13eae420":()=>h(()=>import("./profiler.html.2fe5463f.js"),[]).then(({data:e})=>e),"v-1c2d8c2c":()=>h(()=>import("./pwd.html.b8813280.js"),[]).then(({data:e})=>e),"v-5afc3a07":()=>h(()=>import("./quick-start.html.463266ab.js"),[]).then(({data:e})=>e),"v-aa7c750c":()=>h(()=>import("./quit.html.052c6b91.js"),[]).then(({data:e})=>e),"v-0446ad7b":()=>h(()=>import("./redefine.html.a2b54a14.js"),[]).then(({data:e})=>e),"v-648880ae":()=>h(()=>import("./release-notes.html.bd30f66e.js"),[]).then(({data:e})=>e),"v-71f77d4c":()=>h(()=>import("./reset.html.d6cfba7b.js"),[]).then(({data:e})=>e),"v-54cde250":()=>h(()=>import("./retransform.html.8eba17c2.js"),[]).then(({data:e})=>e),"v-8e632816":()=>h(()=>import("./save-log.html.1848baa1.js"),[]).then(({data:e})=>e),"v-1fc55619":()=>h(()=>import("./sc.html.74c76d3a.js"),[]).then(({data:e})=>e),"v-3891b473":()=>h(()=>import("./session.html.5c4eabed.js"),[]).then(({data:e})=>e),"v-30d5cc4f":()=>h(()=>import("./sm.html.e7e61e0b.js"),[]).then(({data:e})=>e),"v-07cf9d55":()=>h(()=>import("./spring-boot-starter.html.f437e222.js"),[]).then(({data:e})=>e),"v-b75a107e":()=>h(()=>import("./stack.html.6561e199.js"),[]).then(({data:e})=>e),"v-a9c412f2":()=>h(()=>import("./start-arthas.html.11758ed5.js"),[]).then(({data:e})=>e),"v-bc0910b2":()=>h(()=>import("./stop.html.29be75c6.js"),[]).then(({data:e})=>e),"v-0333612e":()=>h(()=>import("./sysenv.html.2f968356.js"),[]).then(({data:e})=>e),"v-7012b8ce":()=>h(()=>import("./sysprop.html.36bf4069.js"),[]).then(({data:e})=>e),"v-0536edb5":()=>h(()=>import("./tee.html.f88833bc.js"),[]).then(({data:e})=>e),"v-10845ac2":()=>h(()=>import("./thread.html.036b2896.js"),[]).then(({data:e})=>e),"v-65d67724":()=>h(()=>import("./trace.html.0dc105ca.js"),[]).then(({data:e})=>e),"v-71adf3e9":()=>h(()=>import("./tt.html.1800bc01.js"),[]).then(({data:e})=>e),"v-d2ddc9fe":()=>h(()=>import("./tunnel.html.5346db5d.js"),[]).then(({data:e})=>e),"v-5b5d3371":()=>h(()=>import("./version.html.85cfef6a.js"),[]).then(({data:e})=>e),"v-40db67fd":()=>h(()=>import("./vmoption.html.58b16737.js"),[]).then(({data:e})=>e),"v-10890efa":()=>h(()=>import("./vmtool.html.3a06f08b.js"),[]).then(({data:e})=>e),"v-24fc49da":()=>h(()=>import("./watch.html.3663bb24.js"),[]).then(({data:e})=>e),"v-a5f6e7aa":()=>h(()=>import("./web-console.html.8f3242b3.js"),[]).then(({data:e})=>e),"v-2d0a870d":()=>h(()=>import("./index.html.72b89313.js"),[]).then(({data:e})=>e),"v-07555a84":()=>h(()=>import("./index.html.da04bb04.js"),[]).then(({data:e})=>e),"v-463d120e":()=>h(()=>import("./advanced-use.html.2f295a56.js"),[]).then(({data:e})=>e),"v-a736375c":()=>h(()=>import("./advice-class.html.21f2ea38.js"),[]).then(({data:e})=>e),"v-f6b5c310":()=>h(()=>import("./agent.html.ad1674bc.js"),[]).then(({data:e})=>e),"v-74fb2694":()=>h(()=>import("./arthas-properties.html.1fb20763.js"),[]).then(({data:e})=>e),"v-786f7161":()=>h(()=>import("./async.html.0990e2e8.js"),[]).then(({data:e})=>e),"v-f76c33a6":()=>h(()=>import("./auth.html.3fe3d5ca.js"),[]).then(({data:e})=>e),"v-d17b7034":()=>h(()=>import("./base64.html.d9951e03.js"),[]).then(({data:e})=>e),"v-765e30be":()=>h(()=>import("./batch-support.html.a2012b98.js"),[]).then(({data:e})=>e),"v-64a0cd47":()=>h(()=>import("./cat.html.c8a558a6.js"),[]).then(({data:e})=>e),"v-fc1b9a9c":()=>h(()=>import("./classloader.html.50846686.js"),[]).then(({data:e})=>e),"v-ae5eff1a":()=>h(()=>import("./cls.html.92ac93b9.js"),[]).then(({data:e})=>e),"v-12153166":()=>h(()=>import("./commands.html.ea43666c.js"),[]).then(({data:e})=>e),"v-4be7594a":()=>h(()=>import("./contact-us.html.77c0699c.js"),[]).then(({data:e})=>e),"v-79107649":()=>h(()=>import("./dashboard.html.f56e6c96.js"),[]).then(({data:e})=>e),"v-682151b5":()=>h(()=>import("./docker.html.a7fd435f.js"),[]).then(({data:e})=>e),"v-8d912d66":()=>h(()=>import("./download.html.127d6cde.js"),[]).then(({data:e})=>e),"v-471b4d3e":()=>h(()=>import("./dump.html.148d41dc.js"),[]).then(({data:e})=>e),"v-18ad9fd0":()=>h(()=>import("./echo.html.8619670c.js"),[]).then(({data:e})=>e),"v-d1b46bf2":()=>h(()=>import("./faq.html.18da055d.js"),[]).then(({data:e})=>e),"v-2f908999":()=>h(()=>import("./getstatic.html.e01bd744.js"),[]).then(({data:e})=>e),"v-8b2b7482":()=>h(()=>import("./grep.html.8e0aee31.js"),[]).then(({data:e})=>e),"v-25a18087":()=>h(()=>import("./groovy.html.92f5e844.js"),[]).then(({data:e})=>e),"v-c0b1d216":()=>h(()=>import("./heapdump.html.19f5486f.js"),[]).then(({data:e})=>e),"v-7a8b0c34":()=>h(()=>import("./help.html.3d260e86.js"),[]).then(({data:e})=>e),"v-4402cd49":()=>h(()=>import("./history.html.006cedb1.js"),[]).then(({data:e})=>e),"v-8b0312c0":()=>h(()=>import("./http-api.html.a19a0b64.js"),[]).then(({data:e})=>e),"v-96b07b98":()=>h(()=>import("./idea-plugin.html.32b2309e.js"),[]).then(({data:e})=>e),"v-319f48f2":()=>h(()=>import("./install-detail.html.0208e8d8.js"),[]).then(({data:e})=>e),"v-207b7d70":()=>h(()=>import("./jad.html.e520a68e.js"),[]).then(({data:e})=>e),"v-40de7e67":()=>h(()=>import("./jfr.html.57a326e6.js"),[]).then(({data:e})=>e),"v-f28c1148":()=>h(()=>import("./jvm.html.4efee18b.js"),[]).then(({data:e})=>e),"v-b3b5e150":()=>h(()=>import("./keymap.html.e94a5d53.js"),[]).then(({data:e})=>e),"v-7e581f76":()=>h(()=>import("./logger.html.3230d5ce.js"),[]).then(({data:e})=>e),"v-bbaa3c7e":()=>h(()=>import("./manual-install.html.42509750.js"),[]).then(({data:e})=>e),"v-58d22ae0":()=>h(()=>import("./mbean.html.405141c1.js"),[]).then(({data:e})=>e),"v-2ac66c02":()=>h(()=>import("./mc.html.89ccac82.js"),[]).then(({data:e})=>e),"v-3f212774":()=>h(()=>import("./memory.html.e3c4914e.js"),[]).then(({data:e})=>e),"v-20388043":()=>h(()=>import("./monitor.html.30828325.js"),[]).then(({data:e})=>e),"v-89b4fa02":()=>h(()=>import("./ognl.html.a2f5b795.js"),[]).then(({data:e})=>e),"v-43a1e17f":()=>h(()=>import("./options.html.39ae73d3.js"),[]).then(({data:e})=>e),"v-6746784a":()=>h(()=>import("./perfcounter.html.04486209.js"),[]).then(({data:e})=>e),"v-a7e90ae8":()=>h(()=>import("./profiler.html.ecb6c417.js"),[]).then(({data:e})=>e),"v-1b8ba240":()=>h(()=>import("./pwd.html.5c70637d.js"),[]).then(({data:e})=>e),"v-d98607ca":()=>h(()=>import("./quick-start.html.2afac43e.js"),[]).then(({data:e})=>e),"v-d1b31c34":()=>h(()=>import("./quit.html.125451fe.js"),[]).then(({data:e})=>e),"v-c7317832":()=>h(()=>import("./redefine.html.ee728e3e.js"),[]).then(({data:e})=>e),"v-e0bde47c":()=>h(()=>import("./release-notes.html.5e40eac1.js"),[]).then(({data:e})=>e),"v-6735226e":()=>h(()=>import("./reset.html.6542e356.js"),[]).then(({data:e})=>e),"v-e5e2b738":()=>h(()=>import("./retransform.html.c9177e92.js"),[]).then(({data:e})=>e),"v-50ef0261":()=>h(()=>import("./save-log.html.59e37d28.js"),[]).then(({data:e})=>e),"v-28022d85":()=>h(()=>import("./sc.html.7e6d0647.js"),[]).then(({data:e})=>e),"v-dfe2bef2":()=>h(()=>import("./session.html.c643c273.js"),[]).then(({data:e})=>e),"v-3912a3bb":()=>h(()=>import("./sm.html.961479d6.js"),[]).then(({data:e})=>e),"v-71870b69":()=>h(()=>import("./spring-boot-starter.html.304b29da.js"),[]).then(({data:e})=>e),"v-4483d8d5":()=>h(()=>import("./stack.html.bbfa304b.js"),[]).then(({data:e})=>e),"v-7af576f3":()=>h(()=>import("./start-arthas.html.ddd2298e.js"),[]).then(({data:e})=>e),"v-e33fb7da":()=>h(()=>import("./stop.html.8c6a9664.js"),[]).then(({data:e})=>e),"v-645190d5":()=>h(()=>import("./sysenv.html.d4a09599.js"),[]).then(({data:e})=>e),"v-1f738fad":()=>h(()=>import("./sysprop.html.024045c5.js"),[]).then(({data:e})=>e),"v-049503c9":()=>h(()=>import("./tee.html.2c90d1cb.js"),[]).then(({data:e})=>e),"v-5da9140b":()=>h(()=>import("./thread.html.e4dd07a8.js"),[]).then(({data:e})=>e),"v-06075838":()=>h(()=>import("./trace.html.987171f7.js"),[]).then(({data:e})=>e),"v-79eacb55":()=>h(()=>import("./tt.html.fd7438d0.js"),[]).then(({data:e})=>e),"v-07074726":()=>h(()=>import("./tunnel.html.203ccf1d.js"),[]).then(({data:e})=>e),"v-9a4bc0f6":()=>h(()=>import("./version.html.2ce43555.js"),[]).then(({data:e})=>e),"v-4e08032e":()=>h(()=>import("./vmoption.html.c8c7e7fc.js"),[]).then(({data:e})=>e),"v-76745066":()=>h(()=>import("./vmtool.html.ab0c1d24.js"),[]).then(({data:e})=>e),"v-75a5aa24":()=>h(()=>import("./watch.html.8b8293d0.js"),[]).then(({data:e})=>e),"v-35756382":()=>h(()=>import("./web-console.html.cea17e0f.js"),[]).then(({data:e})=>e),"v-3706649a":()=>h(()=>import("./404.html.d0402927.js"),[]).then(({data:e})=>e)};function Ha(e,t){const n=Object.create(null),o=e.split(",");for(let r=0;r!!n[r.toLowerCase()]:r=>!!n[r]}const Am="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Tm=Ha(Am);function Qs(e){return!!e||e===""}function bo(e){if(ce(e)){const t={};for(let n=0;n{if(n){const o=n.split(Lm);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function Ue(e){let t="";if(Le(e))t=e;else if(ce(e))for(let n=0;nLe(e)?e:e==null?"":ce(e)||Ve(e)&&(e.toString===el||!he(e.toString))?JSON.stringify(e,Gs,2):String(e),Gs=(e,t)=>t&&t.__v_isRef?Gs(e,t.value):In(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[o,r])=>(n[`${o} =>`]=r,n),{})}:Zs(t)?{[`Set(${t.size})`]:[...t.values()]}:Ve(t)&&!ce(t)&&!tl(t)?String(t):t,Ce={},Tn=[],_t=()=>{},Rm=()=>!1,km=/^on[^a-z]/,yo=e=>km.test(e),$a=e=>e.startsWith("onUpdate:"),Ye=Object.assign,qa=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},xm=Object.prototype.hasOwnProperty,ye=(e,t)=>xm.call(e,t),ce=Array.isArray,In=e=>Er(e)==="[object Map]",Zs=e=>Er(e)==="[object Set]",he=e=>typeof e=="function",Le=e=>typeof e=="string",Va=e=>typeof e=="symbol",Ve=e=>e!==null&&typeof e=="object",Xs=e=>Ve(e)&&he(e.then)&&he(e.catch),el=Object.prototype.toString,Er=e=>el.call(e),Cm=e=>Er(e).slice(8,-1),tl=e=>Er(e)==="[object Object]",Na=e=>Le(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,eo=Ha(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),wr=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Mm=/-(\w)/g,Tt=wr(e=>e.replace(Mm,(t,n)=>n?n.toUpperCase():"")),jm=/\B([A-Z])/g,_n=wr(e=>e.replace(jm,"-$1").toLowerCase()),Or=wr(e=>e.charAt(0).toUpperCase()+e.slice(1)),Hr=wr(e=>e?`on${Or(e)}`:""),so=(e,t)=>!Object.is(e,t),$r=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},nl=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Pi;const Hm=()=>Pi||(Pi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let at;class $m{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&at&&(this.parent=at,this.index=(at.scopes||(at.scopes=[])).push(this)-1)}run(t){if(this.active){const n=at;try{return at=this,t()}finally{at=n}}}on(){at=this}off(){at=this.parent}stop(t){if(this.active){let n,o;for(n=0,o=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},ol=e=>(e.w&Qt)>0,rl=e=>(e.n&Qt)>0,Fm=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let o=0;o{(l==="length"||l>=o)&&c.push(s)});else switch(n!==void 0&&c.push(i.get(n)),t){case"add":ce(e)?Na(n)&&c.push(i.get("length")):(c.push(i.get(fn)),In(e)&&c.push(i.get(ca)));break;case"delete":ce(e)||(c.push(i.get(fn)),In(e)&&c.push(i.get(ca)));break;case"set":In(e)&&c.push(i.get(fn));break}if(c.length===1)c[0]&&sa(c[0]);else{const s=[];for(const l of c)l&&s.push(...l);sa(Fa(s))}}function sa(e,t){const n=ce(e)?e:[...e];for(const o of n)o.computed&&Ai(o);for(const o of n)o.computed||Ai(o)}function Ai(e,t){(e!==ht||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const zm=Ha("__proto__,__v_isRef,__isVue"),cl=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Va)),Um=za(),Wm=za(!1,!0),Km=za(!0),Ti=Ym();function Ym(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const o=Oe(this);for(let a=0,i=this.length;a{e[t]=function(...n){$n();const o=Oe(this)[t].apply(this,n);return qn(),o}}),e}function za(e=!1,t=!1){return function(o,r,a){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&a===(e?t?ud:dl:t?ml:ul).get(o))return o;const i=ce(o);if(!e&&i&&ye(Ti,r))return Reflect.get(Ti,r,a);const c=Reflect.get(o,r,a);return(Va(r)?cl.has(r):zm(r))||(e||ct(o,"get",r),t)?c:ze(c)?i&&Na(r)?c:c.value:Ve(c)?e?Ka(c):Vn(c):c}}const Jm=sl(),Qm=sl(!0);function sl(e=!1){return function(n,o,r,a){let i=n[o];if(xn(i)&&ze(i)&&!ze(r))return!1;if(!e&&(!Xo(r)&&!xn(r)&&(i=Oe(i),r=Oe(r)),!ce(n)&&ze(i)&&!ze(r)))return i.value=r,!0;const c=ce(n)&&Na(o)?Number(o)e,Pr=e=>Reflect.getPrototypeOf(e);function To(e,t,n=!1,o=!1){e=e.__v_raw;const r=Oe(e),a=Oe(t);n||(t!==a&&ct(r,"get",t),ct(r,"get",a));const{has:i}=Pr(r),c=o?Ua:n?Ja:lo;if(i.call(r,t))return c(e.get(t));if(i.call(r,a))return c(e.get(a));e!==r&&e.get(t)}function Io(e,t=!1){const n=this.__v_raw,o=Oe(n),r=Oe(e);return t||(e!==r&&ct(o,"has",e),ct(o,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function Lo(e,t=!1){return e=e.__v_raw,!t&&ct(Oe(e),"iterate",fn),Reflect.get(e,"size",e)}function Ii(e){e=Oe(e);const t=Oe(this);return Pr(t).has.call(t,e)||(t.add(e),qt(t,"add",e,e)),this}function Li(e,t){t=Oe(t);const n=Oe(this),{has:o,get:r}=Pr(n);let a=o.call(n,e);a||(e=Oe(e),a=o.call(n,e));const i=r.call(n,e);return n.set(e,t),a?so(t,i)&&qt(n,"set",e,t):qt(n,"add",e,t),this}function Di(e){const t=Oe(this),{has:n,get:o}=Pr(t);let r=n.call(t,e);r||(e=Oe(e),r=n.call(t,e)),o&&o.call(t,e);const a=t.delete(e);return r&&qt(t,"delete",e,void 0),a}function Ri(){const e=Oe(this),t=e.size!==0,n=e.clear();return t&&qt(e,"clear",void 0,void 0),n}function Do(e,t){return function(o,r){const a=this,i=a.__v_raw,c=Oe(i),s=t?Ua:e?Ja:lo;return!e&&ct(c,"iterate",fn),i.forEach((l,u)=>o.call(r,s(l),s(u),a))}}function Ro(e,t,n){return function(...o){const r=this.__v_raw,a=Oe(r),i=In(a),c=e==="entries"||e===Symbol.iterator&&i,s=e==="keys"&&i,l=r[e](...o),u=n?Ua:t?Ja:lo;return!t&&ct(a,"iterate",s?ca:fn),{next(){const{value:m,done:d}=l.next();return d?{value:m,done:d}:{value:c?[u(m[0]),u(m[1])]:u(m),done:d}},[Symbol.iterator](){return this}}}}function Nt(e){return function(...t){return e==="delete"?!1:this}}function nd(){const e={get(a){return To(this,a)},get size(){return Lo(this)},has:Io,add:Ii,set:Li,delete:Di,clear:Ri,forEach:Do(!1,!1)},t={get(a){return To(this,a,!1,!0)},get size(){return Lo(this)},has:Io,add:Ii,set:Li,delete:Di,clear:Ri,forEach:Do(!1,!0)},n={get(a){return To(this,a,!0)},get size(){return Lo(this,!0)},has(a){return Io.call(this,a,!0)},add:Nt("add"),set:Nt("set"),delete:Nt("delete"),clear:Nt("clear"),forEach:Do(!0,!1)},o={get(a){return To(this,a,!0,!0)},get size(){return Lo(this,!0)},has(a){return Io.call(this,a,!0)},add:Nt("add"),set:Nt("set"),delete:Nt("delete"),clear:Nt("clear"),forEach:Do(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(a=>{e[a]=Ro(a,!1,!1),n[a]=Ro(a,!0,!1),t[a]=Ro(a,!1,!0),o[a]=Ro(a,!0,!0)}),[e,n,t,o]}const[od,rd,ad,id]=nd();function Wa(e,t){const n=t?e?id:ad:e?rd:od;return(o,r,a)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?o:Reflect.get(ye(n,r)&&r in o?n:o,r,a)}const cd={get:Wa(!1,!1)},sd={get:Wa(!1,!0)},ld={get:Wa(!0,!1)},ul=new WeakMap,ml=new WeakMap,dl=new WeakMap,ud=new WeakMap;function md(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function dd(e){return e.__v_skip||!Object.isExtensible(e)?0:md(Cm(e))}function Vn(e){return xn(e)?e:Ya(e,!1,ll,cd,ul)}function fd(e){return Ya(e,!1,td,sd,ml)}function Ka(e){return Ya(e,!0,ed,ld,dl)}function Ya(e,t,n,o,r){if(!Ve(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=r.get(e);if(a)return a;const i=dd(e);if(i===0)return e;const c=new Proxy(e,i===2?o:n);return r.set(e,c),c}function Ln(e){return xn(e)?Ln(e.__v_raw):!!(e&&e.__v_isReactive)}function xn(e){return!!(e&&e.__v_isReadonly)}function Xo(e){return!!(e&&e.__v_isShallow)}function fl(e){return Ln(e)||xn(e)}function Oe(e){const t=e&&e.__v_raw;return t?Oe(t):e}function hl(e){return Zo(e,"__v_skip",!0),e}const lo=e=>Ve(e)?Vn(e):e,Ja=e=>Ve(e)?Ka(e):e;function pl(e){Yt&&ht&&(e=Oe(e),il(e.dep||(e.dep=Fa())))}function _l(e,t){e=Oe(e),e.dep&&sa(e.dep)}function ze(e){return!!(e&&e.__v_isRef===!0)}function De(e){return gl(e,!1)}function vl(e){return gl(e,!0)}function gl(e,t){return ze(e)?e:new hd(e,t)}class hd{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:Oe(t),this._value=n?t:lo(t)}get value(){return pl(this),this._value}set value(t){const n=this.__v_isShallow||Xo(t)||xn(t);t=n?t:Oe(t),so(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:lo(t),_l(this))}}function F(e){return ze(e)?e.value:e}const pd={get:(e,t,n)=>F(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const r=e[t];return ze(r)&&!ze(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function bl(e){return Ln(e)?e:new Proxy(e,pd)}function Qa(e){const t=ce(e)?new Array(e.length):{};for(const n in e)t[n]=vd(e,n);return t}class _d{constructor(t,n,o){this._object=t,this._key=n,this._defaultValue=o,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function vd(e,t,n){const o=e[t];return ze(o)?o:new _d(e,t,n)}var yl;class gd{constructor(t,n,o,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this[yl]=!1,this._dirty=!0,this.effect=new Ba(t,()=>{this._dirty||(this._dirty=!0,_l(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=o}get value(){const t=Oe(this);return pl(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}yl="__v_isReadonly";function bd(e,t,n=!1){let o,r;const a=he(e);return a?(o=e,r=_t):(o=e.get,r=e.set),new gd(o,r,a||!r,n)}function Jt(e,t,n,o){let r;try{r=o?e(...o):e()}catch(a){Eo(a,t,n)}return r}function ut(e,t,n,o){if(he(e)){const a=Jt(e,t,n,o);return a&&Xs(a)&&a.catch(i=>{Eo(i,t,n)}),a}const r=[];for(let a=0;a>>1;uo(Qe[o])Ot&&Qe.splice(t,1)}function Od(e){ce(e)?Dn.push(...e):(!xt||!xt.includes(e,e.allowRecurse?ln+1:ln))&&Dn.push(e),wl()}function ki(e,t=Ot){for(;tuo(n)-uo(o)),ln=0;lne.id==null?1/0:e.id,Pd=(e,t)=>{const n=uo(e)-uo(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Ol(e){la=!1,er=!0,Qe.sort(Pd);const t=_t;try{for(Ot=0;Otf.trim())),m&&(r=n.map(nl))}let c,s=o[c=Hr(t)]||o[c=Hr(Tt(t))];!s&&a&&(s=o[c=Hr(_n(t))]),s&&ut(s,e,6,r);const l=o[c+"Once"];if(l){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,ut(l,e,6,r)}}function Pl(e,t,n=!1){const o=t.emitsCache,r=o.get(e);if(r!==void 0)return r;const a=e.emits;let i={},c=!1;if(!he(e)){const s=l=>{const u=Pl(l,t,!0);u&&(c=!0,Ye(i,u))};!n&&t.mixins.length&&t.mixins.forEach(s),e.extends&&s(e.extends),e.mixins&&e.mixins.forEach(s)}return!a&&!c?(Ve(e)&&o.set(e,null),null):(ce(a)?a.forEach(s=>i[s]=null):Ye(i,a),Ve(e)&&o.set(e,i),i)}function Ar(e,t){return!e||!yo(t)?!1:(t=t.slice(2).replace(/Once$/,""),ye(e,t[0].toLowerCase()+t.slice(1))||ye(e,_n(t))||ye(e,t))}let Ge=null,Sl=null;function nr(e){const t=Ge;return Ge=e,Sl=e&&e.type.__scopeId||null,t}function Ke(e,t=Ge,n){if(!t||e._n)return e;const o=(...r)=>{o._d&&Bi(-1);const a=nr(t),i=e(...r);return nr(a),o._d&&Bi(1),i};return o._n=!0,o._c=!0,o._d=!0,o}function qr(e){const{type:t,vnode:n,proxy:o,withProxy:r,props:a,propsOptions:[i],slots:c,attrs:s,emit:l,render:u,renderCache:m,data:d,setupState:f,ctx:v,inheritAttrs:g}=e;let b,_;const y=nr(e);try{if(n.shapeFlag&4){const A=r||o;b=ft(u.call(A,A,m,a,f,d,v)),_=s}else{const A=t;b=ft(A.length>1?A(a,{attrs:s,slots:c,emit:l}):A(a,null)),_=t.props?s:Ad(s)}}catch(A){no.length=0,Eo(A,e,1),b=ie(it)}let S=b;if(_&&g!==!1){const A=Object.keys(_),{shapeFlag:D}=S;A.length&&D&7&&(i&&A.some($a)&&(_=Td(_,i)),S=Gt(S,_))}return n.dirs&&(S=Gt(S),S.dirs=S.dirs?S.dirs.concat(n.dirs):n.dirs),n.transition&&(S.transition=n.transition),b=S,nr(y),b}const Ad=e=>{let t;for(const n in e)(n==="class"||n==="style"||yo(n))&&((t||(t={}))[n]=e[n]);return t},Td=(e,t)=>{const n={};for(const o in e)(!$a(o)||!(o.slice(9)in t))&&(n[o]=e[o]);return n};function Id(e,t,n){const{props:o,children:r,component:a}=e,{props:i,children:c,patchFlag:s}=t,l=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&s>=0){if(s&1024)return!0;if(s&16)return o?xi(o,i,l):!!i;if(s&8){const u=t.dynamicProps;for(let m=0;me.__isSuspense;function Al(e,t){t&&t.pendingBranch?ce(e)?t.effects.push(...e):t.effects.push(e):Od(e)}function hn(e,t){if(Be){let n=Be.provides;const o=Be.parent&&Be.parent.provides;o===n&&(n=Be.provides=Object.create(o)),n[e]=t}}function We(e,t,n=!1){const o=Be||Ge;if(o){const r=o.parent==null?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&he(t)?t.call(o.proxy):t}}const Ci={};function ot(e,t,n){return Tl(e,t,n)}function Tl(e,t,{immediate:n,deep:o,flush:r,onTrack:a,onTrigger:i}=Ce){const c=Be;let s,l=!1,u=!1;if(ze(e)?(s=()=>e.value,l=Xo(e)):Ln(e)?(s=()=>e,o=!0):ce(e)?(u=!0,l=e.some(_=>Ln(_)||Xo(_)),s=()=>e.map(_=>{if(ze(_))return _.value;if(Ln(_))return dn(_);if(he(_))return Jt(_,c,2)})):he(e)?t?s=()=>Jt(e,c,2):s=()=>{if(!(c&&c.isUnmounted))return m&&m(),ut(e,c,3,[d])}:s=_t,t&&o){const _=s;s=()=>dn(_())}let m,d=_=>{m=b.onStop=()=>{Jt(_,c,4)}};if(Mn)return d=_t,t?n&&ut(t,c,3,[s(),u?[]:void 0,d]):s(),_t;let f=u?[]:Ci;const v=()=>{if(!!b.active)if(t){const _=b.run();(o||l||(u?_.some((y,S)=>so(y,f[S])):so(_,f)))&&(m&&m(),ut(t,c,3,[_,f===Ci?void 0:f,d]),f=_)}else b.run()};v.allowRecurse=!!t;let g;r==="sync"?g=v:r==="post"?g=()=>tt(v,c&&c.suspense):(v.pre=!0,c&&(v.id=c.uid),g=()=>Sr(v));const b=new Ba(s,g);return t?n?v():f=b.run():r==="post"?tt(b.run.bind(b),c&&c.suspense):b.run(),()=>{b.stop(),c&&c.scope&&qa(c.scope.effects,b)}}function Rd(e,t,n){const o=this.proxy,r=Le(e)?e.includes(".")?Il(o,e):()=>o[e]:e.bind(o,o);let a;he(t)?a=t:(a=t.handler,n=t);const i=Be;Cn(this);const c=Tl(r,a.bind(o),n);return i?Cn(i):pn(),c}function Il(e,t){const n=t.split(".");return()=>{let o=e;for(let r=0;r{dn(n,t)});else if(tl(e))for(const n in e)dn(e[n],t);return e}function kd(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return et(()=>{e.isMounted=!0}),Ir(()=>{e.isUnmounting=!0}),e}const st=[Function,Array],xd={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:st,onEnter:st,onAfterEnter:st,onEnterCancelled:st,onBeforeLeave:st,onLeave:st,onAfterLeave:st,onLeaveCancelled:st,onBeforeAppear:st,onAppear:st,onAfterAppear:st,onAppearCancelled:st},setup(e,{slots:t}){const n=ni(),o=kd();let r;return()=>{const a=t.default&&Rl(t.default(),!0);if(!a||!a.length)return;let i=a[0];if(a.length>1){for(const g of a)if(g.type!==it){i=g;break}}const c=Oe(e),{mode:s}=c;if(o.isLeaving)return Vr(i);const l=Mi(i);if(!l)return Vr(i);const u=ua(l,c,o,n);ma(l,u);const m=n.subTree,d=m&&Mi(m);let f=!1;const{getTransitionKey:v}=l.type;if(v){const g=v();r===void 0?r=g:g!==r&&(r=g,f=!0)}if(d&&d.type!==it&&(!un(l,d)||f)){const g=ua(d,c,o,n);if(ma(d,g),s==="out-in")return o.isLeaving=!0,g.afterLeave=()=>{o.isLeaving=!1,n.update()},Vr(i);s==="in-out"&&l.type!==it&&(g.delayLeave=(b,_,y)=>{const S=Dl(o,d);S[String(d.key)]=d,b._leaveCb=()=>{_(),b._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=y})}return i}}},Ll=xd;function Dl(e,t){const{leavingVNodes:n}=e;let o=n.get(t.type);return o||(o=Object.create(null),n.set(t.type,o)),o}function ua(e,t,n,o){const{appear:r,mode:a,persisted:i=!1,onBeforeEnter:c,onEnter:s,onAfterEnter:l,onEnterCancelled:u,onBeforeLeave:m,onLeave:d,onAfterLeave:f,onLeaveCancelled:v,onBeforeAppear:g,onAppear:b,onAfterAppear:_,onAppearCancelled:y}=t,S=String(e.key),A=Dl(n,e),D=(E,U)=>{E&&ut(E,o,9,U)},K=(E,U)=>{const Y=U[1];D(E,U),ce(E)?E.every(H=>H.length<=1)&&Y():E.length<=1&&Y()},R={mode:a,persisted:i,beforeEnter(E){let U=c;if(!n.isMounted)if(r)U=g||c;else return;E._leaveCb&&E._leaveCb(!0);const Y=A[S];Y&&un(e,Y)&&Y.el._leaveCb&&Y.el._leaveCb(),D(U,[E])},enter(E){let U=s,Y=l,H=u;if(!n.isMounted)if(r)U=b||s,Y=_||l,H=y||u;else return;let P=!1;const T=E._enterCb=k=>{P||(P=!0,k?D(H,[E]):D(Y,[E]),R.delayedLeave&&R.delayedLeave(),E._enterCb=void 0)};U?K(U,[E,T]):T()},leave(E,U){const Y=String(e.key);if(E._enterCb&&E._enterCb(!0),n.isUnmounting)return U();D(m,[E]);let H=!1;const P=E._leaveCb=T=>{H||(H=!0,U(),T?D(v,[E]):D(f,[E]),E._leaveCb=void 0,A[Y]===e&&delete A[Y])};A[Y]=e,d?K(d,[E,P]):P()},clone(E){return ua(E,t,n,o)}};return R}function Vr(e){if(Oo(e))return e=Gt(e),e.children=null,e}function Mi(e){return Oo(e)?e.children?e.children[0]:void 0:e}function ma(e,t){e.shapeFlag&6&&e.component?ma(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Rl(e,t=!1,n){let o=[],r=0;for(let a=0;a1)for(let a=0;a!!e.type.__asyncLoader;function L(e){he(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:o,delay:r=200,timeout:a,suspensible:i=!0,onError:c}=e;let s=null,l,u=0;const m=()=>(u++,s=null,d()),d=()=>{let f;return s||(f=s=t().catch(v=>{if(v=v instanceof Error?v:new Error(String(v)),c)return new Promise((g,b)=>{c(v,()=>g(m()),()=>b(v),u+1)});throw v}).then(v=>f!==s&&s?s:(v&&(v.__esModule||v[Symbol.toStringTag]==="Module")&&(v=v.default),l=v,v)))};return je({name:"AsyncComponentWrapper",__asyncLoader:d,get __asyncResolved(){return l},setup(){const f=Be;if(l)return()=>Nr(l,f);const v=y=>{s=null,Eo(y,f,13,!o)};if(i&&f.suspense||Mn)return d().then(y=>()=>Nr(y,f)).catch(y=>(v(y),()=>o?ie(o,{error:y}):null));const g=De(!1),b=De(),_=De(!!r);return r&&setTimeout(()=>{_.value=!1},r),a!=null&&setTimeout(()=>{if(!g.value&&!b.value){const y=new Error(`Async component timed out after ${a}ms.`);v(y),b.value=y}},a),d().then(()=>{g.value=!0,f.parent&&Oo(f.parent.vnode)&&Sr(f.parent.update)}).catch(y=>{v(y),b.value=y}),()=>{if(g.value&&l)return Nr(l,f);if(b.value&&o)return ie(o,{error:b.value});if(n&&!_.value)return ie(n)}}})}function Nr(e,{vnode:{ref:t,props:n,children:o,shapeFlag:r},parent:a}){const i=ie(e,n,o);return i.ref=t,i}const Oo=e=>e.type.__isKeepAlive;function Cd(e,t){kl(e,"a",t)}function Md(e,t){kl(e,"da",t)}function kl(e,t,n=Be){const o=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Tr(t,o,n),n){let r=n.parent;for(;r&&r.parent;)Oo(r.parent.vnode)&&jd(o,t,n,r),r=r.parent}}function jd(e,t,n,o){const r=Tr(t,e,o,!0);Lr(()=>{qa(o[t],r)},n)}function Tr(e,t,n=Be,o=!1){if(n){const r=n[e]||(n[e]=[]),a=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;$n(),Cn(n);const c=ut(t,n,e,i);return pn(),qn(),c});return o?r.unshift(a):r.push(a),a}}const Vt=e=>(t,n=Be)=>(!Mn||e==="sp")&&Tr(e,t,n),Za=Vt("bm"),et=Vt("m"),Hd=Vt("bu"),$d=Vt("u"),Ir=Vt("bum"),Lr=Vt("um"),qd=Vt("sp"),Vd=Vt("rtg"),Nd=Vt("rtc");function Fd(e,t=Be){Tr("ec",e,t)}function or(e,t){const n=Ge;if(n===null)return e;const o=Rr(n)||n.proxy,r=e.dirs||(e.dirs=[]);for(let a=0;at(i,c,void 0,a&&a[c]));else{const i=Object.keys(e);r=new Array(i.length);for(let c=0,s=i.length;ccr(t)?!(t.type===it||t.type===Ae&&!Ml(t.children)):!0)?e:null}const da=e=>e?Kl(e)?Rr(e)||e.proxy:da(e.parent):null,rr=Ye(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>da(e.parent),$root:e=>da(e.root),$emit:e=>e.emit,$options:e=>Hl(e),$forceUpdate:e=>e.f||(e.f=()=>Sr(e.update)),$nextTick:e=>e.n||(e.n=wo.bind(e.proxy)),$watch:e=>Rd.bind(e)}),zd={get({_:e},t){const{ctx:n,setupState:o,data:r,props:a,accessCache:i,type:c,appContext:s}=e;let l;if(t[0]!=="$"){const f=i[t];if(f!==void 0)switch(f){case 1:return o[t];case 2:return r[t];case 4:return n[t];case 3:return a[t]}else{if(o!==Ce&&ye(o,t))return i[t]=1,o[t];if(r!==Ce&&ye(r,t))return i[t]=2,r[t];if((l=e.propsOptions[0])&&ye(l,t))return i[t]=3,a[t];if(n!==Ce&&ye(n,t))return i[t]=4,n[t];fa&&(i[t]=0)}}const u=rr[t];let m,d;if(u)return t==="$attrs"&&ct(e,"get",t),u(e);if((m=c.__cssModules)&&(m=m[t]))return m;if(n!==Ce&&ye(n,t))return i[t]=4,n[t];if(d=s.config.globalProperties,ye(d,t))return d[t]},set({_:e},t,n){const{data:o,setupState:r,ctx:a}=e;return r!==Ce&&ye(r,t)?(r[t]=n,!0):o!==Ce&&ye(o,t)?(o[t]=n,!0):ye(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(a[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:o,appContext:r,propsOptions:a}},i){let c;return!!n[i]||e!==Ce&&ye(e,i)||t!==Ce&&ye(t,i)||(c=a[0])&&ye(c,i)||ye(o,i)||ye(rr,i)||ye(r.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ye(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let fa=!0;function Ud(e){const t=Hl(e),n=e.proxy,o=e.ctx;fa=!1,t.beforeCreate&&Hi(t.beforeCreate,e,"bc");const{data:r,computed:a,methods:i,watch:c,provide:s,inject:l,created:u,beforeMount:m,mounted:d,beforeUpdate:f,updated:v,activated:g,deactivated:b,beforeDestroy:_,beforeUnmount:y,destroyed:S,unmounted:A,render:D,renderTracked:K,renderTriggered:R,errorCaptured:E,serverPrefetch:U,expose:Y,inheritAttrs:H,components:P,directives:T,filters:k}=t;if(l&&Wd(l,o,null,e.appContext.config.unwrapInjectedRef),i)for(const W in i){const ee=i[W];he(ee)&&(o[W]=ee.bind(n))}if(r){const W=r.call(n,n);Ve(W)&&(e.data=Vn(W))}if(fa=!0,a)for(const W in a){const ee=a[W],me=he(ee)?ee.bind(n,n):he(ee.get)?ee.get.bind(n,n):_t,de=!he(ee)&&he(ee.set)?ee.set.bind(n):_t,ve=te({get:me,set:de});Object.defineProperty(o,W,{enumerable:!0,configurable:!0,get:()=>ve.value,set:Se=>ve.value=Se})}if(c)for(const W in c)jl(c[W],o,n,W);if(s){const W=he(s)?s.call(n):s;Reflect.ownKeys(W).forEach(ee=>{hn(ee,W[ee])})}u&&Hi(u,e,"c");function j(W,ee){ce(ee)?ee.forEach(me=>W(me.bind(n))):ee&&W(ee.bind(n))}if(j(Za,m),j(et,d),j(Hd,f),j($d,v),j(Cd,g),j(Md,b),j(Fd,E),j(Nd,K),j(Vd,R),j(Ir,y),j(Lr,A),j(qd,U),ce(Y))if(Y.length){const W=e.exposed||(e.exposed={});Y.forEach(ee=>{Object.defineProperty(W,ee,{get:()=>n[ee],set:me=>n[ee]=me})})}else e.exposed||(e.exposed={});D&&e.render===_t&&(e.render=D),H!=null&&(e.inheritAttrs=H),P&&(e.components=P),T&&(e.directives=T)}function Wd(e,t,n=_t,o=!1){ce(e)&&(e=ha(e));for(const r in e){const a=e[r];let i;Ve(a)?"default"in a?i=We(a.from||r,a.default,!0):i=We(a.from||r):i=We(a),ze(i)&&o?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>i.value,set:c=>i.value=c}):t[r]=i}}function Hi(e,t,n){ut(ce(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,n)}function jl(e,t,n,o){const r=o.includes(".")?Il(n,o):()=>n[o];if(Le(e)){const a=t[e];he(a)&&ot(r,a)}else if(he(e))ot(r,e.bind(n));else if(Ve(e))if(ce(e))e.forEach(a=>jl(a,t,n,o));else{const a=he(e.handler)?e.handler.bind(n):t[e.handler];he(a)&&ot(r,a,e)}}function Hl(e){const t=e.type,{mixins:n,extends:o}=t,{mixins:r,optionsCache:a,config:{optionMergeStrategies:i}}=e.appContext,c=a.get(t);let s;return c?s=c:!r.length&&!n&&!o?s=t:(s={},r.length&&r.forEach(l=>ar(s,l,i,!0)),ar(s,t,i)),Ve(t)&&a.set(t,s),s}function ar(e,t,n,o=!1){const{mixins:r,extends:a}=t;a&&ar(e,a,n,!0),r&&r.forEach(i=>ar(e,i,n,!0));for(const i in t)if(!(o&&i==="expose")){const c=Kd[i]||n&&n[i];e[i]=c?c(e[i],t[i]):t[i]}return e}const Kd={data:$i,props:an,emits:an,methods:an,computed:an,beforeCreate:Ze,created:Ze,beforeMount:Ze,mounted:Ze,beforeUpdate:Ze,updated:Ze,beforeDestroy:Ze,beforeUnmount:Ze,destroyed:Ze,unmounted:Ze,activated:Ze,deactivated:Ze,errorCaptured:Ze,serverPrefetch:Ze,components:an,directives:an,watch:Jd,provide:$i,inject:Yd};function $i(e,t){return t?e?function(){return Ye(he(e)?e.call(this,this):e,he(t)?t.call(this,this):t)}:t:e}function Yd(e,t){return an(ha(e),ha(t))}function ha(e){if(ce(e)){const t={};for(let n=0;n0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let m=0;m{s=!0;const[d,f]=ql(m,t,!0);Ye(i,d),f&&c.push(...f)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!a&&!s)return Ve(e)&&o.set(e,Tn),Tn;if(ce(a))for(let u=0;u-1,f[1]=g<0||v-1||ye(f,"default"))&&c.push(m)}}}const l=[i,c];return Ve(e)&&o.set(e,l),l}function qi(e){return e[0]!=="$"}function Vi(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function Ni(e,t){return Vi(e)===Vi(t)}function Fi(e,t){return ce(t)?t.findIndex(n=>Ni(n,e)):he(t)&&Ni(t,e)?0:-1}const Vl=e=>e[0]==="_"||e==="$stable",ei=e=>ce(e)?e.map(ft):[ft(e)],Zd=(e,t,n)=>{if(t._n)return t;const o=Ke((...r)=>ei(t(...r)),n);return o._c=!1,o},Nl=(e,t,n)=>{const o=e._ctx;for(const r in e){if(Vl(r))continue;const a=e[r];if(he(a))t[r]=Zd(r,a,o);else if(a!=null){const i=ei(a);t[r]=()=>i}}},Fl=(e,t)=>{const n=ei(t);e.slots.default=()=>n},Xd=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=Oe(t),Zo(t,"_",n)):Nl(t,e.slots={})}else e.slots={},t&&Fl(e,t);Zo(e.slots,Dr,1)},ef=(e,t,n)=>{const{vnode:o,slots:r}=e;let a=!0,i=Ce;if(o.shapeFlag&32){const c=t._;c?n&&c===1?a=!1:(Ye(r,t),!n&&c===1&&delete r._):(a=!t.$stable,Nl(t,r)),i=t}else t&&(Fl(e,t),i={default:1});if(a)for(const c in r)!Vl(c)&&!(c in i)&&delete r[c]};function Bl(){return{app:null,config:{isNativeTag:Rm,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let tf=0;function nf(e,t){return function(o,r=null){he(o)||(o=Object.assign({},o)),r!=null&&!Ve(r)&&(r=null);const a=Bl(),i=new Set;let c=!1;const s=a.app={_uid:tf++,_component:o,_props:r,_container:null,_context:a,_instance:null,version:wf,get config(){return a.config},set config(l){},use(l,...u){return i.has(l)||(l&&he(l.install)?(i.add(l),l.install(s,...u)):he(l)&&(i.add(l),l(s,...u))),s},mixin(l){return a.mixins.includes(l)||a.mixins.push(l),s},component(l,u){return u?(a.components[l]=u,s):a.components[l]},directive(l,u){return u?(a.directives[l]=u,s):a.directives[l]},mount(l,u,m){if(!c){const d=ie(o,r);return d.appContext=a,u&&t?t(d,l):e(d,l,m),c=!0,s._container=l,l.__vue_app__=s,Rr(d.component)||d.component.proxy}},unmount(){c&&(e(null,s._container),delete s._container.__vue_app__)},provide(l,u){return a.provides[l]=u,s}};return s}}function ir(e,t,n,o,r=!1){if(ce(e)){e.forEach((d,f)=>ir(d,t&&(ce(t)?t[f]:t),n,o,r));return}if(Rn(o)&&!r)return;const a=o.shapeFlag&4?Rr(o.component)||o.component.proxy:o.el,i=r?null:a,{i:c,r:s}=e,l=t&&t.r,u=c.refs===Ce?c.refs={}:c.refs,m=c.setupState;if(l!=null&&l!==s&&(Le(l)?(u[l]=null,ye(m,l)&&(m[l]=null)):ze(l)&&(l.value=null)),he(s))Jt(s,c,12,[i,u]);else{const d=Le(s),f=ze(s);if(d||f){const v=()=>{if(e.f){const g=d?u[s]:s.value;r?ce(g)&&qa(g,a):ce(g)?g.includes(a)||g.push(a):d?(u[s]=[a],ye(m,s)&&(m[s]=u[s])):(s.value=[a],e.k&&(u[e.k]=s.value))}else d?(u[s]=i,ye(m,s)&&(m[s]=i)):f&&(s.value=i,e.k&&(u[e.k]=i))};i?(v.id=-1,tt(v,n)):v()}}}let Ft=!1;const ko=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",xo=e=>e.nodeType===8;function of(e){const{mt:t,p:n,o:{patchProp:o,createText:r,nextSibling:a,parentNode:i,remove:c,insert:s,createComment:l}}=e,u=(_,y)=>{if(!y.hasChildNodes()){n(null,_,y),tr(),y._vnode=_;return}Ft=!1,m(y.firstChild,_,null,null,null),tr(),y._vnode=_,Ft&&console.error("Hydration completed but contains mismatches.")},m=(_,y,S,A,D,K=!1)=>{const R=xo(_)&&_.data==="[",E=()=>g(_,y,S,A,D,R),{type:U,ref:Y,shapeFlag:H,patchFlag:P}=y,T=_.nodeType;y.el=_,P===-2&&(K=!1,y.dynamicChildren=null);let k=null;switch(U){case mo:T!==3?y.children===""?(s(y.el=r(""),i(_),_),k=_):k=E():(_.data!==y.children&&(Ft=!0,_.data=y.children),k=a(_));break;case it:T!==8||R?k=E():k=a(_);break;case to:if(T!==1&&T!==3)k=E();else{k=_;const M=!y.children.length;for(let j=0;j{K=K||!!y.dynamicChildren;const{type:R,props:E,patchFlag:U,shapeFlag:Y,dirs:H}=y,P=R==="input"&&H||R==="option";if(P||U!==-1){if(H&&yt(y,null,S,"created"),E)if(P||!K||U&48)for(const k in E)(P&&k.endsWith("value")||yo(k)&&!eo(k))&&o(_,k,null,E[k],!1,void 0,S);else E.onClick&&o(_,"onClick",null,E.onClick,!1,void 0,S);let T;if((T=E&&E.onVnodeBeforeMount)&<(T,S,y),H&&yt(y,null,S,"beforeMount"),((T=E&&E.onVnodeMounted)||H)&&Al(()=>{T&<(T,S,y),H&&yt(y,null,S,"mounted")},A),Y&16&&!(E&&(E.innerHTML||E.textContent))){let k=f(_.firstChild,y,_,S,A,D,K);for(;k;){Ft=!0;const M=k;k=k.nextSibling,c(M)}}else Y&8&&_.textContent!==y.children&&(Ft=!0,_.textContent=y.children)}return _.nextSibling},f=(_,y,S,A,D,K,R)=>{R=R||!!y.dynamicChildren;const E=y.children,U=E.length;for(let Y=0;Y{const{slotScopeIds:R}=y;R&&(D=D?D.concat(R):R);const E=i(_),U=f(a(_),y,E,S,A,D,K);return U&&xo(U)&&U.data==="]"?a(y.anchor=U):(Ft=!0,s(y.anchor=l("]"),E,U),U)},g=(_,y,S,A,D,K)=>{if(Ft=!0,y.el=null,K){const U=b(_);for(;;){const Y=a(_);if(Y&&Y!==U)c(Y);else break}}const R=a(_),E=i(_);return c(_),n(null,y,E,R,S,A,ko(E),D),R},b=_=>{let y=0;for(;_;)if(_=a(_),_&&xo(_)&&(_.data==="["&&y++,_.data==="]")){if(y===0)return a(_);y--}return _};return[u,m]}const tt=Al;function rf(e){return af(e,of)}function af(e,t){const n=Hm();n.__VUE__=!0;const{insert:o,remove:r,patchProp:a,createElement:i,createText:c,createComment:s,setText:l,setElementText:u,parentNode:m,nextSibling:d,setScopeId:f=_t,cloneNode:v,insertStaticContent:g}=e,b=(p,w,I,C=null,$=null,q=null,J=!1,z=null,Q=!!w.dynamicChildren)=>{if(p===w)return;p&&!un(p,w)&&(C=G(p),Re(p,$,q,!0),p=null),w.patchFlag===-2&&(Q=!1,w.dynamicChildren=null);const{type:B,ref:re,shapeFlag:oe}=w;switch(B){case mo:_(p,w,I,C);break;case it:y(p,w,I,C);break;case to:p==null&&S(w,I,C,J);break;case Ae:T(p,w,I,C,$,q,J,z,Q);break;default:oe&1?K(p,w,I,C,$,q,J,z,Q):oe&6?k(p,w,I,C,$,q,J,z,Q):(oe&64||oe&128)&&B.process(p,w,I,C,$,q,J,z,Q,be)}re!=null&&$&&ir(re,p&&p.ref,q,w||p,!w)},_=(p,w,I,C)=>{if(p==null)o(w.el=c(w.children),I,C);else{const $=w.el=p.el;w.children!==p.children&&l($,w.children)}},y=(p,w,I,C)=>{p==null?o(w.el=s(w.children||""),I,C):w.el=p.el},S=(p,w,I,C)=>{[p.el,p.anchor]=g(p.children,w,I,C,p.el,p.anchor)},A=({el:p,anchor:w},I,C)=>{let $;for(;p&&p!==w;)$=d(p),o(p,I,C),p=$;o(w,I,C)},D=({el:p,anchor:w})=>{let I;for(;p&&p!==w;)I=d(p),r(p),p=I;r(w)},K=(p,w,I,C,$,q,J,z,Q)=>{J=J||w.type==="svg",p==null?R(w,I,C,$,q,J,z,Q):Y(p,w,$,q,J,z,Q)},R=(p,w,I,C,$,q,J,z)=>{let Q,B;const{type:re,props:oe,shapeFlag:ne,transition:se,patchFlag:_e,dirs:ke}=p;if(p.el&&v!==void 0&&_e===-1)Q=p.el=v(p.el);else{if(Q=p.el=i(p.type,q,oe&&oe.is,oe),ne&8?u(Q,p.children):ne&16&&U(p.children,Q,null,C,$,q&&re!=="foreignObject",J,z),ke&&yt(p,null,C,"created"),oe){for(const qe in oe)qe!=="value"&&!eo(qe)&&a(Q,qe,null,oe[qe],q,p.children,C,$,N);"value"in oe&&a(Q,"value",null,oe.value),(B=oe.onVnodeBeforeMount)&<(B,C,p)}E(Q,p,p.scopeId,J,C)}ke&&yt(p,null,C,"beforeMount");const xe=(!$||$&&!$.pendingBranch)&&se&&!se.persisted;xe&&se.beforeEnter(Q),o(Q,w,I),((B=oe&&oe.onVnodeMounted)||xe||ke)&&tt(()=>{B&<(B,C,p),xe&&se.enter(Q),ke&&yt(p,null,C,"mounted")},$)},E=(p,w,I,C,$)=>{if(I&&f(p,I),C)for(let q=0;q{for(let B=Q;B{const z=w.el=p.el;let{patchFlag:Q,dynamicChildren:B,dirs:re}=w;Q|=p.patchFlag&16;const oe=p.props||Ce,ne=w.props||Ce;let se;I&&en(I,!1),(se=ne.onVnodeBeforeUpdate)&<(se,I,w,p),re&&yt(w,p,I,"beforeUpdate"),I&&en(I,!0);const _e=$&&w.type!=="foreignObject";if(B?H(p.dynamicChildren,B,z,I,C,_e,q):J||me(p,w,z,null,I,C,_e,q,!1),Q>0){if(Q&16)P(z,w,oe,ne,I,C,$);else if(Q&2&&oe.class!==ne.class&&a(z,"class",null,ne.class,$),Q&4&&a(z,"style",oe.style,ne.style,$),Q&8){const ke=w.dynamicProps;for(let xe=0;xe{se&<(se,I,w,p),re&&yt(w,p,I,"updated")},C)},H=(p,w,I,C,$,q,J)=>{for(let z=0;z{if(I!==C){for(const z in C){if(eo(z))continue;const Q=C[z],B=I[z];Q!==B&&z!=="value"&&a(p,z,B,Q,J,w.children,$,q,N)}if(I!==Ce)for(const z in I)!eo(z)&&!(z in C)&&a(p,z,I[z],null,J,w.children,$,q,N);"value"in C&&a(p,"value",I.value,C.value)}},T=(p,w,I,C,$,q,J,z,Q)=>{const B=w.el=p?p.el:c(""),re=w.anchor=p?p.anchor:c("");let{patchFlag:oe,dynamicChildren:ne,slotScopeIds:se}=w;se&&(z=z?z.concat(se):se),p==null?(o(B,I,C),o(re,I,C),U(w.children,I,re,$,q,J,z,Q)):oe>0&&oe&64&&ne&&p.dynamicChildren?(H(p.dynamicChildren,ne,I,$,q,J,z),(w.key!=null||$&&w===$.subTree)&&zl(p,w,!0)):me(p,w,I,re,$,q,J,z,Q)},k=(p,w,I,C,$,q,J,z,Q)=>{w.slotScopeIds=z,p==null?w.shapeFlag&512?$.ctx.activate(w,I,C,J,Q):M(w,I,C,$,q,J,Q):j(p,w,Q)},M=(p,w,I,C,$,q,J)=>{const z=p.component=pf(p,C,$);if(Oo(p)&&(z.ctx.renderer=be),_f(z),z.asyncDep){if($&&$.registerDep(z,W),!p.el){const Q=z.subTree=ie(it);y(null,Q,w,I)}return}W(z,p,w,I,$,q,J)},j=(p,w,I)=>{const C=w.component=p.component;if(Id(p,w,I))if(C.asyncDep&&!C.asyncResolved){ee(C,w,I);return}else C.next=w,wd(C.update),C.update();else w.el=p.el,C.vnode=w},W=(p,w,I,C,$,q,J)=>{const z=()=>{if(p.isMounted){let{next:re,bu:oe,u:ne,parent:se,vnode:_e}=p,ke=re,xe;en(p,!1),re?(re.el=_e.el,ee(p,re,J)):re=_e,oe&&$r(oe),(xe=re.props&&re.props.onVnodeBeforeUpdate)&<(xe,se,re,_e),en(p,!0);const qe=qr(p),dt=p.subTree;p.subTree=qe,b(dt,qe,m(dt.el),G(dt),p,$,q),re.el=qe.el,ke===null&&Ld(p,qe.el),ne&&tt(ne,$),(xe=re.props&&re.props.onVnodeUpdated)&&tt(()=>lt(xe,se,re,_e),$)}else{let re;const{el:oe,props:ne}=w,{bm:se,m:_e,parent:ke}=p,xe=Rn(w);if(en(p,!1),se&&$r(se),!xe&&(re=ne&&ne.onVnodeBeforeMount)&<(re,ke,w),en(p,!0),oe&&le){const qe=()=>{p.subTree=qr(p),le(oe,p.subTree,p,$,null)};xe?w.type.__asyncLoader().then(()=>!p.isUnmounted&&qe()):qe()}else{const qe=p.subTree=qr(p);b(null,qe,I,C,p,$,q),w.el=qe.el}if(_e&&tt(_e,$),!xe&&(re=ne&&ne.onVnodeMounted)){const qe=w;tt(()=>lt(re,ke,qe),$)}(w.shapeFlag&256||ke&&Rn(ke.vnode)&&ke.vnode.shapeFlag&256)&&p.a&&tt(p.a,$),p.isMounted=!0,w=I=C=null}},Q=p.effect=new Ba(z,()=>Sr(B),p.scope),B=p.update=()=>Q.run();B.id=p.uid,en(p,!0),B()},ee=(p,w,I)=>{w.component=p;const C=p.vnode.props;p.vnode=w,p.next=null,Gd(p,w.props,C,I),ef(p,w.children,I),$n(),ki(),qn()},me=(p,w,I,C,$,q,J,z,Q=!1)=>{const B=p&&p.children,re=p?p.shapeFlag:0,oe=w.children,{patchFlag:ne,shapeFlag:se}=w;if(ne>0){if(ne&128){ve(B,oe,I,C,$,q,J,z,Q);return}else if(ne&256){de(B,oe,I,C,$,q,J,z,Q);return}}se&8?(re&16&&N(B,$,q),oe!==B&&u(I,oe)):re&16?se&16?ve(B,oe,I,C,$,q,J,z,Q):N(B,$,q,!0):(re&8&&u(I,""),se&16&&U(oe,I,C,$,q,J,z,Q))},de=(p,w,I,C,$,q,J,z,Q)=>{p=p||Tn,w=w||Tn;const B=p.length,re=w.length,oe=Math.min(B,re);let ne;for(ne=0;nere?N(p,$,q,!0,!1,oe):U(w,I,C,$,q,J,z,Q,oe)},ve=(p,w,I,C,$,q,J,z,Q)=>{let B=0;const re=w.length;let oe=p.length-1,ne=re-1;for(;B<=oe&&B<=ne;){const se=p[B],_e=w[B]=Q?Ut(w[B]):ft(w[B]);if(un(se,_e))b(se,_e,I,null,$,q,J,z,Q);else break;B++}for(;B<=oe&&B<=ne;){const se=p[oe],_e=w[ne]=Q?Ut(w[ne]):ft(w[ne]);if(un(se,_e))b(se,_e,I,null,$,q,J,z,Q);else break;oe--,ne--}if(B>oe){if(B<=ne){const se=ne+1,_e=sene)for(;B<=oe;)Re(p[B],$,q,!0),B++;else{const se=B,_e=B,ke=new Map;for(B=_e;B<=ne;B++){const rt=w[B]=Q?Ut(w[B]):ft(w[B]);rt.key!=null&&ke.set(rt.key,B)}let xe,qe=0;const dt=ne-_e+1;let gn=!1,yi=0;const Bn=new Array(dt);for(B=0;B=dt){Re(rt,$,q,!0);continue}let bt;if(rt.key!=null)bt=ke.get(rt.key);else for(xe=_e;xe<=ne;xe++)if(Bn[xe-_e]===0&&un(rt,w[xe])){bt=xe;break}bt===void 0?Re(rt,$,q,!0):(Bn[bt-_e]=B+1,bt>=yi?yi=bt:gn=!0,b(rt,w[bt],I,null,$,q,J,z,Q),qe++)}const Ei=gn?cf(Bn):Tn;for(xe=Ei.length-1,B=dt-1;B>=0;B--){const rt=_e+B,bt=w[rt],wi=rt+1{const{el:q,type:J,transition:z,children:Q,shapeFlag:B}=p;if(B&6){Se(p.component.subTree,w,I,C);return}if(B&128){p.suspense.move(w,I,C);return}if(B&64){J.move(p,w,I,be);return}if(J===Ae){o(q,w,I);for(let oe=0;oez.enter(q),$);else{const{leave:oe,delayLeave:ne,afterLeave:se}=z,_e=()=>o(q,w,I),ke=()=>{oe(q,()=>{_e(),se&&se()})};ne?ne(q,_e,ke):ke()}else o(q,w,I)},Re=(p,w,I,C=!1,$=!1)=>{const{type:q,props:J,ref:z,children:Q,dynamicChildren:B,shapeFlag:re,patchFlag:oe,dirs:ne}=p;if(z!=null&&ir(z,null,I,p,!0),re&256){w.ctx.deactivate(p);return}const se=re&1&&ne,_e=!Rn(p);let ke;if(_e&&(ke=J&&J.onVnodeBeforeUnmount)&<(ke,w,p),re&6)Z(p.component,I,C);else{if(re&128){p.suspense.unmount(I,C);return}se&&yt(p,null,w,"beforeUnmount"),re&64?p.type.remove(p,w,I,$,be,C):B&&(q!==Ae||oe>0&&oe&64)?N(B,w,I,!1,!0):(q===Ae&&oe&384||!$&&re&16)&&N(Q,w,I),C&&Fe(p)}(_e&&(ke=J&&J.onVnodeUnmounted)||se)&&tt(()=>{ke&<(ke,w,p),se&&yt(p,null,w,"unmounted")},I)},Fe=p=>{const{type:w,el:I,anchor:C,transition:$}=p;if(w===Ae){x(I,C);return}if(w===to){D(p);return}const q=()=>{r(I),$&&!$.persisted&&$.afterLeave&&$.afterLeave()};if(p.shapeFlag&1&&$&&!$.persisted){const{leave:J,delayLeave:z}=$,Q=()=>J(I,q);z?z(p.el,q,Q):Q()}else q()},x=(p,w)=>{let I;for(;p!==w;)I=d(p),r(p),p=I;r(w)},Z=(p,w,I)=>{const{bum:C,scope:$,update:q,subTree:J,um:z}=p;C&&$r(C),$.stop(),q&&(q.active=!1,Re(J,p,w,I)),z&&tt(z,w),tt(()=>{p.isUnmounted=!0},w),w&&w.pendingBranch&&!w.isUnmounted&&p.asyncDep&&!p.asyncResolved&&p.suspenseId===w.pendingId&&(w.deps--,w.deps===0&&w.resolve())},N=(p,w,I,C=!1,$=!1,q=0)=>{for(let J=q;Jp.shapeFlag&6?G(p.component.subTree):p.shapeFlag&128?p.suspense.next():d(p.anchor||p.el),pe=(p,w,I)=>{p==null?w._vnode&&Re(w._vnode,null,null,!0):b(w._vnode||null,p,w,null,null,null,I),ki(),tr(),w._vnode=p},be={p:b,um:Re,m:Se,r:Fe,mt:M,mc:U,pc:me,pbc:H,n:G,o:e};let fe,le;return t&&([fe,le]=t(be)),{render:pe,hydrate:fe,createApp:nf(pe,fe)}}function en({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function zl(e,t,n=!1){const o=e.children,r=t.children;if(ce(o)&&ce(r))for(let a=0;a>1,e[n[c]]0&&(t[o]=n[a-1]),n[a]=o)}}for(a=n.length,i=n[a-1];a-- >0;)n[a]=i,i=t[i];return n}const sf=e=>e.__isTeleport,Ae=Symbol(void 0),mo=Symbol(void 0),it=Symbol(void 0),to=Symbol(void 0),no=[];let pt=null;function V(e=!1){no.push(pt=e?null:[])}function lf(){no.pop(),pt=no[no.length-1]||null}let fo=1;function Bi(e){fo+=e}function Ul(e){return e.dynamicChildren=fo>0?pt||Tn:null,lf(),fo>0&&pt&&pt.push(e),e}function X(e,t,n,o,r,a){return Ul(ue(e,t,n,o,r,a,!0))}function $e(e,t,n,o,r){return Ul(ie(e,t,n,o,r,!0))}function cr(e){return e?e.__v_isVNode===!0:!1}function un(e,t){return e.type===t.type&&e.key===t.key}const Dr="__vInternal",Wl=({key:e})=>e!=null?e:null,Uo=({ref:e,ref_key:t,ref_for:n})=>e!=null?Le(e)||ze(e)||he(e)?{i:Ge,r:e,k:t,f:!!n}:e:null;function ue(e,t=null,n=null,o=0,r=null,a=e===Ae?0:1,i=!1,c=!1){const s={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Wl(t),ref:t&&Uo(t),scopeId:Sl,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:o,dynamicProps:r,dynamicChildren:null,appContext:null};return c?(ti(s,n),a&128&&e.normalize(s)):n&&(s.shapeFlag|=Le(n)?8:16),fo>0&&!i&&pt&&(s.patchFlag>0||a&6)&&s.patchFlag!==32&&pt.push(s),s}const ie=uf;function uf(e,t=null,n=null,o=0,r=null,a=!1){if((!e||e===xl)&&(e=it),cr(e)){const c=Gt(e,t,!0);return n&&ti(c,n),fo>0&&!a&&pt&&(c.shapeFlag&6?pt[pt.indexOf(e)]=c:pt.push(c)),c.patchFlag|=-2,c}if(Ef(e)&&(e=e.__vccOpts),t){t=mf(t);let{class:c,style:s}=t;c&&!Le(c)&&(t.class=Ue(c)),Ve(s)&&(fl(s)&&!ce(s)&&(s=Ye({},s)),t.style=bo(s))}const i=Le(e)?1:Dd(e)?128:sf(e)?64:Ve(e)?4:he(e)?2:0;return ue(e,t,n,o,r,i,a,!0)}function mf(e){return e?fl(e)||Dr in e?Ye({},e):e:null}function Gt(e,t,n=!1){const{props:o,ref:r,patchFlag:a,children:i}=e,c=t?_a(o||{},t):o;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&Wl(c),ref:t&&t.ref?n&&r?ce(r)?r.concat(Uo(t)):[r,Uo(t)]:Uo(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ae?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Gt(e.ssContent),ssFallback:e.ssFallback&&Gt(e.ssFallback),el:e.el,anchor:e.anchor}}function Xt(e=" ",t=0){return ie(mo,null,e,t)}function df(e,t){const n=ie(to,null,e);return n.staticCount=t,n}function Ne(e="",t=!1){return t?(V(),$e(it,null,e)):ie(it,null,e)}function ft(e){return e==null||typeof e=="boolean"?ie(it):ce(e)?ie(Ae,null,e.slice()):typeof e=="object"?Ut(e):ie(mo,null,String(e))}function Ut(e){return e.el===null||e.memo?e:Gt(e)}function ti(e,t){let n=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(ce(t))n=16;else if(typeof t=="object")if(o&65){const r=t.default;r&&(r._c&&(r._d=!1),ti(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(Dr in t)?t._ctx=Ge:r===3&&Ge&&(Ge.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else he(t)?(t={default:t,_ctx:Ge},n=32):(t=String(t),o&64?(n=16,t=[Xt(t)]):n=8);e.children=t,e.shapeFlag|=n}function _a(...e){const t={};for(let n=0;nBe||Ge,Cn=e=>{Be=e,e.scope.on()},pn=()=>{Be&&Be.scope.off(),Be=null};function Kl(e){return e.vnode.shapeFlag&4}let Mn=!1;function _f(e,t=!1){Mn=t;const{props:n,children:o}=e.vnode,r=Kl(e);Qd(e,n,r,t),Xd(e,o);const a=r?vf(e,t):void 0;return Mn=!1,a}function vf(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=hl(new Proxy(e.ctx,zd));const{setup:o}=n;if(o){const r=e.setupContext=o.length>1?bf(e):null;Cn(e),$n();const a=Jt(o,e,0,[e.props,r]);if(qn(),pn(),Xs(a)){if(a.then(pn,pn),t)return a.then(i=>{zi(e,i,t)}).catch(i=>{Eo(i,e,0)});e.asyncDep=a}else zi(e,a,t)}else Yl(e,t)}function zi(e,t,n){he(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Ve(t)&&(e.setupState=bl(t)),Yl(e,n)}let Ui;function Yl(e,t,n){const o=e.type;if(!e.render){if(!t&&Ui&&!o.render){const r=o.template;if(r){const{isCustomElement:a,compilerOptions:i}=e.appContext.config,{delimiters:c,compilerOptions:s}=o,l=Ye(Ye({isCustomElement:a,delimiters:c},i),s);o.render=Ui(r,l)}}e.render=o.render||_t}Cn(e),$n(),Ud(e),qn(),pn()}function gf(e){return new Proxy(e.attrs,{get(t,n){return ct(e,"get","$attrs"),t[n]}})}function bf(e){const t=o=>{e.exposed=o||{}};let n;return{get attrs(){return n||(n=gf(e))},slots:e.slots,emit:e.emit,expose:t}}function Rr(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(bl(hl(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in rr)return rr[n](e)}}))}function yf(e,t=!0){return he(e)?e.displayName||e.name:e.name||t&&e.__name}function Ef(e){return he(e)&&"__vccOpts"in e}const te=(e,t)=>bd(e,t,Mn);function Te(e,t,n){const o=arguments.length;return o===2?Ve(t)&&!ce(t)?cr(t)?ie(e,null,[t]):ie(e,t):ie(e,null,t):(o>3?n=Array.prototype.slice.call(arguments,2):o===3&&cr(n)&&(n=[n]),ie(e,t,n))}const wf="3.2.38",Of="http://www.w3.org/2000/svg",mn=typeof document<"u"?document:null,Wi=mn&&mn.createElement("template"),Pf={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,o)=>{const r=t?mn.createElementNS(Of,e):mn.createElement(e,n?{is:n}:void 0);return e==="select"&&o&&o.multiple!=null&&r.setAttribute("multiple",o.multiple),r},createText:e=>mn.createTextNode(e),createComment:e=>mn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>mn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,n,o,r,a){const i=n?n.previousSibling:t.lastChild;if(r&&(r===a||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===a||!(r=r.nextSibling)););else{Wi.innerHTML=o?`${e}`:e;const c=Wi.content;if(o){const s=c.firstChild;for(;s.firstChild;)c.appendChild(s.firstChild);c.removeChild(s)}t.insertBefore(c,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Sf(e,t,n){const o=e._vtc;o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Af(e,t,n){const o=e.style,r=Le(n);if(n&&!r){for(const a in n)va(o,a,n[a]);if(t&&!Le(t))for(const a in t)n[a]==null&&va(o,a,"")}else{const a=o.display;r?t!==n&&(o.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(o.display=a)}}const Ki=/\s*!important$/;function va(e,t,n){if(ce(n))n.forEach(o=>va(e,t,o));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const o=Tf(e,t);Ki.test(n)?e.setProperty(_n(o),n.replace(Ki,""),"important"):e[o]=n}}const Yi=["Webkit","Moz","ms"],Fr={};function Tf(e,t){const n=Fr[t];if(n)return n;let o=Tt(t);if(o!=="filter"&&o in e)return Fr[t]=o;o=Or(o);for(let r=0;r{let e=Date.now,t=!1;if(typeof window<"u"){Date.now()>document.createEvent("Event").timeStamp&&(e=performance.now.bind(performance));const n=navigator.userAgent.match(/firefox\/(\d+)/i);t=!!(n&&Number(n[1])<=53)}return[e,t]})();let ga=0;const Rf=Promise.resolve(),kf=()=>{ga=0},xf=()=>ga||(Rf.then(kf),ga=Jl());function Cf(e,t,n,o){e.addEventListener(t,n,o)}function Mf(e,t,n,o){e.removeEventListener(t,n,o)}function jf(e,t,n,o,r=null){const a=e._vei||(e._vei={}),i=a[t];if(o&&i)i.value=o;else{const[c,s]=Hf(t);if(o){const l=a[t]=$f(o,r);Cf(e,c,l,s)}else i&&(Mf(e,c,i,s),a[t]=void 0)}}const Qi=/(?:Once|Passive|Capture)$/;function Hf(e){let t;if(Qi.test(e)){t={};let o;for(;o=e.match(Qi);)e=e.slice(0,e.length-o[0].length),t[o[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):_n(e.slice(2)),t]}function $f(e,t){const n=o=>{const r=o.timeStamp||Jl();(Df||r>=n.attached-1)&&ut(qf(o,n.value),t,5,[o])};return n.value=e,n.attached=xf(),n}function qf(e,t){if(ce(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(o=>r=>!r._stopped&&o&&o(r))}else return t}const Gi=/^on[a-z]/,Vf=(e,t,n,o,r=!1,a,i,c,s)=>{t==="class"?Sf(e,o,r):t==="style"?Af(e,n,o):yo(t)?$a(t)||jf(e,t,n,o,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Nf(e,t,o,r))?Lf(e,t,o,a,i,c,s):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),If(e,t,o,r))};function Nf(e,t,n,o){return o?!!(t==="innerHTML"||t==="textContent"||t in e&&Gi.test(t)&&he(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Gi.test(t)&&Le(n)?!1:t in e}const Bt="transition",zn="animation",Po=(e,{slots:t})=>Te(Ll,Ff(e),t);Po.displayName="Transition";const Ql={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Po.props=Ye({},Ll.props,Ql);const tn=(e,t=[])=>{ce(e)?e.forEach(n=>n(...t)):e&&e(...t)},Zi=e=>e?ce(e)?e.some(t=>t.length>1):e.length>1:!1;function Ff(e){const t={};for(const P in e)P in Ql||(t[P]=e[P]);if(e.css===!1)return t;const{name:n="v",type:o,duration:r,enterFromClass:a=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:c=`${n}-enter-to`,appearFromClass:s=a,appearActiveClass:l=i,appearToClass:u=c,leaveFromClass:m=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:f=`${n}-leave-to`}=e,v=Bf(r),g=v&&v[0],b=v&&v[1],{onBeforeEnter:_,onEnter:y,onEnterCancelled:S,onLeave:A,onLeaveCancelled:D,onBeforeAppear:K=_,onAppear:R=y,onAppearCancelled:E=S}=t,U=(P,T,k)=>{nn(P,T?u:c),nn(P,T?l:i),k&&k()},Y=(P,T)=>{P._isLeaving=!1,nn(P,m),nn(P,f),nn(P,d),T&&T()},H=P=>(T,k)=>{const M=P?R:y,j=()=>U(T,P,k);tn(M,[T,j]),Xi(()=>{nn(T,P?s:a),zt(T,P?u:c),Zi(M)||ec(T,o,g,j)})};return Ye(t,{onBeforeEnter(P){tn(_,[P]),zt(P,a),zt(P,i)},onBeforeAppear(P){tn(K,[P]),zt(P,s),zt(P,l)},onEnter:H(!1),onAppear:H(!0),onLeave(P,T){P._isLeaving=!0;const k=()=>Y(P,T);zt(P,m),Wf(),zt(P,d),Xi(()=>{!P._isLeaving||(nn(P,m),zt(P,f),Zi(A)||ec(P,o,b,k))}),tn(A,[P,k])},onEnterCancelled(P){U(P,!1),tn(S,[P])},onAppearCancelled(P){U(P,!0),tn(E,[P])},onLeaveCancelled(P){Y(P),tn(D,[P])}})}function Bf(e){if(e==null)return null;if(Ve(e))return[Br(e.enter),Br(e.leave)];{const t=Br(e);return[t,t]}}function Br(e){return nl(e)}function zt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function nn(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function Xi(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let zf=0;function ec(e,t,n,o){const r=e._endId=++zf,a=()=>{r===e._endId&&o()};if(n)return setTimeout(a,n);const{type:i,timeout:c,propCount:s}=Uf(e,t);if(!i)return o();const l=i+"end";let u=0;const m=()=>{e.removeEventListener(l,d),a()},d=f=>{f.target===e&&++u>=s&&m()};setTimeout(()=>{u(n[v]||"").split(", "),r=o(Bt+"Delay"),a=o(Bt+"Duration"),i=tc(r,a),c=o(zn+"Delay"),s=o(zn+"Duration"),l=tc(c,s);let u=null,m=0,d=0;t===Bt?i>0&&(u=Bt,m=i,d=a.length):t===zn?l>0&&(u=zn,m=l,d=s.length):(m=Math.max(i,l),u=m>0?i>l?Bt:zn:null,d=u?u===Bt?a.length:s.length:0);const f=u===Bt&&/\b(transform|all)(,|$)/.test(n[Bt+"Property"]);return{type:u,timeout:m,propCount:d,hasTransform:f}}function tc(e,t){for(;e.lengthnc(n)+nc(e[o])))}function nc(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Wf(){return document.body.offsetHeight}const Kf={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Yf=(e,t)=>n=>{if(!("key"in n))return;const o=_n(n.key);if(t.some(r=>r===o||Kf[r]===o))return e(n)},sr={beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Un(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:o}){!t!=!n&&(o?t?(o.beforeEnter(e),Un(e,!0),o.enter(e)):o.leave(e,()=>{Un(e,!1)}):Un(e,t))},beforeUnmount(e,{value:t}){Un(e,t)}};function Un(e,t){e.style.display=t?e._vod:"none"}const Jf=Ye({patchProp:Vf},Pf);let zr,oc=!1;function Qf(){return zr=oc?zr:rf(Jf),oc=!0,zr}const Gf=(...e)=>{const t=Qf().createApp(...e),{mount:n}=t;return t.mount=o=>{const r=Zf(o);if(r)return n(r,!0,r instanceof SVGElement)},t};function Zf(e){return Le(e)?document.querySelector(e):e}const Xf=JSON.parse('{"base":"/3.x/","lang":"en-US","title":"arthas","description":"arthas user document","head":[["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\u8BCA\u65AD\u5229\u5668Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java\u8BCA\u65AD\u5229\u5668Arthas"}],["meta",{"property":"og:image","content":"/images/arthas_mate_image.png"}],["meta",{"property":"og:description","content":"Alibaba Java Diagnostic Tool Arthas/Alibaba Java\u8BCA\u65AD\u5229\u5668Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java\u8BCA\u65AD\u5229\u5668Arthas"}],["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\u8BCA\u65AD\u5229\u5668Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java\u8BCA\u65AD\u5229\u5668Arthas"}],["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\u8BCA\u65AD\u5229\u5668Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java\u8BCA\u65AD\u5229\u5668Arthas"}],["script",{},"\\n var _hmt = _hmt || [];\\n (function() {\\n var hm = document.createElement(\\"script\\");\\n hm.src = \\"https://hm.baidu.com/hm.js?d5c5e25b100f0eb51a4c35c8a86ea9b4\\";\\n var s = document.getElementsByTagName(\\"script\\")[0]; \\n s.parentNode.insertBefore(hm, s);\\n })();\\n "],["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",{"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"}]],"locales":{"/":{"lang":"zh-CN","title":"arthas","description":"arthas \u4F7F\u7528\u6587\u6863"},"/en/":{"lang":"en-US","title":"arthas","description":"arthas user document"}}}');var eh=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),th=e=>{const t=new Set,n=[];return e.forEach(o=>{const r=eh(o);t.has(r)||(t.add(r),n.push(o))}),n},So=e=>/^(https?:)?\/\//.test(e),nh=e=>/^mailto:/.test(e),oh=e=>/^tel:/.test(e),oi=e=>Object.prototype.toString.call(e)==="[object Object]",Gl=e=>e.replace(/\/$/,""),Zl=e=>e.replace(/^\//,""),Xl=(e,t)=>{const n=Object.keys(e).sort((o,r)=>{const a=r.split("/").length-o.split("/").length;return a!==0?a:r.length-o.length});for(const o of n)if(t.startsWith(o))return o;return"/"},rc=(e,t="/")=>e.replace(/^(https?:)?\/\/[^/]*/,"").replace(new RegExp(`^${t}`),"/");const eu={"v-8daa1a0e":L(()=>h(()=>import("./index.html.349dc4ce.js"),[])),"v-7445f070":L(()=>h(()=>import("./index.html.3951988f.js"),["assets/index.html.3951988f.js","assets/arthas.b23d3e5a.js"])),"v-0d09f68d":L(()=>h(()=>import("./advanced-use.html.9554def2.js"),[])),"v-46e53834":L(()=>h(()=>import("./advice-class.html.b56b5ad0.js"),[])),"v-37178538":L(()=>h(()=>import("./agent.html.a8d22dff.js"),[])),"v-5c517900":L(()=>h(()=>import("./arthas-properties.html.3164354d.js"),[])),"v-02eb6d0d":L(()=>h(()=>import("./arthas3.html.62e301e7.js"),[])),"v-4f82df66":L(()=>h(()=>import("./async.html.d8cce9ca.js"),[])),"v-d0358c7e":L(()=>h(()=>import("./auth.html.35f80b21.js"),[])),"v-3157067a":L(()=>h(()=>import("./base64.html.4feec68d.js"),[])),"v-cc8f4ae6":L(()=>h(()=>import("./batch-support.html.1959143d.js"),[])),"v-6542b733":L(()=>h(()=>import("./cat.html.77044202.js"),[])),"v-49b1709e":L(()=>h(()=>import("./classloader.html.2b5b952f.js"),[])),"v-ad1b2b42":L(()=>h(()=>import("./cls.html.a6a13162.js"),[])),"v-5ed4d0e1":L(()=>h(()=>import("./commands.html.e522310c.js"),[])),"v-3992adde":L(()=>h(()=>import("./contact-us.html.c4d19d8e.js"),["assets/contact-us.html.c4d19d8e.js","assets/qqgroup3_qr.f82e3fd0.js"])),"v-0d1e3f35":L(()=>h(()=>import("./dashboard.html.88ef26c5.js"),["assets/dashboard.html.88ef26c5.js","assets/dashboard.eb1e1fee.js"])),"v-02361049":L(()=>h(()=>import("./docker.html.8430667f.js"),[])),"v-2116d2e1":L(()=>h(()=>import("./download.html.5cdfc6bd.js"),[])),"v-1fe4a616":L(()=>h(()=>import("./dump.html.aa1d0523.js"),[])),"v-2c48f364":L(()=>h(()=>import("./echo.html.f45a06cc.js"),[])),"v-d070981a":L(()=>h(()=>import("./faq.html.b9626740.js"),[])),"v-78c35af6":L(()=>h(()=>import("./getstatic.html.194e97dd.js"),[])),"v-63f4cd5a":L(()=>h(()=>import("./grep.html.c753d37b.js"),[])),"v-809381ca":L(()=>h(()=>import("./groovy.html.292661c1.js"),[])),"v-07868089":L(()=>h(()=>import("./heapdump.html.2d73c547.js"),[])),"v-e3b34070":L(()=>h(()=>import("./help.html.5a1d36ec.js"),[])),"v-26f43d96":L(()=>h(()=>import("./history.html.3f90631d.js"),[])),"v-225de034":L(()=>h(()=>import("./http-api.html.5c8cd6bc.js"),["assets/http-api.html.5c8cd6bc.js","assets/arthas-web-ui.89f4fc6d.js"])),"v-7c670020":L(()=>h(()=>import("./idea-plugin.html.0961bb69.js"),[])),"v-0cb398f4":L(()=>h(()=>import("./install-detail.html.50cfaa59.js"),[])),"v-211d675c":L(()=>h(()=>import("./jad.html.67f11a53.js"),[])),"v-41806853":L(()=>h(()=>import("./jfr.html.bb7f02ab.js"),["assets/jfr.html.bb7f02ab.js","assets/arthas-output-recording.5e4ef7bc.js"])),"v-f1483d70":L(()=>h(()=>import("./jvm.html.b5bfa365.js"),[])),"v-4039cdec":L(()=>h(()=>import("./keymap.html.6e72672f.js"),[])),"v-5ae8aed9":L(()=>h(()=>import("./logger.html.cdea0f90.js"),[])),"v-6a31cc55":L(()=>h(()=>import("./manual-install.html.d729afcd.js"),[])),"v-8ebd6c68":L(()=>h(()=>import("./mbean.html.26631030.js"),[])),"v-3b401ada":L(()=>h(()=>import("./mc.html.19c82f53.js"),[])),"v-4d9433f0":L(()=>h(()=>import("./memory.html.9926de30.js"),[])),"v-6e88d7a2":L(()=>h(()=>import("./monitor.html.5f496a09.js"),[])),"v-627e52da":L(()=>h(()=>import("./ognl.html.59679ee9.js"),[])),"v-27b6152a":L(()=>h(()=>import("./options.html.b8b42168.js"),[])),"v-2f05b636":L(()=>h(()=>import("./perfcounter.html.3794d77f.js"),[])),"v-13eae420":L(()=>h(()=>import("./profiler.html.e7f88019.js"),["assets/profiler.html.e7f88019.js","assets/arthas-output-svg.30f64f53.js"])),"v-1c2d8c2c":L(()=>h(()=>import("./pwd.html.d34432c3.js"),[])),"v-5afc3a07":L(()=>h(()=>import("./quick-start.html.cbab3d30.js"),[])),"v-aa7c750c":L(()=>h(()=>import("./quit.html.64b41fb3.js"),[])),"v-0446ad7b":L(()=>h(()=>import("./redefine.html.2e16ab41.js"),[])),"v-648880ae":L(()=>h(()=>import("./release-notes.html.8810e03d.js"),[])),"v-71f77d4c":L(()=>h(()=>import("./reset.html.613ce22c.js"),[])),"v-54cde250":L(()=>h(()=>import("./retransform.html.509ca8a2.js"),[])),"v-8e632816":L(()=>h(()=>import("./save-log.html.6fa77f22.js"),[])),"v-1fc55619":L(()=>h(()=>import("./sc.html.09e2c24b.js"),[])),"v-3891b473":L(()=>h(()=>import("./session.html.61530ca8.js"),[])),"v-30d5cc4f":L(()=>h(()=>import("./sm.html.0d66961e.js"),[])),"v-07cf9d55":L(()=>h(()=>import("./spring-boot-starter.html.0ccae142.js"),[])),"v-b75a107e":L(()=>h(()=>import("./stack.html.db4b5700.js"),[])),"v-a9c412f2":L(()=>h(()=>import("./start-arthas.html.4886b6be.js"),[])),"v-bc0910b2":L(()=>h(()=>import("./stop.html.17210afa.js"),[])),"v-0333612e":L(()=>h(()=>import("./sysenv.html.ac969eec.js"),[])),"v-7012b8ce":L(()=>h(()=>import("./sysprop.html.aeb4ee87.js"),[])),"v-0536edb5":L(()=>h(()=>import("./tee.html.8aa74468.js"),[])),"v-10845ac2":L(()=>h(()=>import("./thread.html.c837e66a.js"),[])),"v-65d67724":L(()=>h(()=>import("./trace.html.861de4ab.js"),[])),"v-71adf3e9":L(()=>h(()=>import("./tt.html.980704e8.js"),[])),"v-d2ddc9fe":L(()=>h(()=>import("./tunnel.html.9c3dcb91.js"),["assets/tunnel.html.9c3dcb91.js","assets/tunnel-server-agents.03d5eafa.js"])),"v-5b5d3371":L(()=>h(()=>import("./version.html.48ec1551.js"),[])),"v-40db67fd":L(()=>h(()=>import("./vmoption.html.c32a5087.js"),[])),"v-10890efa":L(()=>h(()=>import("./vmtool.html.dc9e0833.js"),[])),"v-24fc49da":L(()=>h(()=>import("./watch.html.e73d5269.js"),[])),"v-a5f6e7aa":L(()=>h(()=>import("./web-console.html.ad1a9f26.js"),["assets/web-console.html.ad1a9f26.js","assets/web-console-local.156ba0ce.js"])),"v-2d0a870d":L(()=>h(()=>import("./index.html.27b99973.js"),[])),"v-07555a84":L(()=>h(()=>import("./index.html.88e6b040.js"),["assets/index.html.88e6b040.js","assets/arthas.b23d3e5a.js"])),"v-463d120e":L(()=>h(()=>import("./advanced-use.html.b6fb70e9.js"),[])),"v-a736375c":L(()=>h(()=>import("./advice-class.html.913cd28f.js"),[])),"v-f6b5c310":L(()=>h(()=>import("./agent.html.5d625533.js"),[])),"v-74fb2694":L(()=>h(()=>import("./arthas-properties.html.f3f99ef8.js"),[])),"v-786f7161":L(()=>h(()=>import("./async.html.0718d03c.js"),[])),"v-f76c33a6":L(()=>h(()=>import("./auth.html.d091b8de.js"),[])),"v-d17b7034":L(()=>h(()=>import("./base64.html.4fc99fea.js"),[])),"v-765e30be":L(()=>h(()=>import("./batch-support.html.09feead8.js"),[])),"v-64a0cd47":L(()=>h(()=>import("./cat.html.7e324ac6.js"),[])),"v-fc1b9a9c":L(()=>h(()=>import("./classloader.html.d971b2e3.js"),[])),"v-ae5eff1a":L(()=>h(()=>import("./cls.html.aef45d21.js"),[])),"v-12153166":L(()=>h(()=>import("./commands.html.b9c3ff85.js"),[])),"v-4be7594a":L(()=>h(()=>import("./contact-us.html.6b2c4bcc.js"),["assets/contact-us.html.6b2c4bcc.js","assets/qqgroup3_qr.f82e3fd0.js"])),"v-79107649":L(()=>h(()=>import("./dashboard.html.79bd7e0f.js"),["assets/dashboard.html.79bd7e0f.js","assets/dashboard.eb1e1fee.js"])),"v-682151b5":L(()=>h(()=>import("./docker.html.77dd787e.js"),[])),"v-8d912d66":L(()=>h(()=>import("./download.html.0aec292a.js"),[])),"v-471b4d3e":L(()=>h(()=>import("./dump.html.a9afcd2b.js"),[])),"v-18ad9fd0":L(()=>h(()=>import("./echo.html.c9564b4c.js"),[])),"v-d1b46bf2":L(()=>h(()=>import("./faq.html.39698152.js"),[])),"v-2f908999":L(()=>h(()=>import("./getstatic.html.d81e76f2.js"),[])),"v-8b2b7482":L(()=>h(()=>import("./grep.html.1c2ee274.js"),[])),"v-25a18087":L(()=>h(()=>import("./groovy.html.2ef01485.js"),[])),"v-c0b1d216":L(()=>h(()=>import("./heapdump.html.51c1271f.js"),[])),"v-7a8b0c34":L(()=>h(()=>import("./help.html.67ffadca.js"),[])),"v-4402cd49":L(()=>h(()=>import("./history.html.72971f6a.js"),[])),"v-8b0312c0":L(()=>h(()=>import("./http-api.html.1bd8ba57.js"),["assets/http-api.html.1bd8ba57.js","assets/arthas-web-ui.89f4fc6d.js"])),"v-96b07b98":L(()=>h(()=>import("./idea-plugin.html.5cd3ae1a.js"),[])),"v-319f48f2":L(()=>h(()=>import("./install-detail.html.cbd1e77a.js"),[])),"v-207b7d70":L(()=>h(()=>import("./jad.html.01fefda3.js"),[])),"v-40de7e67":L(()=>h(()=>import("./jfr.html.63d78e12.js"),["assets/jfr.html.63d78e12.js","assets/arthas-output-recording.5e4ef7bc.js"])),"v-f28c1148":L(()=>h(()=>import("./jvm.html.5fd9778c.js"),[])),"v-b3b5e150":L(()=>h(()=>import("./keymap.html.35ecd977.js"),[])),"v-7e581f76":L(()=>h(()=>import("./logger.html.7de7427f.js"),[])),"v-bbaa3c7e":L(()=>h(()=>import("./manual-install.html.aba050db.js"),[])),"v-58d22ae0":L(()=>h(()=>import("./mbean.html.7437cca3.js"),[])),"v-2ac66c02":L(()=>h(()=>import("./mc.html.ac459852.js"),[])),"v-3f212774":L(()=>h(()=>import("./memory.html.7bfef615.js"),[])),"v-20388043":L(()=>h(()=>import("./monitor.html.0b324722.js"),[])),"v-89b4fa02":L(()=>h(()=>import("./ognl.html.c5956d1f.js"),[])),"v-43a1e17f":L(()=>h(()=>import("./options.html.6ca60b92.js"),[])),"v-6746784a":L(()=>h(()=>import("./perfcounter.html.c8d6f07e.js"),[])),"v-a7e90ae8":L(()=>h(()=>import("./profiler.html.95a82517.js"),["assets/profiler.html.95a82517.js","assets/arthas-output-svg.30f64f53.js"])),"v-1b8ba240":L(()=>h(()=>import("./pwd.html.4f686509.js"),[])),"v-d98607ca":L(()=>h(()=>import("./quick-start.html.70301235.js"),[])),"v-d1b31c34":L(()=>h(()=>import("./quit.html.adcbca9c.js"),[])),"v-c7317832":L(()=>h(()=>import("./redefine.html.4f4236c3.js"),[])),"v-e0bde47c":L(()=>h(()=>import("./release-notes.html.79040020.js"),[])),"v-6735226e":L(()=>h(()=>import("./reset.html.b7ada98f.js"),[])),"v-e5e2b738":L(()=>h(()=>import("./retransform.html.590b7b85.js"),[])),"v-50ef0261":L(()=>h(()=>import("./save-log.html.aede14f6.js"),[])),"v-28022d85":L(()=>h(()=>import("./sc.html.4231ef3b.js"),[])),"v-dfe2bef2":L(()=>h(()=>import("./session.html.ebca9c60.js"),[])),"v-3912a3bb":L(()=>h(()=>import("./sm.html.981fdfec.js"),[])),"v-71870b69":L(()=>h(()=>import("./spring-boot-starter.html.60544b4f.js"),[])),"v-4483d8d5":L(()=>h(()=>import("./stack.html.dfb85a5e.js"),[])),"v-7af576f3":L(()=>h(()=>import("./start-arthas.html.aeeb9c4f.js"),[])),"v-e33fb7da":L(()=>h(()=>import("./stop.html.493e47db.js"),[])),"v-645190d5":L(()=>h(()=>import("./sysenv.html.ce9a0bce.js"),[])),"v-1f738fad":L(()=>h(()=>import("./sysprop.html.76aee09d.js"),[])),"v-049503c9":L(()=>h(()=>import("./tee.html.9daca569.js"),[])),"v-5da9140b":L(()=>h(()=>import("./thread.html.3171fcb1.js"),[])),"v-06075838":L(()=>h(()=>import("./trace.html.53ffd359.js"),[])),"v-79eacb55":L(()=>h(()=>import("./tt.html.51ba2266.js"),[])),"v-07074726":L(()=>h(()=>import("./tunnel.html.d20e61ab.js"),["assets/tunnel.html.d20e61ab.js","assets/tunnel-server-agents.03d5eafa.js"])),"v-9a4bc0f6":L(()=>h(()=>import("./version.html.18257b2f.js"),[])),"v-4e08032e":L(()=>h(()=>import("./vmoption.html.a450713f.js"),[])),"v-76745066":L(()=>h(()=>import("./vmtool.html.65118aec.js"),[])),"v-75a5aa24":L(()=>h(()=>import("./watch.html.30c91d3e.js"),[])),"v-35756382":L(()=>h(()=>import("./web-console.html.a124c728.js"),["assets/web-console.html.a124c728.js","assets/web-console-local.156ba0ce.js"])),"v-3706649a":L(()=>h(()=>import("./404.html.2154acec.js"),[]))};var Lt=(e={})=>e;function ri(e,t,n){var o,r,a;t===void 0&&(t=50),n===void 0&&(n={});var i=(o=n.isImmediate)!=null&&o,c=(r=n.callback)!=null&&r,s=n.maxWait,l=Date.now(),u=[];function m(){if(s!==void 0){var f=Date.now()-l;if(f+t>=s)return s-f}return t}var d=function(){var f=[].slice.call(arguments),v=this;return new Promise(function(g,b){var _=i&&a===void 0;if(a!==void 0&&clearTimeout(a),a=setTimeout(function(){if(a=void 0,l=Date.now(),!i){var S=e.apply(v,f);c&&c(S),u.forEach(function(A){return(0,A.resolve)(S)}),u=[]}},m()),_){var y=e.apply(v,f);return c&&c(y),g(y)}u.push({resolve:g,reject:b})})};return d.cancel=function(f){a!==void 0&&clearTimeout(a),u.forEach(function(v){return(0,v.reject)(f)}),u=[]},d}const ac=()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,rh=()=>window.scrollTo({top:0,behavior:"smooth"});const ah=je({name:"BackToTop",setup(){const e=De(0),t=te(()=>e.value>300),n=ri(()=>{e.value=ac()},100);et(()=>{e.value=ac(),window.addEventListener("scroll",()=>n())});const o=Te("div",{class:"back-to-top",onClick:rh});return()=>Te(Po,{name:"back-to-top"},()=>t.value?o:null)}}),ih=Lt({rootComponents:[ah]});const ch=Te("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"},[Te("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"}),Te("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"})]),sh=je({name:"ExternalLinkIcon",props:{locales:{type:Object,required:!1,default:()=>({})}},setup(e){const t=Fn(),n=te(()=>{var o;return(o=e.locales[t.value])!=null?o:{openInNewWindow:"open in new window"}});return()=>Te("span",[ch,Te("span",{class:"external-link-icon-sr-only"},n.value.openInNewWindow)])}}),lh={"/":{openInNewWindow:"\u5728\u65B0\u7A97\u53E3\u6253\u5F00"},"/en/":{openInNewWindow:"open in new window"}},uh=Lt({enhance({app:e}){e.component("ExternalLinkIcon",Te(sh,{locales:lh}))}});/*! medium-zoom 1.0.6 | MIT License | https://github.com/francoischalifour/medium-zoom */var cn=Object.assign||function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:{},o=window.Promise||function(P){function T(){}P(T,T)},r=function(P){var T=P.target;if(T===U){v();return}S.indexOf(T)!==-1&&g({target:T})},a=function(){if(!(D||!E.original)){var P=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(K-P)>R.scrollOffset&&setTimeout(v,150)}},i=function(P){var T=P.key||P.keyCode;(T==="Escape"||T==="Esc"||T===27)&&v()},c=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},T=P;if(P.background&&(U.style.background=P.background),P.container&&P.container instanceof Object&&(T.container=cn({},R.container,P.container)),P.template){var k=Wo(P.template)?P.template:document.querySelector(P.template);T.template=k}return R=cn({},R,T),S.forEach(function(M){M.dispatchEvent(bn("medium-zoom:update",{detail:{zoom:Y}}))}),Y},s=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e(cn({},R,P))},l=function(){for(var P=arguments.length,T=Array(P),k=0;k0?T.reduce(function(j,W){return[].concat(j,cc(W))},[]):S;return M.forEach(function(j){j.classList.remove("medium-zoom-image"),j.dispatchEvent(bn("medium-zoom:detach",{detail:{zoom:Y}}))}),S=S.filter(function(j){return M.indexOf(j)===-1}),Y},m=function(P,T){var k=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return S.forEach(function(M){M.addEventListener("medium-zoom:"+P,T,k)}),A.push({type:"medium-zoom:"+P,listener:T,options:k}),Y},d=function(P,T){var k=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return S.forEach(function(M){M.removeEventListener("medium-zoom:"+P,T,k)}),A=A.filter(function(M){return!(M.type==="medium-zoom:"+P&&M.listener.toString()===T.toString())}),Y},f=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},T=P.target,k=function(){var j={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},W=void 0,ee=void 0;if(R.container)if(R.container instanceof Object)j=cn({},j,R.container),W=j.width-j.left-j.right-R.margin*2,ee=j.height-j.top-j.bottom-R.margin*2;else{var me=Wo(R.container)?R.container:document.querySelector(R.container),de=me.getBoundingClientRect(),ve=de.width,Se=de.height,Re=de.left,Fe=de.top;j=cn({},j,{width:ve,height:Se,left:Re,top:Fe})}W=W||j.width-R.margin*2,ee=ee||j.height-R.margin*2;var x=E.zoomedHd||E.original,Z=ic(x)?W:x.naturalWidth||W,N=ic(x)?ee:x.naturalHeight||ee,G=x.getBoundingClientRect(),pe=G.top,be=G.left,fe=G.width,le=G.height,p=Math.min(Z,W)/fe,w=Math.min(N,ee)/le,I=Math.min(p,w),C=(-be+(W-fe)/2+R.margin+j.left)/I,$=(-pe+(ee-le)/2+R.margin+j.top)/I,q="scale("+I+") translate3d("+C+"px, "+$+"px, 0)";E.zoomed.style.transform=q,E.zoomedHd&&(E.zoomedHd.style.transform=q)};return new o(function(M){if(T&&S.indexOf(T)===-1){M(Y);return}var j=function ve(){D=!1,E.zoomed.removeEventListener("transitionend",ve),E.original.dispatchEvent(bn("medium-zoom:opened",{detail:{zoom:Y}})),M(Y)};if(E.zoomed){M(Y);return}if(T)E.original=T;else if(S.length>0){var W=S;E.original=W[0]}else{M(Y);return}if(E.original.dispatchEvent(bn("medium-zoom:open",{detail:{zoom:Y}})),K=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,D=!0,E.zoomed=fh(E.original),document.body.appendChild(U),R.template){var ee=Wo(R.template)?R.template:document.querySelector(R.template);E.template=document.createElement("div"),E.template.appendChild(ee.content.cloneNode(!0)),document.body.appendChild(E.template)}if(document.body.appendChild(E.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),E.original.classList.add("medium-zoom-image--hidden"),E.zoomed.classList.add("medium-zoom-image--opened"),E.zoomed.addEventListener("click",v),E.zoomed.addEventListener("transitionend",j),E.original.getAttribute("data-zoom-src")){E.zoomedHd=E.zoomed.cloneNode(),E.zoomedHd.removeAttribute("srcset"),E.zoomedHd.removeAttribute("sizes"),E.zoomedHd.src=E.zoomed.getAttribute("data-zoom-src"),E.zoomedHd.onerror=function(){clearInterval(me),console.warn("Unable to reach the zoom image target "+E.zoomedHd.src),E.zoomedHd=null,k()};var me=setInterval(function(){E.zoomedHd.complete&&(clearInterval(me),E.zoomedHd.classList.add("medium-zoom-image--opened"),E.zoomedHd.addEventListener("click",v),document.body.appendChild(E.zoomedHd),k())},10)}else if(E.original.hasAttribute("srcset")){E.zoomedHd=E.zoomed.cloneNode(),E.zoomedHd.removeAttribute("sizes"),E.zoomedHd.removeAttribute("loading");var de=E.zoomedHd.addEventListener("load",function(){E.zoomedHd.removeEventListener("load",de),E.zoomedHd.classList.add("medium-zoom-image--opened"),E.zoomedHd.addEventListener("click",v),document.body.appendChild(E.zoomedHd),k()})}else k()})},v=function(){return new o(function(P){if(D||!E.original){P(Y);return}var T=function k(){E.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(E.zoomed),E.zoomedHd&&document.body.removeChild(E.zoomedHd),document.body.removeChild(U),E.zoomed.classList.remove("medium-zoom-image--opened"),E.template&&document.body.removeChild(E.template),D=!1,E.zoomed.removeEventListener("transitionend",k),E.original.dispatchEvent(bn("medium-zoom:closed",{detail:{zoom:Y}})),E.original=null,E.zoomed=null,E.zoomedHd=null,E.template=null,P(Y)};D=!0,document.body.classList.remove("medium-zoom--opened"),E.zoomed.style.transform="",E.zoomedHd&&(E.zoomedHd.style.transform=""),E.template&&(E.template.style.transition="opacity 150ms",E.template.style.opacity=0),E.original.dispatchEvent(bn("medium-zoom:close",{detail:{zoom:Y}})),E.zoomed.addEventListener("transitionend",T)})},g=function(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},T=P.target;return E.original?v():f({target:T})},b=function(){return R},_=function(){return S},y=function(){return E.original},S=[],A=[],D=!1,K=0,R=n,E={original:null,zoomed:null,zoomedHd:null,template:null};Object.prototype.toString.call(t)==="[object Object]"?R=t:(t||typeof t=="string")&&l(t),R=cn({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},R);var U=dh(R.background);document.addEventListener("click",r),document.addEventListener("keyup",i),document.addEventListener("scroll",a),window.addEventListener("resize",v);var Y={open:f,close:v,toggle:g,update:c,clone:s,attach:l,detach:u,on:m,off:d,getOptions:b,getImages:_,getZoomedImage:y};return Y};function ph(e,t){t===void 0&&(t={});var n=t.insertAt;if(!(!e||typeof document>"u")){var o=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",n==="top"&&o.firstChild?o.insertBefore(r,o.firstChild):o.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}var _h=".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}";ph(_h);const vh=hh,gh=Symbol("mediumZoom");const bh=".theme-default-content > img, .theme-default-content :not(a) > img",yh={},Eh=300,wh=Lt({enhance({app:e,router:t}){const n=vh(yh);n.refresh=(o=bh)=>{n.detach(),n.attach(o)},e.provide(gh,n),t.afterEach(()=>{setTimeout(()=>n.refresh(),Eh)})}});/*! + * vue-router v4.1.5 + * (c) 2022 Eduardo San Martin Morote + * @license MIT + */const On=typeof window<"u";function Oh(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const Ie=Object.assign;function Ur(e,t){const n={};for(const o in t){const r=t[o];n[o]=gt(r)?r.map(e):e(r)}return n}const oo=()=>{},gt=Array.isArray,Ph=/\/$/,Sh=e=>e.replace(Ph,"");function Wr(e,t,n="/"){let o,r={},a="",i="";const c=t.indexOf("#");let s=t.indexOf("?");return c=0&&(s=-1),s>-1&&(o=t.slice(0,s),a=t.slice(s+1,c>-1?c:t.length),r=e(a)),c>-1&&(o=o||t.slice(0,c),i=t.slice(c,t.length)),o=Lh(o!=null?o:t,n),{fullPath:o+(a&&"?")+a+i,path:o,query:r,hash:i}}function Ah(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function sc(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Th(e,t,n){const o=t.matched.length-1,r=n.matched.length-1;return o>-1&&o===r&&jn(t.matched[o],n.matched[r])&&tu(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function jn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function tu(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Ih(e[n],t[n]))return!1;return!0}function Ih(e,t){return gt(e)?lc(e,t):gt(t)?lc(t,e):e===t}function lc(e,t){return gt(t)?e.length===t.length&&e.every((n,o)=>n===t[o]):e.length===1&&e[0]===t}function Lh(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),o=e.split("/");let r=n.length-1,a,i;for(a=0;a1&&r--;else break;return n.slice(0,r).join("/")+"/"+o.slice(a-(a===o.length?1:0)).join("/")}var ho;(function(e){e.pop="pop",e.push="push"})(ho||(ho={}));var ro;(function(e){e.back="back",e.forward="forward",e.unknown=""})(ro||(ro={}));function Dh(e){if(!e)if(On){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Sh(e)}const Rh=/^[^#]+#/;function kh(e,t){return e.replace(Rh,"#")+t}function xh(e,t){const n=document.documentElement.getBoundingClientRect(),o=e.getBoundingClientRect();return{behavior:t.behavior,left:o.left-n.left-(t.left||0),top:o.top-n.top-(t.top||0)}}const kr=()=>({left:window.pageXOffset,top:window.pageYOffset});function Ch(e){let t;if("el"in e){const n=e.el,o=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?o?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=xh(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function uc(e,t){return(history.state?history.state.position-t:-1)+e}const ba=new Map;function Mh(e,t){ba.set(e,t)}function jh(e){const t=ba.get(e);return ba.delete(e),t}let Hh=()=>location.protocol+"//"+location.host;function nu(e,t){const{pathname:n,search:o,hash:r}=t,a=e.indexOf("#");if(a>-1){let c=r.includes(e.slice(a))?e.slice(a).length:1,s=r.slice(c);return s[0]!=="/"&&(s="/"+s),sc(s,"")}return sc(n,e)+o+r}function $h(e,t,n,o){let r=[],a=[],i=null;const c=({state:d})=>{const f=nu(e,location),v=n.value,g=t.value;let b=0;if(d){if(n.value=f,t.value=d,i&&i===v){i=null;return}b=g?d.position-g.position:0}else o(f);r.forEach(_=>{_(n.value,v,{delta:b,type:ho.pop,direction:b?b>0?ro.forward:ro.back:ro.unknown})})};function s(){i=n.value}function l(d){r.push(d);const f=()=>{const v=r.indexOf(d);v>-1&&r.splice(v,1)};return a.push(f),f}function u(){const{history:d}=window;!d.state||d.replaceState(Ie({},d.state,{scroll:kr()}),"")}function m(){for(const d of a)d();a=[],window.removeEventListener("popstate",c),window.removeEventListener("beforeunload",u)}return window.addEventListener("popstate",c),window.addEventListener("beforeunload",u),{pauseListeners:s,listen:l,destroy:m}}function mc(e,t,n,o=!1,r=!1){return{back:e,current:t,forward:n,replaced:o,position:window.history.length,scroll:r?kr():null}}function qh(e){const{history:t,location:n}=window,o={value:nu(e,n)},r={value:t.state};r.value||a(o.value,{back:null,current:o.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(s,l,u){const m=e.indexOf("#"),d=m>-1?(n.host&&document.querySelector("base")?e:e.slice(m))+s:Hh()+e+s;try{t[u?"replaceState":"pushState"](l,"",d),r.value=l}catch(f){console.error(f),n[u?"replace":"assign"](d)}}function i(s,l){const u=Ie({},t.state,mc(r.value.back,s,r.value.forward,!0),l,{position:r.value.position});a(s,u,!0),o.value=s}function c(s,l){const u=Ie({},r.value,t.state,{forward:s,scroll:kr()});a(u.current,u,!0);const m=Ie({},mc(o.value,s,null),{position:u.position+1},l);a(s,m,!1),o.value=s}return{location:o,state:r,push:c,replace:i}}function Vh(e){e=Dh(e);const t=qh(e),n=$h(e,t.state,t.location,t.replace);function o(a,i=!0){i||n.pauseListeners(),history.go(a)}const r=Ie({location:"",base:e,go:o,createHref:kh.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function Nh(e){return typeof e=="string"||e&&typeof e=="object"}function ou(e){return typeof e=="string"||typeof e=="symbol"}const kt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},ru=Symbol("");var dc;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(dc||(dc={}));function Hn(e,t){return Ie(new Error,{type:e,[ru]:!0},t)}function Rt(e,t){return e instanceof Error&&ru in e&&(t==null||!!(e.type&t))}const fc="[^/]+?",Fh={sensitive:!1,strict:!1,start:!0,end:!0},Bh=/[.+*?^${}()[\]/\\]/g;function zh(e,t){const n=Ie({},Fh,t),o=[];let r=n.start?"^":"";const a=[];for(const l of e){const u=l.length?[]:[90];n.strict&&!l.length&&(r+="/");for(let m=0;mt.length?t.length===1&&t[0]===40+40?1:-1:0}function Wh(e,t){let n=0;const o=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Kh={type:0,value:""},Yh=/[a-zA-Z0-9_]/;function Jh(e){if(!e)return[[]];if(e==="/")return[[Kh]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(f){throw new Error(`ERR (${n})/"${l}": ${f}`)}let n=0,o=n;const r=[];let a;function i(){a&&r.push(a),a=[]}let c=0,s,l="",u="";function m(){!l||(n===0?a.push({type:0,value:l}):n===1||n===2||n===3?(a.length>1&&(s==="*"||s==="+")&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:s==="*"||s==="+",optional:s==="*"||s==="?"})):t("Invalid state to consume buffer"),l="")}function d(){l+=s}for(;c{i(y)}:oo}function i(u){if(ou(u)){const m=o.get(u);m&&(o.delete(u),n.splice(n.indexOf(m),1),m.children.forEach(i),m.alias.forEach(i))}else{const m=n.indexOf(u);m>-1&&(n.splice(m,1),u.record.name&&o.delete(u.record.name),u.children.forEach(i),u.alias.forEach(i))}}function c(){return n}function s(u){let m=0;for(;m=0&&(u.record.path!==n[m].record.path||!au(u,n[m]));)m++;n.splice(m,0,u),u.record.name&&!_c(u)&&o.set(u.record.name,u)}function l(u,m){let d,f={},v,g;if("name"in u&&u.name){if(d=o.get(u.name),!d)throw Hn(1,{location:u});g=d.record.name,f=Ie(pc(m.params,d.keys.filter(y=>!y.optional).map(y=>y.name)),u.params&&pc(u.params,d.keys.map(y=>y.name))),v=d.stringify(f)}else if("path"in u)v=u.path,d=n.find(y=>y.re.test(v)),d&&(f=d.parse(v),g=d.record.name);else{if(d=m.name?o.get(m.name):n.find(y=>y.re.test(m.path)),!d)throw Hn(1,{location:u,currentLocation:m});g=d.record.name,f=Ie({},m.params,u.params),v=d.stringify(f)}const b=[];let _=d;for(;_;)b.unshift(_.record),_=_.parent;return{name:g,path:v,params:f,matched:b,meta:ep(b)}}return e.forEach(u=>a(u)),{addRoute:a,resolve:l,removeRoute:i,getRoutes:c,getRecordMatcher:r}}function pc(e,t){const n={};for(const o of t)o in e&&(n[o]=e[o]);return n}function Zh(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:Xh(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function Xh(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const o in e.components)t[o]=typeof n=="boolean"?n:n[o];return t}function _c(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function ep(e){return e.reduce((t,n)=>Ie(t,n.meta),{})}function vc(e,t){const n={};for(const o in e)n[o]=o in t?t[o]:e[o];return n}function au(e,t){return t.children.some(n=>n===e||au(e,n))}const iu=/#/g,tp=/&/g,np=/\//g,op=/=/g,rp=/\?/g,cu=/\+/g,ap=/%5B/g,ip=/%5D/g,su=/%5E/g,cp=/%60/g,lu=/%7B/g,sp=/%7C/g,uu=/%7D/g,lp=/%20/g;function ai(e){return encodeURI(""+e).replace(sp,"|").replace(ap,"[").replace(ip,"]")}function up(e){return ai(e).replace(lu,"{").replace(uu,"}").replace(su,"^")}function ya(e){return ai(e).replace(cu,"%2B").replace(lp,"+").replace(iu,"%23").replace(tp,"%26").replace(cp,"`").replace(lu,"{").replace(uu,"}").replace(su,"^")}function mp(e){return ya(e).replace(op,"%3D")}function dp(e){return ai(e).replace(iu,"%23").replace(rp,"%3F")}function fp(e){return e==null?"":dp(e).replace(np,"%2F")}function lr(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function hp(e){const t={};if(e===""||e==="?")return t;const o=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;ra&&ya(a)):[o&&ya(o)]).forEach(a=>{a!==void 0&&(t+=(t.length?"&":"")+n,a!=null&&(t+="="+a))})}return t}function pp(e){const t={};for(const n in e){const o=e[n];o!==void 0&&(t[n]=gt(o)?o.map(r=>r==null?null:""+r):o==null?o:""+o)}return t}const _p=Symbol(""),bc=Symbol(""),xr=Symbol(""),ii=Symbol(""),Ea=Symbol("");function Wn(){let e=[];function t(o){return e.push(o),()=>{const r=e.indexOf(o);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e,reset:n}}function Wt(e,t,n,o,r){const a=o&&(o.enterCallbacks[r]=o.enterCallbacks[r]||[]);return()=>new Promise((i,c)=>{const s=m=>{m===!1?c(Hn(4,{from:n,to:t})):m instanceof Error?c(m):Nh(m)?c(Hn(2,{from:t,to:m})):(a&&o.enterCallbacks[r]===a&&typeof m=="function"&&a.push(m),i())},l=e.call(o&&o.instances[r],t,n,s);let u=Promise.resolve(l);e.length<3&&(u=u.then(s)),u.catch(m=>c(m))})}function Kr(e,t,n,o){const r=[];for(const a of e)for(const i in a.components){let c=a.components[i];if(!(t!=="beforeRouteEnter"&&!a.instances[i]))if(vp(c)){const l=(c.__vccOpts||c)[t];l&&r.push(Wt(l,n,o,a,i))}else{let s=c();r.push(()=>s.then(l=>{if(!l)return Promise.reject(new Error(`Couldn't resolve component "${i}" at "${a.path}"`));const u=Oh(l)?l.default:l;a.components[i]=u;const d=(u.__vccOpts||u)[t];return d&&Wt(d,n,o,a,i)()}))}}return r}function vp(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function yc(e){const t=We(xr),n=We(ii),o=te(()=>t.resolve(F(e.to))),r=te(()=>{const{matched:s}=o.value,{length:l}=s,u=s[l-1],m=n.matched;if(!u||!m.length)return-1;const d=m.findIndex(jn.bind(null,u));if(d>-1)return d;const f=Ec(s[l-2]);return l>1&&Ec(u)===f&&m[m.length-1].path!==f?m.findIndex(jn.bind(null,s[l-2])):d}),a=te(()=>r.value>-1&&Ep(n.params,o.value.params)),i=te(()=>r.value>-1&&r.value===n.matched.length-1&&tu(n.params,o.value.params));function c(s={}){return yp(s)?t[F(e.replace)?"replace":"push"](F(e.to)).catch(oo):Promise.resolve()}return{route:o,href:te(()=>o.value.href),isActive:a,isExactActive:i,navigate:c}}const gp=je({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:yc,setup(e,{slots:t}){const n=Vn(yc(e)),{options:o}=We(xr),r=te(()=>({[wc(e.activeClass,o.linkActiveClass,"router-link-active")]:n.isActive,[wc(e.exactActiveClass,o.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const a=t.default&&t.default(n);return e.custom?a:Te("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},a)}}}),bp=gp;function yp(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Ep(e,t){for(const n in t){const o=t[n],r=e[n];if(typeof o=="string"){if(o!==r)return!1}else if(!gt(r)||r.length!==o.length||o.some((a,i)=>a!==r[i]))return!1}return!0}function Ec(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const wc=(e,t,n)=>e!=null?e:t!=null?t:n,wp=je({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const o=We(Ea),r=te(()=>e.route||o.value),a=We(bc,0),i=te(()=>{let l=F(a);const{matched:u}=r.value;let m;for(;(m=u[l])&&!m.components;)l++;return l}),c=te(()=>r.value.matched[i.value]);hn(bc,te(()=>i.value+1)),hn(_p,c),hn(Ea,r);const s=De();return ot(()=>[s.value,c.value,e.name],([l,u,m],[d,f,v])=>{u&&(u.instances[m]=l,f&&f!==u&&l&&l===d&&(u.leaveGuards.size||(u.leaveGuards=f.leaveGuards),u.updateGuards.size||(u.updateGuards=f.updateGuards))),l&&u&&(!f||!jn(u,f)||!d)&&(u.enterCallbacks[m]||[]).forEach(g=>g(l))},{flush:"post"}),()=>{const l=r.value,u=e.name,m=c.value,d=m&&m.components[u];if(!d)return Oc(n.default,{Component:d,route:l});const f=m.props[u],v=f?f===!0?l.params:typeof f=="function"?f(l):f:null,b=Te(d,Ie({},v,t,{onVnodeUnmounted:_=>{_.component.isUnmounted&&(m.instances[u]=null)},ref:s}));return Oc(n.default,{Component:b,route:l})||b}}});function Oc(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const mu=wp;function Op(e){const t=Gh(e.routes,e),n=e.parseQuery||hp,o=e.stringifyQuery||gc,r=e.history,a=Wn(),i=Wn(),c=Wn(),s=vl(kt);let l=kt;On&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=Ur.bind(null,x=>""+x),m=Ur.bind(null,fp),d=Ur.bind(null,lr);function f(x,Z){let N,G;return ou(x)?(N=t.getRecordMatcher(x),G=Z):G=x,t.addRoute(G,N)}function v(x){const Z=t.getRecordMatcher(x);Z&&t.removeRoute(Z)}function g(){return t.getRoutes().map(x=>x.record)}function b(x){return!!t.getRecordMatcher(x)}function _(x,Z){if(Z=Ie({},Z||s.value),typeof x=="string"){const le=Wr(n,x,Z.path),p=t.resolve({path:le.path},Z),w=r.createHref(le.fullPath);return Ie(le,p,{params:d(p.params),hash:lr(le.hash),redirectedFrom:void 0,href:w})}let N;if("path"in x)N=Ie({},x,{path:Wr(n,x.path,Z.path).path});else{const le=Ie({},x.params);for(const p in le)le[p]==null&&delete le[p];N=Ie({},x,{params:m(x.params)}),Z.params=m(Z.params)}const G=t.resolve(N,Z),pe=x.hash||"";G.params=u(d(G.params));const be=Ah(o,Ie({},x,{hash:up(pe),path:G.path})),fe=r.createHref(be);return Ie({fullPath:be,hash:pe,query:o===gc?pp(x.query):x.query||{}},G,{redirectedFrom:void 0,href:fe})}function y(x){return typeof x=="string"?Wr(n,x,s.value.path):Ie({},x)}function S(x,Z){if(l!==x)return Hn(8,{from:Z,to:x})}function A(x){return R(x)}function D(x){return A(Ie(y(x),{replace:!0}))}function K(x){const Z=x.matched[x.matched.length-1];if(Z&&Z.redirect){const{redirect:N}=Z;let G=typeof N=="function"?N(x):N;return typeof G=="string"&&(G=G.includes("?")||G.includes("#")?G=y(G):{path:G},G.params={}),Ie({query:x.query,hash:x.hash,params:"path"in G?{}:x.params},G)}}function R(x,Z){const N=l=_(x),G=s.value,pe=x.state,be=x.force,fe=x.replace===!0,le=K(N);if(le)return R(Ie(y(le),{state:typeof le=="object"?Ie({},pe,le.state):pe,force:be,replace:fe}),Z||N);const p=N;p.redirectedFrom=Z;let w;return!be&&Th(o,G,N)&&(w=Hn(16,{to:p,from:G}),de(G,G,!0,!1)),(w?Promise.resolve(w):U(p,G)).catch(I=>Rt(I)?Rt(I,2)?I:me(I):W(I,p,G)).then(I=>{if(I){if(Rt(I,2))return R(Ie({replace:fe},y(I.to),{state:typeof I.to=="object"?Ie({},pe,I.to.state):pe,force:be}),Z||p)}else I=H(p,G,!0,fe,pe);return Y(p,G,I),I})}function E(x,Z){const N=S(x,Z);return N?Promise.reject(N):Promise.resolve()}function U(x,Z){let N;const[G,pe,be]=Pp(x,Z);N=Kr(G.reverse(),"beforeRouteLeave",x,Z);for(const le of G)le.leaveGuards.forEach(p=>{N.push(Wt(p,x,Z))});const fe=E.bind(null,x,Z);return N.push(fe),yn(N).then(()=>{N=[];for(const le of a.list())N.push(Wt(le,x,Z));return N.push(fe),yn(N)}).then(()=>{N=Kr(pe,"beforeRouteUpdate",x,Z);for(const le of pe)le.updateGuards.forEach(p=>{N.push(Wt(p,x,Z))});return N.push(fe),yn(N)}).then(()=>{N=[];for(const le of x.matched)if(le.beforeEnter&&!Z.matched.includes(le))if(gt(le.beforeEnter))for(const p of le.beforeEnter)N.push(Wt(p,x,Z));else N.push(Wt(le.beforeEnter,x,Z));return N.push(fe),yn(N)}).then(()=>(x.matched.forEach(le=>le.enterCallbacks={}),N=Kr(be,"beforeRouteEnter",x,Z),N.push(fe),yn(N))).then(()=>{N=[];for(const le of i.list())N.push(Wt(le,x,Z));return N.push(fe),yn(N)}).catch(le=>Rt(le,8)?le:Promise.reject(le))}function Y(x,Z,N){for(const G of c.list())G(x,Z,N)}function H(x,Z,N,G,pe){const be=S(x,Z);if(be)return be;const fe=Z===kt,le=On?history.state:{};N&&(G||fe?r.replace(x.fullPath,Ie({scroll:fe&&le&&le.scroll},pe)):r.push(x.fullPath,pe)),s.value=x,de(x,Z,N,fe),me()}let P;function T(){P||(P=r.listen((x,Z,N)=>{if(!Fe.listening)return;const G=_(x),pe=K(G);if(pe){R(Ie(pe,{replace:!0}),G).catch(oo);return}l=G;const be=s.value;On&&Mh(uc(be.fullPath,N.delta),kr()),U(G,be).catch(fe=>Rt(fe,12)?fe:Rt(fe,2)?(R(fe.to,G).then(le=>{Rt(le,20)&&!N.delta&&N.type===ho.pop&&r.go(-1,!1)}).catch(oo),Promise.reject()):(N.delta&&r.go(-N.delta,!1),W(fe,G,be))).then(fe=>{fe=fe||H(G,be,!1),fe&&(N.delta&&!Rt(fe,8)?r.go(-N.delta,!1):N.type===ho.pop&&Rt(fe,20)&&r.go(-1,!1)),Y(G,be,fe)}).catch(oo)}))}let k=Wn(),M=Wn(),j;function W(x,Z,N){me(x);const G=M.list();return G.length?G.forEach(pe=>pe(x,Z,N)):console.error(x),Promise.reject(x)}function ee(){return j&&s.value!==kt?Promise.resolve():new Promise((x,Z)=>{k.add([x,Z])})}function me(x){return j||(j=!x,T(),k.list().forEach(([Z,N])=>x?N(x):Z()),k.reset()),x}function de(x,Z,N,G){const{scrollBehavior:pe}=e;if(!On||!pe)return Promise.resolve();const be=!N&&jh(uc(x.fullPath,0))||(G||!N)&&history.state&&history.state.scroll||null;return wo().then(()=>pe(x,Z,be)).then(fe=>fe&&Ch(fe)).catch(fe=>W(fe,x,Z))}const ve=x=>r.go(x);let Se;const Re=new Set,Fe={currentRoute:s,listening:!0,addRoute:f,removeRoute:v,hasRoute:b,getRoutes:g,resolve:_,options:e,push:A,replace:D,go:ve,back:()=>ve(-1),forward:()=>ve(1),beforeEach:a.add,beforeResolve:i.add,afterEach:c.add,onError:M.add,isReady:ee,install(x){const Z=this;x.component("RouterLink",bp),x.component("RouterView",mu),x.config.globalProperties.$router=Z,Object.defineProperty(x.config.globalProperties,"$route",{enumerable:!0,get:()=>F(s)}),On&&!Se&&s.value===kt&&(Se=!0,A(r.location).catch(pe=>{}));const N={};for(const pe in kt)N[pe]=te(()=>s.value[pe]);x.provide(xr,Z),x.provide(ii,Vn(N)),x.provide(Ea,s);const G=x.unmount;Re.add(x),x.unmount=function(){Re.delete(x),Re.size<1&&(l=kt,P&&P(),P=null,s.value=kt,Se=!1,j=!1),G()}}};return Fe}function yn(e){return e.reduce((t,n)=>t.then(()=>n()),Promise.resolve())}function Pp(e,t){const n=[],o=[],r=[],a=Math.max(t.matched.length,e.matched.length);for(let i=0;ijn(l,c))?o.push(c):n.push(c));const s=e.matched[i];s&&(t.matched.find(l=>jn(l,s))||r.push(s))}return[n,o,r]}function vn(){return We(xr)}function Dt(){return We(ii)}/** + * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT + */const Ee={settings:{minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
'},status:null,set:e=>{const t=Ee.isStarted();e=Yr(e,Ee.settings.minimum,1),Ee.status=e===1?null:e;const n=Ee.render(!t),o=n.querySelector(Ee.settings.barSelector),r=Ee.settings.speed,a=Ee.settings.easing;return n.offsetWidth,Sp(i=>{Mo(o,{transform:"translate3d("+Pc(e)+"%,0,0)",transition:"all "+r+"ms "+a}),e===1?(Mo(n,{transition:"none",opacity:"1"}),n.offsetWidth,setTimeout(function(){Mo(n,{transition:"all "+r+"ms linear",opacity:"0"}),setTimeout(function(){Ee.remove(),i()},r)},r)):setTimeout(()=>i(),r)}),Ee},isStarted:()=>typeof Ee.status=="number",start:()=>{Ee.status||Ee.set(0);const e=()=>{setTimeout(()=>{!Ee.status||(Ee.trickle(),e())},Ee.settings.trickleSpeed)};return Ee.settings.trickle&&e(),Ee},done:e=>!e&&!Ee.status?Ee:Ee.inc(.3+.5*Math.random()).set(1),inc:e=>{let t=Ee.status;return t?(typeof e!="number"&&(e=(1-t)*Yr(Math.random()*t,.1,.95)),t=Yr(t+e,0,.994),Ee.set(t)):Ee.start()},trickle:()=>Ee.inc(Math.random()*Ee.settings.trickleRate),render:e=>{if(Ee.isRendered())return document.getElementById("nprogress");Sc(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=Ee.settings.template;const n=t.querySelector(Ee.settings.barSelector),o=e?"-100":Pc(Ee.status||0),r=document.querySelector(Ee.settings.parent);return Mo(n,{transition:"all 0 linear",transform:"translate3d("+o+"%,0,0)"}),r!==document.body&&Sc(r,"nprogress-custom-parent"),r==null||r.appendChild(t),t},remove:()=>{Ac(document.documentElement,"nprogress-busy"),Ac(document.querySelector(Ee.settings.parent),"nprogress-custom-parent");const e=document.getElementById("nprogress");e&&Ap(e)},isRendered:()=>!!document.getElementById("nprogress")},Yr=(e,t,n)=>en?n:e,Pc=e=>(-1+e)*100,Sp=function(){const e=[];function t(){const n=e.shift();n&&n(t)}return function(n){e.push(n),e.length===1&&t()}}(),Mo=function(){const e=["Webkit","O","Moz","ms"],t={};function n(i){return i.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(c,s){return s.toUpperCase()})}function o(i){const c=document.body.style;if(i in c)return i;let s=e.length;const l=i.charAt(0).toUpperCase()+i.slice(1);let u;for(;s--;)if(u=e[s]+l,u in c)return u;return i}function r(i){return i=n(i),t[i]||(t[i]=o(i))}function a(i,c,s){c=r(c),i.style[c]=s}return function(i,c){for(const s in c){const l=c[s];l!==void 0&&Object.prototype.hasOwnProperty.call(c,s)&&a(i,s,l)}}}(),du=(e,t)=>(typeof e=="string"?e:ci(e)).indexOf(" "+t+" ")>=0,Sc=(e,t)=>{const n=ci(e),o=n+t;du(n,t)||(e.className=o.substring(1))},Ac=(e,t)=>{const n=ci(e);if(!du(e,t))return;const o=n.replace(" "+t+" "," ");e.className=o.substring(1,o.length-1)},ci=e=>(" "+(e.className||"")+" ").replace(/\s+/gi," "),Ap=e=>{e&&e.parentNode&&e.parentNode.removeChild(e)};const Tp=()=>{et(()=>{const e=vn(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||Ee.start()}),e.afterEach(n=>{t.add(n.path),Ee.done()})})},Ip=Lt({setup(){Tp()}}),Lp=JSON.parse(`{"logo":"/images/arthas_light.png","logoDark":"/images/arthas_dark.png","repo":"alibaba/arthas","docsDir":"site/docs","docsBranch":"master","locales":{"/":{"selectLanguageName":"\u7B80\u4F53\u4E2D\u6587","selectLanguageText":"Languages","editLinkText":"\u5728 GitHub \u4E0A\u7F16\u8F91\u6B64\u9875","lastUpdated":"\u4E0A\u6B21\u66F4\u65B0","contributorsText":"\u8D21\u732E\u8005","backToHome":"\u56DE\u5230\u9996\u9875","rightMenuText":"\u76EE\u5F55","warning":"\u6CE8\u610F","tip":"\u63D0\u793A","danger":"\u8B66\u544A","notFound":["\u8FD9\u91CC\u4EC0\u4E48\u90FD\u6CA1\u6709","\u6211\u4EEC\u600E\u4E48\u5230\u8FD9\u6765\u4E86\uFF1F","\u8FD9\u662F\u4E00\u4E2A 404 \u9875\u9762","\u770B\u8D77\u6765\u6211\u4EEC\u8FDB\u5165\u4E86\u9519\u8BEF\u7684\u94FE\u63A5"],"openInNewWindow":"\u5728\u65B0\u7A97\u53E3\u6253\u5F00","toggleColorMode":"\u5207\u6362\u989C\u8272\u6A21\u5F0F","toggleSidebar":"\u5207\u6362\u4FA7\u8FB9\u680F","navbar":[{"text":"\u9996\u9875","link":"/"},{"text":"\u5728\u7EBF\u6559\u7A0B","link":"/doc/arthas-tutorials.html?language=cn&id=arthas-basics","target":"_blank"},{"text":"\u6587\u6863","link":"/doc/"},{"text":"\u547D\u4EE4\u5217\u8868","link":"/doc/commands.md"},{"text":"\u4E0B\u8F7D","link":"/doc/download.md"},{"text":"\u7248\u672C","children":[{"text":"v4.x","link":"https://arthas.aliyun.com/"}]}],"sidebar":{"/doc/":[{"text":"\u6587\u6863","children":["/doc/README.md","/doc/quick-start.md","/doc/install-detail.md","/doc/download.md","/doc/advice-class.html",{"text":"\u547D\u4EE4\u5217\u8868","link":"/doc/commands.md","collapsible":true,"children":["/doc/auth.md","/doc/base64.md","/doc/cat.md","/doc/classloader.md","/doc/cls.md","/doc/dashboard.md","/doc/dump.md","/doc/echo.md","/doc/getstatic.md","/doc/grep.md","/doc/heapdump.md","/doc/help.md","/doc/history.md","/doc/jad.md","/doc/jfr.md","/doc/jvm.md","/doc/keymap.md","/doc/logger.md","/doc/mbean.md","/doc/mc.md","/doc/memory.md","/doc/monitor.md","/doc/ognl.md","/doc/options.md","/doc/perfcounter.md","/doc/profiler.md","/doc/pwd.md","/doc/quit.md","/doc/redefine.md","/doc/reset.md","/doc/retransform.md","/doc/sc.md","/doc/session.md","/doc/sm.md","/doc/stack.md","/doc/stop.md","/doc/sysenv.md","/doc/sysprop.md","/doc/tee.md","/doc/thread.md","/doc/trace.md","/doc/tt.md","/doc/version.md","/doc/vmoption.md","/doc/vmtool.md","/doc/watch.md"]},{"text":"\u5176\u4ED6\u7279\u6027","link":"/doc/advanced-use.md","collapsible":true,"children":["/doc/async.md","/doc/save-log.md","/doc/docker.md","/doc/web-console.md","/doc/tunnel.md","/doc/idea-plugin.md","/doc/arthas-properties.html","/doc/agent.html","/doc/spring-boot-starter.md","/doc/http-api.md","/doc/batch-support.md"]},"/doc/faq.md",{"text":"\u7528\u6237\u6848\u4F8B","link":"https://github.com/alibaba/arthas/issues?q=label%3Auser-case"},{"text":"Star me at github","link":"https://github.com/alibaba/arthas"},{"text":"\u7F16\u8BD1\u8C03\u8BD5/\u53C2\u4E0E\u8D21\u732E","link":"https://github.com/alibaba/arthas/blob/master/CONTRIBUTING.md"},{"text":"Release Notes","link":"https://github.com/alibaba/arthas/releases"},{"text":"QQ \u7FA4/\u9489\u9489\u7FA4","link":"/doc/contact-us.md"}]}]},"sidebarDepth":0},"/en/":{"selectLanguageName":"English","selectLanguageText":"Languages","editLinkText":"Edit this page on GitHub","navbar":[{"text":"HOME","link":"/en/"},{"text":"ONLINE TUTORIALS","link":"/doc/arthas-tutorials.html?language=en&id=arthas-basics","target":"_blank"},{"text":"DOCS","link":"/en/doc"},{"text":"COMMANDS","link":"/en/doc/commands.md"},{"text":"DOWNLOAD","link":"/en/doc/download.md"},{"text":"VERSIONS","children":[{"text":"v4.x","link":"https://arthas.aliyun.com/en/"}]}],"sidebar":{"/en/doc":[{"text":"DOCS","children":["/en/doc/README.md","/en/doc/quick-start.md","/en/doc/install-detail.md","/en/doc/download.md","/en/doc/advice-class.html",{"text":"All Commands","link":"/en/doc/commands.md","collapsible":true,"children":["/en/doc/auth.md","/en/doc/base64.md","/en/doc/cat.md","/en/doc/classloader.md","/en/doc/cls.md","/en/doc/dashboard.md","/en/doc/dump.md","/en/doc/echo.md","/en/doc/getstatic.md","/en/doc/grep.md","/en/doc/heapdump.md","/en/doc/help.md","/en/doc/history.md","/en/doc/jad.md","/en/doc/jfr.md","/en/doc/jvm.md","/en/doc/keymap.md","/en/doc/logger.md","/en/doc/mbean.md","/en/doc/mc.md","/en/doc/memory.md","/en/doc/monitor.md","/en/doc/ognl.md","/en/doc/options.md","/en/doc/perfcounter.md","/en/doc/profiler.md","/en/doc/pwd.md","/en/doc/quit.md","/en/doc/redefine.md","/en/doc/reset.md","/en/doc/retransform.md","/en/doc/sc.md","/en/doc/session.md","/en/doc/sm.md","/en/doc/stack.md","/en/doc/stop.md","/en/doc/sysenv.md","/en/doc/sysprop.md","/en/doc/tee.md","/en/doc/thread.md","/en/doc/trace.md","/en/doc/tt.md","/en/doc/version.md","/en/doc/vmoption.md","/en/doc/vmtool.md","/en/doc/watch.md"]},{"text":"Other features","link":"/en/doc/advanced-use.md","collapsible":true,"children":["/en/doc/async.md","/en/doc/save-log.md","/en/doc/docker.md","/en/doc/web-console.md","/en/doc/tunnel.md","/en/doc/idea-plugin.md","/en/doc/arthas-properties.html","/en/doc/agent.html","/en/doc/spring-boot-starter.md","/en/doc/http-api.md","/en/doc/batch-support.md"]},"/en/doc/faq.md",{"text":"User cases","link":"https://github.com/alibaba/arthas/issues?q=label%3Auser-case"},{"text":"Star me at github","link":"https://github.com/alibaba/arthas"},{"text":"Compile and debug/CONTRIBUTING","link":"https://github.com/alibaba/arthas/blob/master/CONTRIBUTING.md"},{"text":"Release Notes","link":"https://github.com/alibaba/arthas/releases"},{"text":"Contact us","link":"/en/doc/contact-us.md"}]}]},"sidebarDepth":0}},"colorMode":"auto","colorModeSwitch":true,"navbar":[],"selectLanguageText":"Languages","selectLanguageAriaLabel":"Select language","sidebar":"auto","sidebarDepth":2,"editLink":true,"editLinkText":"Edit this page","lastUpdated":true,"lastUpdatedText":"Last Updated","contributors":true,"contributorsText":"Contributors","notFound":["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],"backToHome":"Take me home","openInNewWindow":"open in new window","toggleColorMode":"toggle color mode","toggleSidebar":"toggle sidebar"}`),fu=De(Lp),Dp=()=>fu;import.meta.webpackHot&&(__VUE_HMR_RUNTIME__.updateThemeData=e=>{fu.value=e});const hu=Symbol(""),Cr=()=>{const e=We(hu);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},Rp=(e,t)=>{var n;return{...e,...(n=e.locales)==null?void 0:n[t]}},kp=Lt({enhance({app:e}){const t=Dp(),n=e._context.provides[pi],o=te(()=>Rp(t.value,n.value));e.provide(hu,o),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return o.value}}})}}),xp=je({__name:"Badge",props:{type:{type:String,required:!1,default:"tip"},text:{type:String,required:!1,default:""},vertical:{type:String,required:!1,default:void 0}},setup(e){return(t,n)=>(V(),X("span",{class:Ue(["badge",e.type]),style:bo({verticalAlign:e.vertical})},[He(t.$slots,"default",{},()=>[Xt(Me(e.text),1)])],6))}}),we=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n},Cp=we(xp,[["__file","Badge.vue"]]),Mp=je({name:"CodeGroup",setup(e,{slots:t}){const n=De(-1),o=De([]),r=(c=n.value)=>{c{c>0?n.value=c-1:n.value=o.value.length-1,o.value[n.value].focus()},i=(c,s)=>{c.key===" "||c.key==="Enter"?(c.preventDefault(),n.value=s):c.key==="ArrowRight"?(c.preventDefault(),r(s)):c.key==="ArrowLeft"&&(c.preventDefault(),a(s))};return()=>{var s;const c=(((s=t.default)==null?void 0:s.call(t))||[]).filter(l=>l.type.name==="CodeGroupItem").map(l=>(l.props===null&&(l.props={}),l));return c.length===0?null:(n.value<0||n.value>c.length-1?(n.value=c.findIndex(l=>l.props.active===""||l.props.active===!0),n.value===-1&&(n.value=0)):c.forEach((l,u)=>{l.props.active=u===n.value}),Te("div",{class:"code-group"},[Te("div",{class:"code-group__nav"},Te("ul",{class:"code-group__ul"},c.map((l,u)=>{const m=u===n.value;return Te("li",{class:"code-group__li"},Te("button",{ref:d=>{d&&(o.value[u]=d)},class:{"code-group__nav-tab":!0,"code-group__nav-tab-active":m},ariaPressed:m,ariaExpanded:m,onClick:()=>n.value=u,onKeydown:d=>i(d,u)},l.props.title))}))),c]))}}}),jp=["aria-selected"],Hp=je({name:"CodeGroupItem"}),$p=je({...Hp,props:{title:{type:String,required:!0},active:{type:Boolean,required:!1,default:!1}},setup(e){return(t,n)=>(V(),X("div",{class:Ue(["code-group-item",{"code-group-item__active":e.active}]),"aria-selected":e.active},[He(t.$slots,"default")],10,jp))}}),qp=we($p,[["__file","CodeGroupItem.vue"]]);var Tc;const pu=typeof window<"u",Vp=e=>typeof e=="function",Np=e=>typeof e=="string",Jr=()=>{};pu&&((Tc=window==null?void 0:window.navigator)==null?void 0:Tc.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function ur(e){return typeof e=="function"?e():F(e)}function Fp(e,t){function n(...o){e(()=>t.apply(this,o),{fn:t,thisArg:this,args:o})}return n}const _u=e=>e();function Bp(e=_u){const t=De(!0);function n(){t.value=!1}function o(){t.value=!0}return{isActive:t,pause:n,resume:o,eventFilter:(...a)=>{t.value&&e(...a)}}}function zp(e){return e}function vu(e){return Vm()?(Nm(e),!0):!1}function Up(e,t=!0){ni()?Za(e):t?e():wo(e)}function Wp(e,t=!0){ni()?et(e):t?e():wo(e)}function Kp(e=!1,t={}){const{truthyValue:n=!0,falsyValue:o=!1}=t,r=ze(e),a=De(e);function i(c){if(arguments.length)return a.value=c,a.value;{const s=ur(n);return a.value=a.value===s?ur(o):s,a.value}}return r?i:[a,i]}var Ic=Object.getOwnPropertySymbols,Yp=Object.prototype.hasOwnProperty,Jp=Object.prototype.propertyIsEnumerable,Qp=(e,t)=>{var n={};for(var o in e)Yp.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&Ic)for(var o of Ic(e))t.indexOf(o)<0&&Jp.call(e,o)&&(n[o]=e[o]);return n};function Gp(e,t,n={}){const o=n,{eventFilter:r=_u}=o,a=Qp(o,["eventFilter"]);return ot(e,Fp(r,t),a)}var Zp=Object.defineProperty,Xp=Object.defineProperties,e_=Object.getOwnPropertyDescriptors,mr=Object.getOwnPropertySymbols,gu=Object.prototype.hasOwnProperty,bu=Object.prototype.propertyIsEnumerable,Lc=(e,t,n)=>t in e?Zp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,t_=(e,t)=>{for(var n in t||(t={}))gu.call(t,n)&&Lc(e,n,t[n]);if(mr)for(var n of mr(t))bu.call(t,n)&&Lc(e,n,t[n]);return e},n_=(e,t)=>Xp(e,e_(t)),o_=(e,t)=>{var n={};for(var o in e)gu.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&mr)for(var o of mr(e))t.indexOf(o)<0&&bu.call(e,o)&&(n[o]=e[o]);return n};function r_(e,t,n={}){const o=n,{eventFilter:r}=o,a=o_(o,["eventFilter"]),{eventFilter:i,pause:c,resume:s,isActive:l}=Bp(r);return{stop:Gp(e,t,n_(t_({},a),{eventFilter:i})),pause:c,resume:s,isActive:l}}function a_(e){var t;const n=ur(e);return(t=n==null?void 0:n.$el)!=null?t:n}const dr=pu?window:void 0;function i_(...e){let t,n,o,r;if(Np(e[0])?([n,o,r]=e,t=dr):[t,n,o,r]=e,!t)return Jr;let a=Jr;const i=ot(()=>a_(t),s=>{a(),s&&(s.addEventListener(n,o,r),a=()=>{s.removeEventListener(n,o,r),a=Jr})},{immediate:!0,flush:"post"}),c=()=>{i(),a()};return vu(c),c}function c_(e,t=!1){const n=De(),o=()=>n.value=Boolean(e());return o(),Wp(o,t),n}function s_(e,t={}){const{window:n=dr}=t,o=c_(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const a=De(!1),i=()=>{!o.value||(r||(r=n.matchMedia(e)),a.value=r.matches)};return Up(()=>{i(),r&&("addEventListener"in r?r.addEventListener("change",i):r.addListener(i),vu(()=>{"removeEventListener"in r?r.removeEventListener("change",i):r.removeListener(i)}))}),a}const wa=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Oa="__vueuse_ssr_handlers__";wa[Oa]=wa[Oa]||{};const l_=wa[Oa];function u_(e,t){return l_[e]||t}function m_(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"||Array.isArray(e)?"object":Number.isNaN(e)?"any":"number"}var d_=Object.defineProperty,Dc=Object.getOwnPropertySymbols,f_=Object.prototype.hasOwnProperty,h_=Object.prototype.propertyIsEnumerable,Rc=(e,t,n)=>t in e?d_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,kc=(e,t)=>{for(var n in t||(t={}))f_.call(t,n)&&Rc(e,n,t[n]);if(Dc)for(var n of Dc(t))h_.call(t,n)&&Rc(e,n,t[n]);return e};const p_={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}};function __(e,t,n,o={}){var r;const{flush:a="pre",deep:i=!0,listenToStorageChanges:c=!0,writeDefaults:s=!0,mergeDefaults:l=!1,shallow:u,window:m=dr,eventFilter:d,onError:f=R=>{console.error(R)}}=o,v=(u?vl:De)(t);if(!n)try{n=u_("getDefaultStorage",()=>{var R;return(R=dr)==null?void 0:R.localStorage})()}catch(R){f(R)}if(!n)return v;const g=ur(t),b=m_(g),_=(r=o.serializer)!=null?r:p_[b],{pause:y,resume:S}=r_(v,()=>A(v.value),{flush:a,deep:i,eventFilter:d});return m&&c&&i_(m,"storage",K),K(),v;function A(R){try{R==null?n.removeItem(e):n.setItem(e,_.write(R))}catch(E){f(E)}}function D(R){if(!(R&&R.key!==e)){y();try{const E=R?R.newValue:n.getItem(e);if(E==null)return s&&g!==null&&n.setItem(e,_.write(g)),g;if(!R&&l){const U=_.read(E);return Vp(l)?l(U,g):b==="object"&&!Array.isArray(U)?kc(kc({},g),U):U}else return typeof E!="string"?E:_.read(E)}catch(E){f(E)}finally{S()}}}function K(R){R&&R.key!==e||(v.value=D(R))}}function v_(e){return s_("(prefers-color-scheme: dark)",e)}var xc;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(xc||(xc={}));var g_=Object.defineProperty,Cc=Object.getOwnPropertySymbols,b_=Object.prototype.hasOwnProperty,y_=Object.prototype.propertyIsEnumerable,Mc=(e,t,n)=>t in e?g_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,E_=(e,t)=>{for(var n in t||(t={}))b_.call(t,n)&&Mc(e,n,t[n]);if(Cc)for(var n of Cc(t))y_.call(t,n)&&Mc(e,n,t[n]);return e};const w_={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};E_({linear:zp},w_);const nt=()=>Cr(),yu=Symbol(""),si=()=>{const e=We(yu);if(!e)throw new Error("useDarkMode() is called without provider.");return e},O_=()=>{const e=nt(),t=v_(),n=__("vuepress-color-scheme",e.value.colorMode),o=te({get(){return e.value.colorModeSwitch?n.value==="auto"?t.value:n.value==="dark":e.value.colorMode==="dark"},set(r){r===t.value?n.value="auto":n.value=r?"dark":"light"}});hn(yu,o),P_(o)},P_=e=>{const t=(n=e.value)=>{const o=window==null?void 0:window.document.querySelector("html");o==null||o.classList.toggle("dark",n)};et(()=>{ot(e,t,{immediate:!0})}),Lr(()=>t())},Eu=(...e)=>{const n=vn().resolve(...e),o=n.matched[n.matched.length-1];if(!(o!=null&&o.redirect))return n;const{redirect:r}=o,a=he(r)?r(n):r,i=Le(a)?{path:a}:a;return Eu({hash:n.hash,query:n.query,params:n.params,...i})},li=e=>{const t=Eu(encodeURI(e));return{text:t.meta.title||e,link:t.name==="404"?e:t.fullPath}};let Qr=null,Kn=null;const S_={wait:()=>Qr,pending:()=>{Qr=new Promise(e=>Kn=e)},resolve:()=>{Kn==null||Kn(),Qr=null,Kn=null}},wu=()=>S_,Ou=Symbol("sidebarItems"),ui=()=>{const e=We(Ou);if(!e)throw new Error("useSidebarItems() is called without provider.");return e},A_=()=>{const e=nt(),t=At(),n=te(()=>T_(t.value,e.value));hn(Ou,n)},T_=(e,t)=>{var r,a,i,c;const n=(a=(r=e.sidebar)!=null?r:t.sidebar)!=null?a:"auto",o=(c=(i=e.sidebarDepth)!=null?i:t.sidebarDepth)!=null?c:2;return e.home||n===!1?[]:n==="auto"?L_(o):ce(n)?Pu(n,o):oi(n)?D_(n,o):[]},I_=(e,t)=>({text:e.title,link:e.link,children:mi(e.children,t)}),mi=(e,t)=>t>0?e.map(n=>I_(n,t-1)):[],L_=e=>{const t=mt();return[{text:t.value.title,children:mi(t.value.headers,e)}]},Pu=(e,t)=>{const n=Dt(),o=mt(),r=a=>{var c;let i;if(Le(a)?i=li(a):i=a,i.children)return{...i,children:i.children.map(s=>r(s))};if(i.link===n.path){const s=((c=o.value.headers[0])==null?void 0:c.level)===1?o.value.headers[0].children:o.value.headers;return{...i,children:mi(s,t)}}return i};return e.map(a=>r(a))},D_=(e,t)=>{var a;const n=Dt(),o=Xl(e,n.path),r=(a=e[o])!=null?a:[];return Pu(r,t)};const R_=["src"],k_={__name:"UserBoard",props:{img:{type:Object,required:!0}},setup(e){return(t,n)=>(V(),X("img",{class:"users-logo",src:e.img.logo},null,8,R_))}},x_=we(k_,[["__scopeId","data-v-024b28a0"],["__file","UserBoard.vue"]]);const C_={key:0,class:"user-boards"},M_=["innerHTML"],j_={class:"user-logos"},H_={__name:"HomeUserBoards",setup(e){const t=At(),n=Oe(t.value.users)||[];return(o,r)=>F(n)?(V(),X("div",C_,[ue("h1",null,Me(F(t).users_title),1),ue("p",{innerHTML:F(t).users_details},null,8,M_),ue("div",j_,[(V(!0),X(Ae,null,vt(F(n),a=>(V(),$e(x_,{key:a.logo,img:a},null,8,["img"]))),128))])])):Ne("v-if",!0)}},$_=we(H_,[["__scopeId","data-v-5032c352"],["__file","HomeUserBoards.vue"]]);const q_={key:0,class:"features"},V_={key:0,class:"icon"},N_={__name:"HomeFeatures",setup(e){const t=At(),n=te(()=>ce(t.value.features)?t.value.features:[]);return(o,r)=>F(n).length?(V(),X("div",q_,[(V(!0),X(Ae,null,vt(F(n),a=>(V(),X("div",{key:a.title,class:"feature"},[a.icon?(V(),X("div",V_,Me(a.icon),1)):Ne("v-if",!0),ue("h2",null,Me(a.title),1),ue("p",null,Me(a.details),1)]))),128))])):Ne("v-if",!0)}},F_=we(N_,[["__scopeId","data-v-514d14c6"],["__file","HomeFeatures.vue"]]),B_={name:"Star"},z_={version:"1.1",id:"Layer_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 512 512",style:{"enable-background":"new 0 0 512 512",height:"1rem",fill:"var(--c-text)"},"xml:space":"preserve"},U_=ue("g",null,[ue("path",{d:`M175.1,168.9L13.7,186.8c-5.8,0.7-11,4.6-12.9,10.5c-1.9,5.9,0,12.1,4.3,16c48,43.8,120.1,109.4,120.1,109.4 + c-0.1,0-19.8,95.4-32.9,159.1c-1.1,5.8,1,11.9,6,15.5c5,3.7,11.4,3.7,16.5,0.9C171.3,466,256,417.7,256,417.7l141.1,80.5 + c5.1,2.8,11.6,2.8,16.6-0.9c5-3.7,7.1-9.7,6-15.5l-32.8-159.1L507,213.4c4.3-4,6.2-10.2,4.3-16.1c-1.9-5.9-7.1-9.8-12.9-10.4 + c-64.6-7.2-161.5-18-161.5-18L269.9,20.8c-2.5-5.3-7.8-9-14-9c-6.2,0-11.5,3.7-13.9,9L175.1,168.9z`})],-1),W_=[U_];function K_(e,t,n,o,r,a){return V(),X("svg",z_,W_)}const Y_=we(B_,[["render",K_],["__file","Star.vue"]]),J_={name:"Fork"},Q_={version:"1.1",id:"Layer_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"131 -131 512 512",style:{"enable-background":"new 131 -131 512 512",height:"1rem",fill:"var(--c-text)"},"xml:space":"preserve"},G_=ue("g",{id:"XMLID_2_"},[ue("path",{id:"XMLID_8_",d:`M312.8,317c0-8.5-3.4-16.2-9.4-23s-13.7-9.4-23-9.4c-9.3,0-16.2,3.4-23,9.4c-6,6-9.4,13.7-9.4,23 + s3.4,16.2,9.4,23c6,6,13.7,9.4,23,9.4c9.3,0,16.2-3.4,23-9.4C310.2,334,312.8,325.5,312.8,317z M312.8-67c0-8.5-3.4-16.2-9.4-23 + c-6-6-13.7-9.4-23-9.4c-9.3,0-16.2,3.4-23,9.4c-6,6-9.4,13.7-9.4,23c0,8.5,3.4,16.2,9.4,23c6,6,13.7,9.4,23,9.4 + c9.3,0,16.2-3.4,23-9.4C310.2-49.9,312.8-58.5,312.8-67z M526.1-24.3c0-8.5-3.4-16.2-9.4-23s-13.7-9.4-23-9.4s-16.2,3.4-23,9.4 + s-9.4,13.7-9.4,23s3.4,16.2,9.4,23c6,6,13.7,9.4,23,9.4s16.2-3.4,23-9.4C522.7-8.1,526.1-15.8,526.1-24.3z M557.7-24.3 + c0,11.9-2.6,22.2-8.5,32.4s-13.7,17.9-23,23c-0.9,64-25.6,110.1-75.1,138.2c-15.4,8.5-37.5,17.1-67.4,27.3 + c-28.2,8.5-46.9,17.1-56.3,23.9c-9.4,6.8-13.7,17.9-13.7,33.3v8.5c9.4,6,17.9,13.7,23,23c5.1,9.4,8.5,20.5,8.5,32.4 + c0,17.9-6,33.3-18.8,45.2c-12.8,11.9-28.1,18.1-46.1,18.1s-33.3-6-45.2-18.8s-18.8-27.3-18.8-45.2c0-11.9,2.6-22.2,8.5-32.4 + c6-10.2,13.7-17.9,23-23V-11.5c-9.4-6-17.9-13.7-23-23s-8.5-20.6-8.5-32.5c0-17.9,6-33.3,18.8-45.2c12.8-11.9,27.3-18.8,45.2-18.8 + c17.9,0,33.3,6,45.2,18.8s18.8,27.3,18.8,45.2c0,11.9-2.6,22.2-8.5,32.4c-5.9,10.2-13.7,17.9-23,23V154c11.9-6,29-11.9,51.2-18.8 + c11.9-3.4,22.2-6.8,29-10.2c6.8-3.4,15.4-6,23.9-10.2s15.4-8.5,19.6-12.8s9.4-10.2,13.7-17.1s7.7-14.5,9.4-23 + c1.7-8.5,2.6-18.8,2.6-30.7c-9.4-6-17.9-13.7-23-23s-8.5-20.5-8.5-32.4c0-17.9,6-33.3,18.8-45.2c12.8-12.8,27.3-18.8,45.2-18.8 + s33.3,6,45.2,18.8C551.7-57.6,557.7-42.3,557.7-24.3z`})],-1),Z_=[G_];function X_(e,t,n,o,r,a){return V(),X("svg",Q_,Z_)}const ev=we(J_,[["render",X_],["__file","Fork.vue"]]);const tv=["href"],nv=Xt(" \xA0 "),ov={__name:"Badge",props:{comp:{type:Object,required:!0},data:{type:Number,required:!0}},setup(e){const t=e,o=`https://github.com/${Cr().value.repo}`,r=o,a=`${o}/fork`;let i=o;switch(t.comp.name){case"Star":i=r;break;case"Fork":i=a;break}return(c,s)=>{const l=It("CountTo");return V(),X("a",{class:"my-badge",href:F(i),target:"_blank"},[(V(),$e(Bd(e.comp))),nv,ie(l,{startVal:0,endVal:e.data,duration:500},null,8,["endVal"])],8,tv)}}},jc=we(ov,[["__scopeId","data-v-b201bc64"],["__file","Badge.vue"]]);const rv={class:"badges"},av={__name:"HomeBadges",setup(e){const t=De(29582),n=De(6494);return Za(async()=>{const r=await fetch("https://arthas.aliyun.com/api/starCount").then(i=>i.json()),a=await fetch("https://arthas.aliyun.com/api/forkCount").then(i=>i.json());t.value=r||t.value,n.value=a||n.value}),(r,a)=>(V(),X("div",rv,[ie(jc,{comp:Y_,data:t.value},null,8,["data"]),ie(jc,{comp:ev,data:n.value},null,8,["data"])]))}},iv=we(av,[["__scopeId","data-v-d7ced36e"],["__file","HomeBadges.vue"]]),cv={name:"MdiGithub"},sv={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"}},lv=ue("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"},null,-1),uv=[lv];function mv(e,t,n,o,r,a){return V(),X("svg",sv,uv)}const dv=we(cv,[["render",mv],["__file","GitHub.vue"]]),fv=["href","rel","target","aria-label"],hv={key:1},pv=je({inheritAttrs:!1}),_v=Object.assign(pv,{__name:"AutoLink",props:{item:{type:Object,required:!0}},setup(e){const t=e,n=Dt(),o=_i(),{item:r}=Qa(t),a=te(()=>So(r.value.link)),i=te(()=>nh(r.value.link)||oh(r.value.link)),c=te(()=>{if(!i.value){if(r.value.target)return r.value.target;if(a.value)return"_blank"}}),s=te(()=>c.value==="_blank"),l=te(()=>!a.value&&!i.value&&!s.value),u=te(()=>{if(!i.value){if(r.value.rel)return r.value.rel;if(s.value)return"noopener noreferrer"}}),m=te(()=>r.value.ariaLabel||r.value.text),d=te(()=>{const g=Object.keys(o.value.locales);return g.length?!g.some(b=>b===r.value.link):r.value.link!=="/"}),f=te(()=>d.value?n.path.startsWith(r.value.link):!1),v=te(()=>l.value?r.value.activeMatch?new RegExp(r.value.activeMatch).test(n.path):f.value:!1);return(g,b)=>{const _=It("RouterLink"),y=It("AutoLinkExternalIcon");return F(l)?(V(),$e(_,_a({key:0,class:{"router-link-active":F(v)},to:F(r).link,"aria-label":F(m)},g.$attrs),{default:Ke(()=>[He(g.$slots,"before"),Xt(" "+Me(F(r).text)+" ",1),He(g.$slots,"after")]),_:3},16,["class","to","aria-label"])):(V(),X("a",_a({key:1,class:"external-link",href:F(r).link,rel:F(u),target:F(c),"aria-label":F(m)},g.$attrs),[He(g.$slots,"before"),F(r).text==="GitHub"?(V(),$e(dv,{key:0})):(V(),X("span",hv,Me(F(r).text),1)),F(s)&&F(r).text!=="GitHub"?(V(),$e(y,{key:2})):Ne("v-if",!0),He(g.$slots,"after")],16,fv))}}}),Ht=we(_v,[["__file","AutoLink.vue"]]),Hc=e=>decodeURI(e).replace(/#.*$/,"").replace(/(index)?\.(md|html)$/,""),vv=(e,t)=>{if(t.hash===e)return!0;const n=Hc(t.path),o=Hc(e);return n===o},Su=(e,t)=>e.link&&vv(e.link,t)?!0:e.children?e.children.some(n=>Su(n,t)):!1,Au=e=>!So(e)||/github\.com/.test(e)?"GitHub":/bitbucket\.org/.test(e)?"Bitbucket":/gitlab\.com/.test(e)?"GitLab":/gitee\.com/.test(e)?"Gitee":null,gv={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},bv=({docsRepo:e,editLinkPattern:t})=>{if(t)return t;const n=Au(e);return n!==null?gv[n]:null},yv=({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:o,editLinkPattern:r})=>{if(!o)return null;const a=bv({docsRepo:e,editLinkPattern:r});return a?a.replace(/:repo/,So(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,Zl(`${Gl(n)}/${o}`)):null},Ev={class:"hero"},wv={key:0,id:"main-title"},Ov={key:1,class:"description"},Pv={key:2,class:"actions"},Sv={__name:"HomeHero",setup(e){const t=At(),n=vi(),o=si(),r=te(()=>o.value&&t.value.heroImageDark!==void 0?t.value.heroImageDark:t.value.heroImage),a=te(()=>t.value.heroText===null?null:t.value.heroText||n.value.title||"Hello"),i=te(()=>t.value.heroAlt||a.value||"hero"),c=te(()=>t.value.tagline===null?null:t.value.tagline||n.value.description||"Welcome to your VuePress site"),s=te(()=>ce(t.value.actions)?t.value.actions.map(({text:u,link:m,type:d="primary"})=>({text:u,link:m,type:d})):[]),l=()=>{if(!r.value)return null;const u=Te("img",{src:bi(r.value),style:"width: 60%;",alt:i.value});return t.value.heroImageDark===void 0?u:Te(gi,()=>u)};return(u,m)=>(V(),X("header",Ev,[ie(l),ue("div",null,[F(a)?(V(),X("h1",wv,Me(F(a)),1)):Ne("v-if",!0),F(c)?(V(),X("p",Ov,Me(F(c)),1)):Ne("v-if",!0),ie(iv),F(s).length?(V(),X("p",Pv,[(V(!0),X(Ae,null,vt(F(s),d=>(V(),$e(Ht,{key:d.text,class:Ue(["action-button",[d.type]]),item:d},null,8,["class","item"]))),128))])):Ne("v-if",!0)])]))}},Av=we(Sv,[["__file","HomeHero.vue"]]),Tv={},Iv={class:"theme-default-content"};function Lv(e,t){const n=It("Content");return V(),X("div",Iv,[ie(n)])}const Dv=we(Tv,[["render",Lv],["__file","HomeContent.vue"]]),Rv=["innerHTML"],kv=["textContent"],xv=je({__name:"HomeFooter",setup(e){const t=At(),n=te(()=>t.value.footer),o=te(()=>t.value.footerHtml);return(r,a)=>F(n)?(V(),X(Ae,{key:0},[Ne(" eslint-disable-next-line vue/no-v-html "),F(o)?(V(),X("div",{key:0,class:"footer",innerHTML:F(n)},null,8,Rv)):(V(),X("div",{key:1,class:"footer",textContent:Me(F(n))},null,8,kv))],64)):Ne("v-if",!0)}}),Cv=we(xv,[["__file","HomeFooter.vue"]]),Mv={class:"home"},jv={__name:"Home",setup(e){return(t,n)=>(V(),X("main",Mv,[ie(Av),ie(F_),ie(Dv),ie($_),ie(Cv)]))}},Hv=we(jv,[["__file","Home.vue"]]);const $v={__name:"NavbarBrand",setup(e){const t=mt(),n=si(),o=Fn(),r=vi(),a=Cr(),i=De(t.value.version),c=te(()=>a.value.home||o.value),s=te(()=>r.value.title),l=te(()=>n.value&&a.value.logoDark!==void 0?a.value.logoDark:a.value.logo),u=()=>Te("span",{class:"navbar-version"},`v${i.value}`),m=()=>{if(!l.value)return null;const d=Te("img",{class:"logo",src:bi(l.value),alt:s.value});return a.value.logoDark===void 0?d:Te(gi,()=>d)};return(d,f)=>{const v=It("RouterLink");return V(),$e(v,{to:F(c)},{default:Ke(()=>[ie(m),F(s)?(V(),X("span",{key:0,class:Ue(["site-name",{"can-hide":F(l)}])},Me(F(s)),3)):Ne("v-if",!0),ie(u)]),_:1},8,["to"])}}},qv=we($v,[["__scopeId","data-v-a8869d06"],["__file","NavbarBrand.vue"]]),Vv={},Nv={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"},Fv=ue("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"},null,-1),Bv=[Fv];function zv(e,t){return V(),X("svg",Nv,Bv)}const $c=we(Vv,[["render",zv],["__file","Translate.vue"]]),Uv=je({__name:"DropdownTransition",setup(e){const t=o=>{o.style.height=o.scrollHeight+"px"},n=o=>{o.style.height=""};return(o,r)=>(V(),$e(Po,{name:"dropdown",onEnter:t,onAfterEnter:n,onBeforeLeave:t},{default:Ke(()=>[He(o.$slots,"default")]),_:3}))}}),Tu=we(Uv,[["__file","DropdownTransition.vue"]]),Wv=["aria-label"],Kv={key:1,class:"title"},Yv=ue("span",{class:"arrow down"},null,-1),Jv=["aria-label"],Qv={key:1,class:"title"},Gv={class:"navbar-dropdown"},Zv={class:"navbar-dropdown-subtitle"},Xv={key:1},eg={class:"navbar-dropdown-subitem-wrapper"},tg={__name:"NavbarDropdown",props:{item:{type:Object,required:!0}},setup(e){const t=e,{item:n}=Qa(t),o=te(()=>n.value.ariaLabel||n.value.text),r=De(!1),a=Dt();ot(()=>a.path,()=>{r.value=!1});const i=s=>{s.detail===0?r.value=!r.value:r.value=!1},c=(s,l)=>l[l.length-1]===s;return(s,l)=>(V(),X("div",{class:Ue(["navbar-dropdown-wrapper",{open:r.value}])},[ue("button",{class:"navbar-dropdown-title",type:"button","aria-label":F(o),onClick:i},[F(n).text==="Languages"?(V(),$e($c,{key:0})):(V(),X("span",Kv,Me(F(n).text),1)),Yv],8,Wv),ue("button",{class:"navbar-dropdown-title-mobile",type:"button","aria-label":F(o),onClick:l[0]||(l[0]=u=>r.value=!r.value)},[F(n).text==="Languages"?(V(),$e($c,{key:0})):(V(),X("span",Qv,Me(F(n).text),1)),ue("span",{class:Ue(["arrow",r.value?"down":"right"])},null,2)],8,Jv),ie(Tu,null,{default:Ke(()=>[or(ue("ul",Gv,[(V(!0),X(Ae,null,vt(F(n).children,u=>(V(),X("li",{key:u.text,class:"navbar-dropdown-item"},[u.children?(V(),X(Ae,{key:0},[ue("h4",Zv,[u.link?(V(),$e(Ht,{key:0,item:u,onFocusout:m=>c(u,F(n).children)&&u.children.length===0&&(r.value=!1)},null,8,["item","onFocusout"])):(V(),X("span",Xv,Me(u.text),1))]),ue("ul",eg,[(V(!0),X(Ae,null,vt(u.children,m=>(V(),X("li",{key:m.link,class:"navbar-dropdown-subitem"},[ie(Ht,{item:m,onFocusout:d=>c(m,u.children)&&c(u,F(n).children)&&(r.value=!1)},null,8,["item","onFocusout"])]))),128))])],64)):(V(),$e(Ht,{key:1,item:u,onFocusout:m=>c(u,F(n).children)&&(r.value=!1)},null,8,["item","onFocusout"]))]))),128))],512),[[sr,r.value]])]),_:1})],2))}},ng=we(tg,[["__file","NavbarDropdown.vue"]]),og={key:0,class:"navbar-items"},rg=je({__name:"NavbarItems",setup(e){const t=()=>{const l=vn(),u=Fn(),m=vi(),d=nt();return te(()=>{var y,S,A;const f=Object.keys(m.value.locales);if(f.length<2)return[];const v=l.currentRoute.value.path,g=l.currentRoute.value.fullPath,b=l.currentRoute.value.hash;return[{text:(y=d.value.selectLanguageText)!=null?y:"unknown language",ariaLabel:(A=(S=d.value.selectLanguageAriaLabel)!=null?S:d.value.selectLanguageText)!=null?A:"unknown language",children:f.map(D=>{var H,P,T,k,M,j;const K=(P=(H=m.value.locales)==null?void 0:H[D])!=null?P:{},R=(k=(T=d.value.locales)==null?void 0:T[D])!=null?k:{},E=`${K.lang}`,U=(M=R.selectLanguageName)!=null?M:E;let Y;if(E===m.value.lang)Y=g;else{const W=v.replace(u.value,D);l.getRoutes().some(ee=>ee.path===W)?Y=`${W}${b}`:Y=(j=R.home)!=null?j:D}return{text:U,link:Y}})}]})},n=()=>{const l=nt(),u=te(()=>l.value.repo),m=te(()=>u.value?Au(u.value):null),d=te(()=>u.value&&!So(u.value)?`https://github.com/${u.value}`:u.value),f=te(()=>d.value?l.value.repoLabel?l.value.repoLabel:m.value===null?"Source":m.value:null);return te(()=>!d.value||!f.value?[]:[{text:f.value,link:d.value}])},o=l=>Le(l)?li(l):l.children?{...l,children:l.children.map(o)}:l,a=(()=>{const l=nt();return te(()=>(l.value.navbar||[]).map(o))})(),i=t(),c=n(),s=te(()=>[...a.value,...i.value,...c.value]);return(l,u)=>F(s).length?(V(),X("nav",og,[(V(!0),X(Ae,null,vt(F(s),m=>(V(),X("div",{key:m.text,class:"navbar-item"},[m.children?(V(),$e(ng,{key:0,item:m},null,8,["item"])):(V(),$e(Ht,{key:1,item:m},null,8,["item"]))]))),128))])):Ne("v-if",!0)}}),Iu=we(rg,[["__file","NavbarItems.vue"]]),ag=["title"],ig={class:"icon",focusable:"false",viewBox:"0 0 32 32"},cg=df('',9),sg=[cg],lg={class:"icon",focusable:"false",viewBox:"0 0 32 32"},ug=ue("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"},null,-1),mg=[ug],dg=je({__name:"ToggleColorModeButton",setup(e){const t=nt(),n=si(),o=()=>{n.value=!n.value};return(r,a)=>(V(),X("button",{class:"toggle-color-mode-button",title:F(t).toggleColorMode,onClick:o},[or((V(),X("svg",ig,sg,512)),[[sr,!F(n)]]),or((V(),X("svg",lg,mg,512)),[[sr,F(n)]])],8,ag))}}),fg=we(dg,[["__file","ToggleColorModeButton.vue"]]),hg=["title"],pg=ue("div",{class:"icon","aria-hidden":"true"},[ue("span"),ue("span"),ue("span")],-1),_g=[pg],vg=je({__name:"ToggleSidebarButton",emits:["toggle"],setup(e){const t=nt();return(n,o)=>(V(),X("div",{class:"toggle-sidebar-button",title:F(t).toggleSidebar,"aria-expanded":"false",role:"button",tabindex:"0",onClick:o[0]||(o[0]=r=>n.$emit("toggle"))},_g,8,hg))}}),gg=we(vg,[["__file","ToggleSidebarButton.vue"]]),bg=je({__name:"Navbar",emits:["toggle-sidebar"],setup(e){const t=nt(),n=De(null),o=De(null),r=De(0),a=te(()=>r.value?{maxWidth:r.value+"px"}:{});et(()=>{const s=i(n.value,"paddingLeft")+i(n.value,"paddingRight"),l=()=>{var u;window.innerWidth<=719?r.value=0:r.value=n.value.offsetWidth-s-(((u=o.value)==null?void 0:u.offsetWidth)||0)};l(),window.addEventListener("resize",l,!1),window.addEventListener("orientationchange",l,!1)});function i(c,s){var m,d,f;const l=(f=(d=(m=c==null?void 0:c.ownerDocument)==null?void 0:m.defaultView)==null?void 0:d.getComputedStyle(c,null))==null?void 0:f[s],u=Number.parseInt(l,10);return Number.isNaN(u)?0:u}return(c,s)=>{const l=It("NavbarSearch");return V(),X("header",{ref_key:"navbar",ref:n,class:"navbar"},[ie(gg,{onToggle:s[0]||(s[0]=u=>c.$emit("toggle-sidebar"))}),ue("span",{ref_key:"navbarBrand",ref:o},[ie(qv)],512),ue("div",{class:"navbar-items-wrapper",style:bo(F(a))},[He(c.$slots,"before"),ie(Iu,{class:"can-hide"}),He(c.$slots,"after"),F(t).colorModeSwitch?(V(),$e(fg,{key:0})):Ne("v-if",!0),ie(l)],4)],512)}}}),yg=we(bg,[["__file","Navbar.vue"]]);const Eg={class:"right-menu-wrapper"},wg={class:"right-menu-margin"},Og={class:"right-menu-title"},Pg={class:"right-menu-content"},Sg=["href","title"],Ag=["href"],Tg=["href","title"],Ig=["href"],Lg={__name:"RightMenu",setup(e){var s;const t=mt(),n=Cr(),o=De(""),r=De([]);let a=De("");o.value=(s=n.value.rightMenuText)!=null?s:"Table of Contents";function i(){r.value=t.value.headers}function c(){a.value=decodeURIComponent(window.location.hash.slice(1))}return et(()=>{i(),c()}),ot(Dt(),()=>{r.value=t.value.headers,c()}),(l,u)=>(V(),X("div",Eg,[ue("div",wg,[ue("div",Og,Me(o.value),1),ue("div",Pg,[(V(!0),X(Ae,null,vt(r.value,(m,d)=>(V(),X(Ae,{key:d},[ue("div",{class:Ue(["right-menu-item","level"+m.level,{active:m.slug===F(a)}])},[m.title.replace(/[^\x00-\xff]/g,"01").length>=36?(V(),X("a",{key:0,href:"#"+m.slug,title:m.title},Me(m.title),9,Sg)):(V(),X("a",{key:1,href:"#"+m.slug},Me(m.title),9,Ag))],2),(V(!0),X(Ae,null,vt(m.children,(f,v)=>(V(),X("div",{class:Ue(["right-menu-item","level"+f.level,{active:f.slug===F(a)}]),key:v},[f.title.replace(/[^\x00-\xff]/g,"01").length>=35?(V(),X("a",{key:0,href:"#"+f.slug,title:f.title},Me(f.title),9,Tg)):(V(),X("a",{key:1,href:"#"+f.slug},Me(f.title),9,Ig))],2))),128))],64))),128))])])]))}},Dg=we(Lg,[["__scopeId","data-v-64666cd5"],["__file","RightMenu.vue"]]),Rg={class:"page-meta"},kg={key:0,class:"meta-item edit-link"},xg={key:1,class:"meta-item last-updated"},Cg={class:"meta-item-label"},Mg={class:"meta-item-info"},jg={key:2,class:"meta-item contributors"},Hg={class:"meta-item-label"},$g={class:"meta-item-info"},qg=["title"],Vg=Xt(", "),Ng=je({__name:"PageMeta",setup(e){const t=()=>{const s=nt(),l=mt(),u=At();return te(()=>{var y,S,A;if(!((S=(y=u.value.editLink)!=null?y:s.value.editLink)!=null?S:!0))return null;const{repo:d,docsRepo:f=d,docsBranch:v="main",docsDir:g="",editLinkText:b}=s.value;if(!f)return null;const _=yv({docsRepo:f,docsBranch:v,docsDir:g,filePathRelative:l.value.filePathRelative,editLinkPattern:(A=u.value.editLinkPattern)!=null?A:s.value.editLinkPattern});return _?{text:b!=null?b:"Edit this page",link:_}:null})},n=()=>{const s=nt(),l=mt(),u=At();return te(()=>{var f,v,g,b;return!((v=(f=u.value.lastUpdated)!=null?f:s.value.lastUpdated)!=null?v:!0)||!((g=l.value.git)!=null&&g.updatedTime)?null:new Date((b=l.value.git)==null?void 0:b.updatedTime).toLocaleString()})},o=()=>{const s=nt(),l=mt(),u=At();return te(()=>{var d,f,v,g;return((f=(d=u.value.contributors)!=null?d:s.value.contributors)!=null?f:!0)&&(g=(v=l.value.git)==null?void 0:v.contributors)!=null?g:null})},r=nt(),a=t(),i=n(),c=o();return(s,l)=>{const u=It("ClientOnly");return V(),X("footer",Rg,[F(a)?(V(),X("div",kg,[ie(Ht,{class:"meta-item-label",item:F(a)},null,8,["item"])])):Ne("v-if",!0),F(i)?(V(),X("div",xg,[ue("span",Cg,Me(F(r).lastUpdatedText)+": ",1),ie(u,null,{default:Ke(()=>[ue("span",Mg,Me(F(i)),1)]),_:1})])):Ne("v-if",!0),F(c)&&F(c).length?(V(),X("div",jg,[ue("span",Hg,Me(F(r).contributorsText)+": ",1),ue("span",$g,[(V(!0),X(Ae,null,vt(F(c),(m,d)=>(V(),X(Ae,{key:d},[ue("span",{class:"contributor",title:`email: ${m.email}`},Me(m.name),9,qg),d!==F(c).length-1?(V(),X(Ae,{key:0},[Vg],64)):Ne("v-if",!0)],64))),128))])])):Ne("v-if",!0)])}}}),Fg=we(Ng,[["__file","PageMeta.vue"]]),Bg={key:0,class:"page-nav"},zg={class:"inner"},Ug={key:0,class:"prev"},Wg={key:1,class:"next"},Kg=je({__name:"PageNav",setup(e){const t=s=>s===!1?null:Le(s)?li(s):oi(s)?s:!1,n=(s,l,u)=>{const m=s.findIndex(d=>d.link===l);if(m!==-1){const d=s[m+u];return d!=null&&d.link?d:null}for(const d of s)if(d.children){const f=n(d.children,l,u);if(f)return f}return null},o=At(),r=ui(),a=Dt(),i=te(()=>{const s=t(o.value.prev);return s!==!1?s:n(r.value,a.path,-1)}),c=te(()=>{const s=t(o.value.next);return s!==!1?s:n(r.value,a.path,1)});return(s,l)=>F(i)||F(c)?(V(),X("nav",Bg,[ue("p",zg,[F(i)?(V(),X("span",Ug,[ie(Ht,{item:F(i)},null,8,["item"])])):Ne("v-if",!0),F(c)?(V(),X("span",Wg,[ie(Ht,{item:F(c)},null,8,["item"])])):Ne("v-if",!0)])])):Ne("v-if",!0)}}),Yg=we(Kg,[["__file","PageNav.vue"]]);const Jg={class:"page"},Qg={__name:"Page",setup(e){function t(){return mt().value.headers.length>0}return(n,o)=>{const r=It("Content");return V(),X("main",Jg,[He(n.$slots,"top",{},void 0,!0),ue("div",{class:Ue([t()&&"right-menu-padding","theme-default-content"])},[He(n.$slots,"content-top",{},void 0,!0),t()?(V(),$e(Dg,{key:0})):Ne("v-if",!0),ie(r),He(n.$slots,"content-bottom",{},void 0,!0)],2),ie(Fg,{class:Ue(t()&&"right-menu-padding")},null,8,["class"]),ie(Yg,{class:Ue(t()&&"right-menu-padding")},null,8,["class"]),He(n.$slots,"bottom",{},void 0,!0)])}}},Gg=we(Qg,[["__scopeId","data-v-fdd717e0"],["__file","Page.vue"]]),Zg=["onKeydown"],Xg={class:"sidebar-item-children"},e0=je({__name:"SidebarItem",props:{item:{type:Object,required:!0},depth:{type:Number,required:!1,default:0}},setup(e){const t=e,{item:n,depth:o}=Qa(t),r=Dt(),a=vn(),i=te(()=>Su(n.value,r)),c=te(()=>({"sidebar-item":!0,"sidebar-heading":o.value===0,active:i.value,collapsible:n.value.collapsible})),s=te(()=>n.value.collapsible?i.value:!0),[l,u]=Kp(s.value),m=f=>{n.value.collapsible&&(f.preventDefault(),u())},d=a.afterEach(f=>{wo(()=>{l.value=s.value})});return Ir(()=>{d()}),(f,v)=>{var b;const g=It("SidebarItem",!0);return V(),X("li",null,[F(n).link?(V(),$e(Ht,{key:0,class:Ue(F(c)),item:F(n)},null,8,["class","item"])):(V(),X("p",{key:1,tabindex:"0",class:Ue(F(c)),onClick:m,onKeydown:Yf(m,["enter"])},[Xt(Me(F(n).text)+" ",1),F(n).collapsible?(V(),X("span",{key:0,class:Ue(["arrow",F(l)?"down":"right"])},null,2)):Ne("v-if",!0)],42,Zg)),(b=F(n).children)!=null&&b.length?(V(),$e(Tu,{key:2},{default:Ke(()=>[or(ue("ul",Xg,[(V(!0),X(Ae,null,vt(F(n).children,_=>(V(),$e(g,{key:`${F(o)}${_.text}${_.link}`,item:_,depth:F(o)+1},null,8,["item","depth"]))),128))],512),[[sr,F(l)]])]),_:1})):Ne("v-if",!0)])}}}),t0=we(e0,[["__file","SidebarItem.vue"]]),n0={key:0,class:"sidebar-items"},o0=je({__name:"SidebarItems",setup(e){const t=Dt(),n=ui();return et(()=>{ot(()=>t.hash,o=>{const r=document.querySelector(".sidebar");if(!r)return;const a=document.querySelector(`.sidebar a.sidebar-item[href="${t.path}${o}"]`);if(!a)return;const{top:i,height:c}=r.getBoundingClientRect(),{top:s,height:l}=a.getBoundingClientRect();si+c&&a.scrollIntoView(!1)})}),(o,r)=>F(n).length?(V(),X("ul",n0,[(V(!0),X(Ae,null,vt(F(n),a=>(V(),$e(t0,{key:`${a.text}${a.link}`,item:a},null,8,["item"]))),128))])):Ne("v-if",!0)}}),r0=we(o0,[["__file","SidebarItems.vue"]]),a0={class:"sidebar"},i0=je({__name:"Sidebar",setup(e){return(t,n)=>(V(),X("aside",a0,[ie(Iu),He(t.$slots,"top"),ie(r0),He(t.$slots,"bottom")]))}}),c0=we(i0,[["__file","Sidebar.vue"]]),s0=je({__name:"Layout",setup(e){const t=mt(),n=At(),o=nt(),r=te(()=>n.value.navbar!==!1&&o.value.navbar!==!1),a=ui(),i=De(!1),c=b=>{i.value=typeof b=="boolean"?b:!i.value},s={x:0,y:0},l=b=>{s.x=b.changedTouches[0].clientX,s.y=b.changedTouches[0].clientY},u=b=>{const _=b.changedTouches[0].clientX-s.x,y=b.changedTouches[0].clientY-s.y;Math.abs(_)>Math.abs(y)&&Math.abs(_)>40&&(_>0&&s.x<=80?c(!0):c(!1))},m=te(()=>[{"no-navbar":!r.value,"no-sidebar":!a.value.length,"sidebar-open":i.value},n.value.pageClass]);let d;et(()=>{d=vn().afterEach(()=>{c(!1)})}),Lr(()=>{d()});const f=wu(),v=f.resolve,g=f.pending;return(b,_)=>(V(),X("div",{class:Ue(["theme-container",F(m)]),onTouchstart:l,onTouchend:u},[He(b.$slots,"navbar",{},()=>[F(r)?(V(),$e(yg,{key:0,onToggleSidebar:c},{before:Ke(()=>[He(b.$slots,"navbar-before")]),after:Ke(()=>[He(b.$slots,"navbar-after")]),_:3})):Ne("v-if",!0)]),ue("div",{class:"sidebar-mask",onClick:_[0]||(_[0]=y=>c(!1))}),He(b.$slots,"sidebar",{},()=>[ie(c0,null,{top:Ke(()=>[He(b.$slots,"sidebar-top")]),bottom:Ke(()=>[He(b.$slots,"sidebar-bottom")]),_:3})]),He(b.$slots,"page",{},()=>[F(n).home?(V(),$e(Hv,{key:0})):(V(),$e(Po,{key:1,name:"fade-slide-y",mode:"out-in",onBeforeEnter:F(v),onBeforeLeave:F(g)},{default:Ke(()=>[(V(),$e(Gg,{key:F(t).path},{top:Ke(()=>[He(b.$slots,"page-top")]),"content-top":Ke(()=>[He(b.$slots,"page-content-top")]),"content-bottom":Ke(()=>[He(b.$slots,"page-content-bottom")]),bottom:Ke(()=>[He(b.$slots,"page-bottom")]),_:3}))]),_:3},8,["onBeforeEnter","onBeforeLeave"]))])],34))}}),l0=we(s0,[["__file","Layout.vue"]]),u0={class:"theme-container"},m0={class:"page"},d0={class:"theme-default-content"},f0=ue("h1",null,"404",-1),h0=je({__name:"NotFound",setup(e){var c,s,l;const t=Fn(),n=nt(),o=(c=n.value.notFound)!=null?c:["Not Found"],r=()=>o[Math.floor(Math.random()*o.length)],a=(s=n.value.home)!=null?s:t.value,i=(l=n.value.backToHome)!=null?l:"Back to home";return(u,m)=>{const d=It("RouterLink");return V(),X("div",u0,[ue("main",m0,[ue("div",d0,[f0,ue("blockquote",null,Me(r()),1),ie(d,{to:F(a)},{default:Ke(()=>[Xt(Me(F(i)),1)]),_:1},8,["to"])])])])}}}),p0=we(h0,[["__file","NotFound.vue"]]);const _0=Lt({enhance({app:e,router:t}){e.component("Badge",Cp),e.component("CodeGroup",Mp),e.component("CodeGroupItem",qp),e.component("AutoLinkExternalIcon",()=>{const o=e.component("ExternalLinkIcon");return o?Te(o):null}),e.component("NavbarSearch",()=>{const o=e.component("Docsearch")||e.component("SearchBox");return o?Te(o):null});const n=t.options.scrollBehavior;t.options.scrollBehavior=async(...o)=>(await wu().wait(),n(...o))},setup(){O_(),A_()},layouts:{Layout:l0,NotFound:p0}});const v0={},g0=e=>{const t=Fn();return te(()=>e[t.value])};class b0{constructor(){this.messageElements={};const t="message-container",n=document.getElementById(t);n?this.containerElement=n:(this.containerElement=document.createElement("div"),this.containerElement.id=t,document.body.appendChild(this.containerElement))}pop(t,n=2e3){const o=document.createElement("div"),r=Date.now();return o.className="message move-in",o.innerHTML=t,this.containerElement.appendChild(o),this.messageElements[r]=o,n>0&&setTimeout(()=>{this.close(r)},n),r}close(t){if(t){const n=this.messageElements[t];n.className=n.className.replace("move-in",""),n.className+="move-out",n.addEventListener("animationend",()=>{n.remove(),delete this.messageElements[t]})}else Object.keys(this.messageElements).forEach(n=>this.close(Number(n)))}destory(){document.body.removeChild(this.containerElement)}}var Gr,Ct=function(){var e=1e3,t=6e4,n=36e5,o="millisecond",r="second",a="minute",i="hour",c="day",s="week",l="month",u="quarter",m="year",d="date",f="Invalid Date",v=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,g=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,b={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},_=function(H,P,T){var k=String(H);return!k||k.length>=P?H:""+Array(P+1-k.length).join(T)+H},y={s:_,z:function(H){var P=-H.utcOffset(),T=Math.abs(P),k=Math.floor(T/60),M=T%60;return(P<=0?"+":"-")+_(k,2,"0")+":"+_(M,2,"0")},m:function H(P,T){if(P.date()1)return H(W[0])}else{var ee=P.name;A[ee]=P,M=ee}return!k&&M&&(S=M),M||!k&&S},R=function(H,P){if(D(H))return H.clone();var T=typeof P=="object"?P:{};return T.date=H,T.args=arguments,new U(T)},E=y;E.l=K,E.i=D,E.w=function(H,P){return R(H,{locale:P.$L,utc:P.$u,x:P.$x,$offset:P.$offset})};var U=function(){function H(T){this.$L=K(T.locale,null,!0),this.parse(T)}var P=H.prototype;return P.parse=function(T){this.$d=function(k){var M=k.date,j=k.utc;if(M===null)return new Date(NaN);if(E.u(M))return new Date;if(M instanceof Date)return new Date(M);if(typeof M=="string"&&!/Z$/i.test(M)){var W=M.match(v);if(W){var ee=W[2]-1||0,me=(W[7]||"0").substring(0,3);return j?new Date(Date.UTC(W[1],ee,W[3]||1,W[4]||0,W[5]||0,W[6]||0,me)):new Date(W[1],ee,W[3]||1,W[4]||0,W[5]||0,W[6]||0,me)}}return new Date(M)}(T),this.$x=T.x||{},this.init()},P.init=function(){var T=this.$d;this.$y=T.getFullYear(),this.$M=T.getMonth(),this.$D=T.getDate(),this.$W=T.getDay(),this.$H=T.getHours(),this.$m=T.getMinutes(),this.$s=T.getSeconds(),this.$ms=T.getMilliseconds()},P.$utils=function(){return E},P.isValid=function(){return this.$d.toString()!==f},P.isSame=function(T,k){var M=R(T);return this.startOf(k)<=M&&M<=this.endOf(k)},P.isAfter=function(T,k){return R(T)=0?1:v.date()),b=f.year||v.year(),_=f.month>=0?f.month:f.year||f.day?0:v.month(),y=f.hour||0,S=f.minute||0,A=f.second||0,D=f.millisecond||0;return d?new Date(Date.UTC(b,_,g,y,S,A,D)):new Date(b,_,g,y,S,A,D)}return m},a=o.parse;o.parse=function(l){l.date=r.bind(this)(l),a.bind(this)(l)};var i=o.set,c=o.add,s=function(l,u,m,d){if(d===void 0&&(d=1),u instanceof Object){var f=Object.keys(u),v=this;return f.forEach(function(g){v=l.bind(v)(u[g]*d,g)}),v}return l.bind(this)(u*d,m)};o.set=function(l,u){return u=u===void 0?l:u,s.bind(this)(function(m,d){return i.bind(this)(d,m)},u,l)},o.add=function(l,u){return s.bind(this)(c,l,u)},o.subtract=function(l,u){return s.bind(this)(c,l,u,-1)}},Du=function(){var e={year:0,month:1,day:2,hour:3,minute:4,second:5},t={};return function(n,o,r){var a,i=function(u,m,d){d===void 0&&(d={});var f=new Date(u),v=function(g,b){b===void 0&&(b={});var _=b.timeZoneName||"short",y=g+"|"+_,S=t[y];return S||(S=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:g,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:_}),t[y]=S),S}(m,d);return v.formatToParts(f)},c=function(u,m){for(var d=i(u,m),f=[],v=0;v=0&&(f[y]=parseInt(_,10))}var S=f[3],A=S===24?0:S,D=f[0]+"-"+f[1]+"-"+f[2]+" "+A+":"+f[4]+":"+f[5]+":000",K=+u;return(r.utc(D).valueOf()-(K-=K%1e3))/6e4},s=o.prototype;s.tz=function(u,m){u===void 0&&(u=a);var d=this.utcOffset(),f=this.toDate(),v=f.toLocaleString("en-US",{timeZone:u}),g=Math.round((f-new Date(v))/1e3/60),b=r(v).$set("millisecond",this.$ms).utcOffset(15*-Math.round(f.getTimezoneOffset()/15)-g,!0);if(m){var _=b.utcOffset();b=b.add(d-_,"minute")}return b.$x.$timezone=u,b},s.offsetName=function(u){var m=this.$x.$timezone||r.tz.guess(),d=i(this.valueOf(),m,{timeZoneName:u}).find(function(f){return f.type.toLowerCase()==="timezonename"});return d&&d.value};var l=s.startOf;s.startOf=function(u,m){if(!this.$x||!this.$x.$timezone)return l.call(this,u,m);var d=r(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return l.call(d,u,m).tz(this.$x.$timezone,!0)},r.tz=function(u,m,d){var f=d&&m,v=d||m||a,g=c(+r(),v);if(typeof u!="string")return r(u).tz(v);var b=function(A,D,K){var R=A-60*D*1e3,E=c(R,K);if(D===E)return[R,D];var U=c(R-=60*(E-D)*1e3,K);return E===U?[R,E]:[A-60*Math.min(E,U)*1e3,Math.max(E,U)]}(r.utc(u,f).valueOf(),g,v),_=b[0],y=b[1],S=r(_).utcOffset(y);return S.$x.$timezone=v,S},r.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},r.tz.setDefault=function(u){a=u}}}(),Ru=function(){var e="minute",t=/[+-]\d\d(?::?\d\d)?/g,n=/([+-]|\d\d)/g;return function(o,r,a){var i=r.prototype;a.utc=function(f){return new r({date:f,utc:!0,args:arguments})},i.utc=function(f){var v=a(this.toDate(),{locale:this.$L,utc:!0});return f?v.add(this.utcOffset(),e):v},i.local=function(){return a(this.toDate(),{locale:this.$L,utc:!1})};var c=i.parse;i.parse=function(f){f.utc&&(this.$u=!0),this.$utils().u(f.$offset)||(this.$offset=f.$offset),c.call(this,f)};var s=i.init;i.init=function(){if(this.$u){var f=this.$d;this.$y=f.getUTCFullYear(),this.$M=f.getUTCMonth(),this.$D=f.getUTCDate(),this.$W=f.getUTCDay(),this.$H=f.getUTCHours(),this.$m=f.getUTCMinutes(),this.$s=f.getUTCSeconds(),this.$ms=f.getUTCMilliseconds()}else s.call(this)};var l=i.utcOffset;i.utcOffset=function(f,v){var g=this.$utils().u;if(g(f))return this.$u?0:g(this.$offset)?l.call(this):this.$offset;if(typeof f=="string"&&(f=function(S){S===void 0&&(S="");var A=S.match(t);if(!A)return null;var D=(""+A[0]).match(n)||["-",0,0],K=D[0],R=60*+D[1]+ +D[2];return R===0?0:K==="+"?R:-R}(f),f===null))return this;var b=Math.abs(f)<=16?60*f:f,_=this;if(v)return _.$offset=b,_.$u=f===0,_;if(f!==0){var y=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(_=this.local().add(b+y,e)).$offset=b,_.$x.$localOffset=y}else _=this.utc();return _};var u=i.format;i.format=function(f){var v=f||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return u.call(this,v)},i.valueOf=function(){var f=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*f},i.isUTC=function(){return!!this.$u},i.toISOString=function(){return this.toDate().toISOString()},i.toString=function(){return this.toDate().toUTCString()};var m=i.toDate;i.toDate=function(f){return f==="s"&&this.$offset?a(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():m.call(this)};var d=i.diff;i.diff=function(f,v,g){if(f&&this.$u===f.$u)return d.call(this,f,v,g);var b=this.local(),_=a(f).local();return d.call(b,_,v,g)}}}();Ct.extend(y0),Ct.extend(Lu),Ct.extend(Ru),Ct.extend(Du);const E0={name:"zh-cn",weekdays:"\u661F\u671F\u65E5_\u661F\u671F\u4E00_\u661F\u671F\u4E8C_\u661F\u671F\u4E09_\u661F\u671F\u56DB_\u661F\u671F\u4E94_\u661F\u671F\u516D".split("_"),weekdaysShort:"\u5468\u65E5_\u5468\u4E00_\u5468\u4E8C_\u5468\u4E09_\u5468\u56DB_\u5468\u4E94_\u5468\u516D".split("_"),weekdaysMin:"\u65E5_\u4E00_\u4E8C_\u4E09_\u56DB_\u4E94_\u516D".split("_"),months:"\u4E00\u6708_\u4E8C\u6708_\u4E09\u6708_\u56DB\u6708_\u4E94\u6708_\u516D\u6708_\u4E03\u6708_\u516B\u6708_\u4E5D\u6708_\u5341\u6708_\u5341\u4E00\u6708_\u5341\u4E8C\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),ordinal:(e,t)=>t==="W"?`${e}\u5468`:`${e}\u65E5`,weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5E74M\u6708D\u65E5",LLL:"YYYY\u5E74M\u6708D\u65E5Ah\u70B9mm\u5206",LLLL:"YYYY\u5E74M\u6708D\u65E5ddddAh\u70B9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5E74M\u6708D\u65E5",lll:"YYYY\u5E74M\u6708D\u65E5 HH:mm",llll:"YYYY\u5E74M\u6708D\u65E5dddd HH:mm"},relativeTime:{future:"%s\u5185",past:"%s\u524D",s:"\u51E0\u79D2",m:"1 \u5206\u949F",mm:"%d \u5206\u949F",h:"1 \u5C0F\u65F6",hh:"%d \u5C0F\u65F6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4E2A\u6708",MM:"%d \u4E2A\u6708",y:"1 \u5E74",yy:"%d \u5E74"},meridiem:(e,t)=>{const n=100*e+t;return n<600?"\u51CC\u6668":n<900?"\u65E9\u4E0A":n<1100?"\u4E0A\u5348":n<1300?"\u4E2D\u5348":n<1800?"\u4E0B\u5348":"\u665A\u4E0A"}},w0={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")};Ct.locale("zh",E0),Ct.locale("en",w0),Ct.extend(Lu),Ct.extend(Ru),Ct.extend(Du);const jo={showInMobile:!1,pure:!0},qc=()=>!!navigator&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/iu.test(navigator.userAgent),O0=()=>{const e=Dt(),t=g0({"/en/":{copy:"Copied successfully",hint:"Copy code"},"/":{copy:"\u590D\u5236\u6210\u529F",hint:"\u590D\u5236\u4EE3\u7801"}}),n=r=>{if(!r.hasAttribute("copy-code-registered")){const a=document.createElement("button");a.className="copy-code-pure-button",a.innerHTML='',a.addEventListener("click",()=>{(i=>{const c=document.getSelection(),s=!!(c&&c.rangeCount>0)&&c.getRangeAt(0),l=document.createElement("textarea");l.value=i,l.setAttribute("readonly",""),l.style.position="absolute",l.style.top="-9999px",document.body.appendChild(l),l.select(),document.execCommand("copy"),document.body.removeChild(l),s&&c&&(c.removeAllRanges(),c.addRange(s))})(r.innerText)}),a.setAttribute("aria-label",t.value.hint),a.setAttribute("data-balloon-pos","left"),r.parentElement&&r.parentElement.insertBefore(a,r),r.setAttribute("copy-code-registered","")}},o=()=>{const r=jo.selector||'.theme-default-content div[class*="language-"] pre';setTimeout(()=>{typeof r=="string"?document.querySelectorAll(r).forEach(n):Array.isArray(r)&&r.forEach(a=>{document.querySelectorAll(a).forEach(n)})},jo.delay||500)};et(()=>{new b0,qc()&&!jo.showInMobile||o()}),ot(()=>e.path,()=>{qc()&&!jo.showInMobile||o()})};var P0=Lt({setup:()=>{O0()}});const S0=({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:o=5})=>{const r=vn(),i=ri(()=>{var g,b,_,y;const c=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(c-0)d.some(A=>A.hash===S.hash));for(let S=0;S=((b=(g=A.parentElement)==null?void 0:g.offsetTop)!=null?b:0)-o,R=!D||c<((y=(_=D.parentElement)==null?void 0:_.offsetTop)!=null?y:0)-o;if(!(K&&R))continue;const U=decodeURIComponent(r.currentRoute.value.hash),Y=decodeURIComponent(A.hash);if(U===Y)return;if(m){for(let H=S+1;H{window.addEventListener("scroll",i)}),Ir(()=>{window.removeEventListener("scroll",i)})},Vc=async(e,t)=>{const{scrollBehavior:n}=e.options;e.options.scrollBehavior=void 0,await e.replace({query:e.currentRoute.value.query,hash:t,force:!0}).finally(()=>e.options.scrollBehavior=n)},A0="div.right-menu-item > a",T0=".header-anchor",I0=200,L0=5,D0=Lt({setup(){S0({headerLinkSelector:A0,headerAnchorSelector:T0,delay:I0,offset:L0})}});/*! @docsearch/js 3.2.1 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */function Nc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,o)}return n}function Pe(e){for(var t=1;t=0||(u[s]=i[s]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function fr(e,t){return function(n){if(Array.isArray(n))return n}(e)||function(n,o){var r=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(r!=null){var a,i,c=[],s=!0,l=!1;try{for(r=r.call(n);!(s=(a=r.next()).done)&&(c.push(a.value),!o||c.length!==o);s=!0);}catch(u){l=!0,i=u}finally{try{s||r.return==null||r.return()}finally{if(l)throw i}}return c}}(e,t)||ku(e,t)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function hr(e){return function(t){if(Array.isArray(t))return Sa(t)}(e)||function(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}(e)||ku(e)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function ku(e,t){if(e){if(typeof e=="string")return Sa(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Sa(e,t):void 0}}function Sa(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n3)for(n=[n],a=3;a0?io(f.type,f.props,f.key,null,f.__v):f)!=null){if(f.__=n,f.__b=n.__b+1,(d=_[u])===null||d&&f.key==d.key&&f.type===d.type)_[u]=void 0;else for(m=0;m3)for(n=[n],a=3;a=n.__.length&&n.__.push({}),n.__[e]}function zu(e){return kn=1,Uu(Ku,e)}function Uu(e,t,n){var o=Ao(Nn++,2);return o.t=e,o.__c||(o.__=[n?n(t):Ku(void 0,t),function(r){var a=o.t(o.__[0],r);o.__[0]!==a&&(o.__=[a,o.__[1]],o.__c.setState({}))}],o.__c=Xe),o.__}function Wu(e,t){var n=Ao(Nn++,3);!ae.__s&&hi(n.__H,t)&&(n.__=e,n.__H=t,Xe.__H.__h.push(n))}function Zc(e,t){var n=Ao(Nn++,4);!ae.__s&&hi(n.__H,t)&&(n.__=e,n.__H=t,Xe.__h.push(n))}function Zr(e,t){var n=Ao(Nn++,7);return hi(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function H0(){Ta.forEach(function(e){if(e.__P)try{e.__H.__h.forEach(Ko),e.__H.__h.forEach(Ia),e.__H.__h=[]}catch(t){e.__H.__h=[],ae.__e(t,e.__v)}}),Ta=[]}ae.__b=function(e){Xe=null,Kc&&Kc(e)},ae.__r=function(e){Yc&&Yc(e),Nn=0;var t=(Xe=e.__c).__H;t&&(t.__h.forEach(Ko),t.__h.forEach(Ia),t.__h=[])},ae.diffed=function(e){Jc&&Jc(e);var t=e.__c;t&&t.__H&&t.__H.__h.length&&(Ta.push(t)!==1&&Wc===ae.requestAnimationFrame||((Wc=ae.requestAnimationFrame)||function(n){var o,r=function(){clearTimeout(a),Xc&&cancelAnimationFrame(o),setTimeout(n)},a=setTimeout(r,100);Xc&&(o=requestAnimationFrame(r))})(H0)),Xe=void 0},ae.__c=function(e,t){t.some(function(n){try{n.__h.forEach(Ko),n.__h=n.__h.filter(function(o){return!o.__||Ia(o)})}catch(o){t.some(function(r){r.__h&&(r.__h=[])}),t=[],ae.__e(o,n.__v)}}),Qc&&Qc(e,t)},ae.unmount=function(e){Gc&&Gc(e);var t=e.__c;if(t&&t.__H)try{t.__H.__.forEach(Ko)}catch(n){ae.__e(n,t.__v)}};var Xc=typeof requestAnimationFrame=="function";function Ko(e){var t=Xe;typeof e.__c=="function"&&e.__c(),Xe=t}function Ia(e){var t=Xe;e.__c=e.__(),Xe=t}function hi(e,t){return!e||e.length!==t.length||t.some(function(n,o){return n!==e[o]})}function Ku(e,t){return typeof t=="function"?t(e):t}function Yu(e,t){for(var n in t)e[n]=t[n];return e}function La(e,t){for(var n in e)if(n!=="__source"&&!(n in t))return!0;for(var o in t)if(o!=="__source"&&e[o]!==t[o])return!0;return!1}function Da(e){this.props=e}(Da.prototype=new St).isPureReactComponent=!0,Da.prototype.shouldComponentUpdate=function(e,t){return La(this.props,e)||La(this.state,t)};var es=ae.__b;ae.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),es&&es(e)};var $0=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911,ts=function(e,t){return e==null?null:$t($t(e).map(t))},q0={map:ts,forEach:ts,count:function(e){return e?$t(e).length:0},only:function(e){var t=$t(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:$t},V0=ae.__e;function Yo(){this.__u=0,this.t=null,this.__b=null}function Ju(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function Zn(){this.u=null,this.o=null}ae.__e=function(e,t,n){if(e.then){for(var o,r=t;r=r.__;)if((o=r.__c)&&o.__c)return t.__e==null&&(t.__e=n.__e,t.__k=n.__k),o.__c(e,t)}V0(e,t,n)},(Yo.prototype=new St).__c=function(e,t){var n=t.__c,o=this;o.t==null&&(o.t=[]),o.t.push(n);var r=Ju(o.__v),a=!1,i=function(){a||(a=!0,n.componentWillUnmount=n.__c,r?r(c):c())};n.__c=n.componentWillUnmount,n.componentWillUnmount=function(){i(),n.__c&&n.__c()};var c=function(){if(!--o.__u){if(o.state.__e){var l=o.state.__e;o.__v.__k[0]=function m(d,f,v){return d&&(d.__v=null,d.__k=d.__k&&d.__k.map(function(g){return m(g,f,v)}),d.__c&&d.__c.__P===f&&(d.__e&&v.insertBefore(d.__e,d.__d),d.__c.__e=!0,d.__c.__P=v)),d}(l,l.__c.__P,l.__c.__O)}var u;for(o.setState({__e:o.__b=null});u=o.t.pop();)u.forceUpdate()}},s=t.__h===!0;o.__u++||s||o.setState({__e:o.__b=o.__v.__k[0]}),e.then(i,i)},Yo.prototype.componentWillUnmount=function(){this.t=[]},Yo.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),o=this.__v.__k[0].__c;this.__v.__k[0]=function a(i,c,s){return i&&(i.__c&&i.__c.__H&&(i.__c.__H.__.forEach(function(l){typeof l.__c=="function"&&l.__c()}),i.__c.__H=null),(i=Yu({},i)).__c!=null&&(i.__c.__P===s&&(i.__c.__P=c),i.__c=null),i.__k=i.__k&&i.__k.map(function(l){return a(l,c,s)})),i}(this.__b,n,o.__O=o.__P)}this.__b=null}var r=t.__e&&Pt(Zt,null,e.fallback);return r&&(r.__h=null),[Pt(Zt,null,t.__e?null:e.children),r]};var ns=function(e,t,n){if(++n[1]===n[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(n=e.u;n;){for(;n.length>3;)n.pop()();if(n[1]>>1,1),t.i.removeChild(o)}}),vo(Pt(N0,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function Qu(e,t){return Pt(F0,{__v:e,i:t})}(Zn.prototype=new St).__e=function(e){var t=this,n=Ju(t.__v),o=t.o.get(e);return o[0]++,function(r){var a=function(){t.props.revealOrder?(o.push(r),ns(t,e,o)):r()};n?n(a):a()}},Zn.prototype.render=function(e){this.u=null,this.o=new Map;var t=$t(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},Zn.prototype.componentDidUpdate=Zn.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,n){ns(e,n,t)})};var Gu=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,B0=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,z0=function(e){return(typeof Symbol<"u"&&po(Symbol())=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function Zu(e,t,n){return t.__k==null&&(t.textContent=""),vo(e,t),typeof n=="function"&&n(),e?e.__c:null}St.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(St.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var os=ae.event;function U0(){}function W0(){return this.cancelBubble}function K0(){return this.defaultPrevented}ae.event=function(e){return os&&(e=os(e)),e.persist=U0,e.isPropagationStopped=W0,e.isDefaultPrevented=K0,e.nativeEvent=e};var Xu,rs={configurable:!0,get:function(){return this.class}},as=ae.vnode;ae.vnode=function(e){var t=e.type,n=e.props,o=n;if(typeof t=="string"){for(var r in o={},n){var a=n[r];r==="value"&&"defaultValue"in n&&a==null||(r==="defaultValue"&&"value"in n&&n.value==null?r="value":r==="download"&&a===!0?a="":/ondoubleclick/i.test(r)?r="ondblclick":/^onchange(textarea|input)/i.test(r+t)&&!z0(n.type)?r="oninput":/^on(Ani|Tra|Tou|BeforeInp)/.test(r)?r=r.toLowerCase():B0.test(r)?r=r.replace(/[A-Z0-9]/,"-$&").toLowerCase():a===null&&(a=void 0),o[r]=a)}t=="select"&&o.multiple&&Array.isArray(o.value)&&(o.value=$t(n.children).forEach(function(i){i.props.selected=o.value.indexOf(i.props.value)!=-1})),t=="select"&&o.defaultValue!=null&&(o.value=$t(n.children).forEach(function(i){i.props.selected=o.multiple?o.defaultValue.indexOf(i.props.value)!=-1:o.defaultValue==i.props.value})),e.props=o}t&&n.class!=n.className&&(rs.enumerable="className"in n,n.className!=null&&(o.class=n.className),Object.defineProperty(o,"className",rs)),e.$$typeof=Gu,as&&as(e)};var is=ae.__r;ae.__r=function(e){is&&is(e),Xu=e.__c};var Y0={ReactCurrentDispatcher:{current:{readContext:function(e){return Xu.__n[e.__c].props.value}}}};(typeof performance>"u"?"undefined":po(performance))=="object"&&typeof performance.now=="function"&&performance.now.bind(performance);function cs(e){return!!e&&e.$$typeof===Gu}var O={useState:zu,useReducer:Uu,useEffect:Wu,useLayoutEffect:Zc,useRef:function(e){return kn=5,Zr(function(){return{current:e}},[])},useImperativeHandle:function(e,t,n){kn=6,Zc(function(){typeof e=="function"?e(t()):e&&(e.current=t())},n==null?n:n.concat(e))},useMemo:Zr,useCallback:function(e,t){return kn=8,Zr(function(){return e},t)},useContext:function(e){var t=Xe.context[e.__c],n=Ao(Nn++,9);return n.__c=e,t?(n.__==null&&(n.__=!0,t.sub(Xe)),t.props.value):e.__},useDebugValue:function(e,t){ae.useDebugValue&&ae.useDebugValue(t?t(e):e)},version:"16.8.0",Children:q0,render:Zu,hydrate:function(e,t,n){return Bu(e,t),typeof n=="function"&&n(),e?e.__c:null},unmountComponentAtNode:function(e){return!!e.__k&&(vo(null,e),!0)},createPortal:Qu,createElement:Pt,createContext:function(e,t){var n={__c:t="__cC"+Cu++,__:e,Consumer:function(o,r){return o.children(r)},Provider:function(o){var r,a;return this.getChildContext||(r=[],(a={})[t]=this,this.getChildContext=function(){return a},this.shouldComponentUpdate=function(i){this.props.value!==i.value&&r.some(Aa)},this.sub=function(i){r.push(i);var c=i.componentWillUnmount;i.componentWillUnmount=function(){r.splice(r.indexOf(i),1),c&&c.call(i)}}),o.children}};return n.Provider.__=n.Consumer.contextType=n},createFactory:function(e){return Pt.bind(null,e)},cloneElement:function(e){return cs(e)?j0.apply(null,arguments):e},createRef:function(){return{current:null}},Fragment:Zt,isValidElement:cs,findDOMNode:function(e){return e&&(e.base||e.nodeType===1&&e)||null},Component:St,PureComponent:Da,memo:function(e,t){function n(r){var a=this.props.ref,i=a==r.ref;return!i&&a&&(a.call?a(null):a.current=null),t?!t(this.props,r)||!i:La(this.props,r)}function o(r){return this.shouldComponentUpdate=n,Pt(e,r)}return o.displayName="Memo("+(e.displayName||e.name)+")",o.prototype.isReactComponent=!0,o.__f=!0,o},forwardRef:function(e){function t(n,o){var r=Yu({},n);return delete r.ref,e(r,(o=n.ref||o)&&(po(o)!="object"||"current"in o)?o:null)}return t.$$typeof=$0,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t},unstable_batchedUpdates:function(e,t){return e(t)},StrictMode:Zt,Suspense:Yo,SuspenseList:Zn,lazy:function(e){var t,n,o;function r(a){if(t||(t=e()).then(function(i){n=i.default||i},function(i){o=i}),o)throw o;if(!n)throw t;return Pt(n,a)}return r.displayName="Lazy",r.__f=!0,r},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Y0};function J0(){return O.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},O.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}function em(){return O.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},O.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}var Q0=["translations"];function Ra(){return Ra=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,o=new Array(t);n=0||(u[s]=i[s]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var X0=O.forwardRef(function(e,t){var n=e.translations,o=n===void 0?{}:n,r=Z0(e,Q0),a=o.buttonText,i=a===void 0?"Search":a,c=o.buttonAriaLabel,s=c===void 0?"Search":c,l=G0(zu(null),2),u=l[0],m=l[1];return Wu(function(){typeof navigator<"u"&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?m("\u2318"):m("Ctrl"))},[]),O.createElement("button",Ra({type:"button",className:"DocSearch DocSearch-Button","aria-label":s},r,{ref:t}),O.createElement("span",{className:"DocSearch-Button-Container"},O.createElement(em,null),O.createElement("span",{className:"DocSearch-Button-Placeholder"},i)),O.createElement("span",{className:"DocSearch-Button-Keys"},u!==null&&O.createElement(O.Fragment,null,O.createElement("kbd",{className:"DocSearch-Button-Key"},u==="Ctrl"?O.createElement(J0,null):u),O.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))});function go(e){return e.reduce(function(t,n){return t.concat(n)},[])}var e1=0;function ka(e){return e.collections.length===0?0:e.collections.reduce(function(t,n){return t+n.items.length},0)}var tm=function(){},t1=[{segment:"autocomplete-core",version:"1.7.1"}];function Jo(e,t){var n=t;return{then:function(o,r){return Jo(e.then($o(o,n,e),$o(r,n,e)),n)},catch:function(o){return Jo(e.catch($o(o,n,e)),n)},finally:function(o){return o&&n.onCancelList.push(o),Jo(e.finally($o(o&&function(){return n.onCancelList=[],o()},n,e)),n)},cancel:function(){n.isCanceled=!0;var o=n.onCancelList;n.onCancelList=[],o.forEach(function(r){r()})},isCanceled:function(){return n.isCanceled===!0}}}function ls(e){return Jo(e,{isCanceled:!1,onCancelList:[]})}function $o(e,t,n){return e?function(o){return t.isCanceled?o:e(o)}:n}function us(e,t,n,o){if(!n)return null;if(e<0&&(t===null||o!==null&&t===0))return n+e;var r=(t===null?-1:t)+e;return r<=-1||r>=n?o===null?null:0:r}function ms(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,o)}return n}function n1(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o1(e,t){var n=[];return Promise.resolve(e(t)).then(function(o){return Promise.all(o.filter(function(r){return Boolean(r)}).map(function(r){if(r.sourceId,n.includes(r.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(r.sourceId)," is not unique."));n.push(r.sourceId);var a=function(i){for(var c=1;ce.length)&&(t=e.length);for(var n=0,o=new Array(t);ne.length)&&(t=e.length);for(var n=0,o=new Array(t);n=0||(u[s]=i[s]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var ys,ta,Bo,Jn=null,Es=(ys=-1,ta=-1,Bo=void 0,function(e){var t=++ys;return Promise.resolve(e).then(function(n){return Bo&&t=0||(u[s]=i[s]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var w1=["props","refresh","store"],O1=["inputElement","formElement","panelElement"],P1=["inputElement"],S1=["inputElement","maxLength"],A1=["item","source"];function Os(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,o)}return n}function Je(e){for(var t=1;t=0||(u[s]=i[s]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function I1(e){var t=e.props,n=e.refresh,o=e.store,r=Qn(e,w1);return{getEnvironmentProps:function(a){var i=a.inputElement,c=a.formElement,s=a.panelElement;function l(u){!o.getState().isOpen&&o.pendingRequests.isEmpty()||u.target===i||[c,s].some(function(m){return d=m,f=u.target,d===f||d.contains(f);var d,f})===!1&&(o.dispatch("blur",null),t.debug||o.pendingRequests.cancelAll())}return Je({onTouchStart:l,onMouseDown:l,onTouchMove:function(u){o.getState().isOpen!==!1&&i===t.environment.document.activeElement&&u.target!==i&&i.blur()}},Qn(a,O1))},getRootProps:function(a){return Je({role:"combobox","aria-expanded":o.getState().isOpen,"aria-haspopup":"listbox","aria-owns":o.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},a)},getFormProps:function(a){return a.inputElement,Je({action:"",noValidate:!0,role:"search",onSubmit:function(i){var c;i.preventDefault(),t.onSubmit(Je({event:i,refresh:n,state:o.getState()},r)),o.dispatch("submit",null),(c=a.inputElement)===null||c===void 0||c.blur()},onReset:function(i){var c;i.preventDefault(),t.onReset(Je({event:i,refresh:n,state:o.getState()},r)),o.dispatch("reset",null),(c=a.inputElement)===null||c===void 0||c.focus()}},Qn(a,P1))},getLabelProps:function(a){return Je({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},a)},getInputProps:function(a){var i;function c(g){(t.openOnFocus||Boolean(o.getState().query))&&Pn(Je({event:g,props:t,query:o.getState().completion||o.getState().query,refresh:n,store:o},r)),o.dispatch("focus",null)}var s=a||{},l=(s.inputElement,s.maxLength),u=l===void 0?512:l,m=Qn(s,S1),d=Sn(o.getState()),f=function(g){return Boolean(g&&g.match(r1))}(((i=t.environment.navigator)===null||i===void 0?void 0:i.userAgent)||""),v=d!=null&&d.itemUrl&&!f?"go":"search";return Je({"aria-autocomplete":"both","aria-activedescendant":o.getState().isOpen&&o.getState().activeItemId!==null?"".concat(t.id,"-item-").concat(o.getState().activeItemId):void 0,"aria-controls":o.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:o.getState().completion||o.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:v,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:u,type:"search",onChange:function(g){Pn(Je({event:g,props:t,query:g.currentTarget.value.slice(0,u),refresh:n,store:o},r))},onKeyDown:function(g){(function(b){var _=b.event,y=b.props,S=b.refresh,A=b.store,D=E1(b,b1);if(_.key==="ArrowUp"||_.key==="ArrowDown"){var K=function(){var T=y.environment.document.getElementById("".concat(y.id,"-item-").concat(A.getState().activeItemId));T&&(T.scrollIntoViewIfNeeded?T.scrollIntoViewIfNeeded(!1):T.scrollIntoView(!1))},R=function(){var T=Sn(A.getState());if(A.getState().activeItemId!==null&&T){var k=T.item,M=T.itemInputValue,j=T.itemUrl,W=T.source;W.onActive(on({event:_,item:k,itemInputValue:M,itemUrl:j,refresh:S,source:W,state:A.getState()},D))}};_.preventDefault(),A.getState().isOpen===!1&&(y.openOnFocus||Boolean(A.getState().query))?Pn(on({event:_,props:y,query:A.getState().query,refresh:S,store:A},D)).then(function(){A.dispatch(_.key,{nextActiveItemId:y.defaultActiveItemId}),R(),setTimeout(K,0)}):(A.dispatch(_.key,{}),R(),K())}else if(_.key==="Escape")_.preventDefault(),A.dispatch(_.key,null),A.pendingRequests.cancelAll();else if(_.key==="Tab")A.dispatch("blur",null),A.pendingRequests.cancelAll();else if(_.key==="Enter"){if(A.getState().activeItemId===null||A.getState().collections.every(function(T){return T.items.length===0}))return void(y.debug||A.pendingRequests.cancelAll());_.preventDefault();var E=Sn(A.getState()),U=E.item,Y=E.itemInputValue,H=E.itemUrl,P=E.source;if(_.metaKey||_.ctrlKey)H!==void 0&&(P.onSelect(on({event:_,item:U,itemInputValue:Y,itemUrl:H,refresh:S,source:P,state:A.getState()},D)),y.navigator.navigateNewTab({itemUrl:H,item:U,state:A.getState()}));else if(_.shiftKey)H!==void 0&&(P.onSelect(on({event:_,item:U,itemInputValue:Y,itemUrl:H,refresh:S,source:P,state:A.getState()},D)),y.navigator.navigateNewWindow({itemUrl:H,item:U,state:A.getState()}));else if(!_.altKey){if(H!==void 0)return P.onSelect(on({event:_,item:U,itemInputValue:Y,itemUrl:H,refresh:S,source:P,state:A.getState()},D)),void y.navigator.navigate({itemUrl:H,item:U,state:A.getState()});Pn(on({event:_,nextState:{isOpen:!1},props:y,query:Y,refresh:S,store:A},D)).then(function(){P.onSelect(on({event:_,item:U,itemInputValue:Y,itemUrl:H,refresh:S,source:P,state:A.getState()},D))})}}})(Je({event:g,props:t,refresh:n,store:o},r))},onFocus:c,onBlur:tm,onClick:function(g){a.inputElement!==t.environment.document.activeElement||o.getState().isOpen||c(g)}},m)},getPanelProps:function(a){return Je({onMouseDown:function(i){i.preventDefault()},onMouseLeave:function(){o.dispatch("mouseleave",null)}},a)},getListProps:function(a){return Je({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},a)},getItemProps:function(a){var i=a.item,c=a.source,s=Qn(a,A1);return Je({id:"".concat(t.id,"-item-").concat(i.__autocomplete_id),role:"option","aria-selected":o.getState().activeItemId===i.__autocomplete_id,onMouseMove:function(l){if(i.__autocomplete_id!==o.getState().activeItemId){o.dispatch("mousemove",i.__autocomplete_id);var u=Sn(o.getState());if(o.getState().activeItemId!==null&&u){var m=u.item,d=u.itemInputValue,f=u.itemUrl,v=u.source;v.onActive(Je({event:l,item:m,itemInputValue:d,itemUrl:f,refresh:n,source:v,state:o.getState()},r))}}},onMouseDown:function(l){l.preventDefault()},onClick:function(l){var u=c.getItemInputValue({item:i,state:o.getState()}),m=c.getItemUrl({item:i,state:o.getState()});(m?Promise.resolve():Pn(Je({event:l,nextState:{isOpen:!1},props:t,query:u,refresh:n,store:o},r))).then(function(){c.onSelect(Je({event:l,item:i,itemInputValue:u,itemUrl:m,refresh:n,source:c,state:o.getState()},r))})}},s)}}}function Ps(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,o)}return n}function L1(e){for(var t=1;t0},reshape:function(d){return d.sources}},c),{},{id:(l=c.id)!==null&&l!==void 0?l:"autocomplete-".concat(e1++),plugins:m,initialState:En({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},c.initialState),onStateChange:function(d){var f;(f=c.onStateChange)===null||f===void 0||f.call(c,d),m.forEach(function(v){var g;return(g=v.onStateChange)===null||g===void 0?void 0:g.call(v,d)})},onSubmit:function(d){var f;(f=c.onSubmit)===null||f===void 0||f.call(c,d),m.forEach(function(v){var g;return(g=v.onSubmit)===null||g===void 0?void 0:g.call(v,d)})},onReset:function(d){var f;(f=c.onReset)===null||f===void 0||f.call(c,d),m.forEach(function(v){var g;return(g=v.onReset)===null||g===void 0?void 0:g.call(v,d)})},getSources:function(d){return Promise.all([].concat(l1(m.map(function(f){return f.getSources})),[c.getSources]).filter(Boolean).map(function(f){return o1(f,d)})).then(function(f){return go(f)}).then(function(f){return f.map(function(v){return En(En({},v),{},{onSelect:function(g){v.onSelect(g),s.forEach(function(b){var _;return(_=b.onSelect)===null||_===void 0?void 0:_.call(b,g)})},onActive:function(g){v.onActive(g),s.forEach(function(b){var _;return(_=b.onActive)===null||_===void 0?void 0:_.call(b,g)})}})})})},navigator:En({navigate:function(d){var f=d.itemUrl;u.location.assign(f)},navigateNewTab:function(d){var f=d.itemUrl,v=u.open(f,"_blank","noopener");v==null||v.focus()},navigateNewWindow:function(d){var f=d.itemUrl;u.open(f,"_blank","noopener")}},c.navigator)})}(e,t),o=c1(k1,n,function(c){var s=c.prevState,l=c.state;n.onStateChange(rn({prevState:s,state:l,refresh:i},r))}),r=function(c){var s=c.store;return{setActiveItemId:function(l){s.dispatch("setActiveItemId",l)},setQuery:function(l){s.dispatch("setQuery",l)},setCollections:function(l){var u=0,m=l.map(function(d){return Vo(Vo({},d),{},{items:go(d.items).map(function(f){return Vo(Vo({},f),{},{__autocomplete_id:u++})})})});s.dispatch("setCollections",m)},setIsOpen:function(l){s.dispatch("setIsOpen",l)},setStatus:function(l){s.dispatch("setStatus",l)},setContext:function(l){s.dispatch("setContext",l)}}}({store:o}),a=I1(rn({props:n,refresh:i,store:o},r));function i(){return Pn(rn({event:new Event("input"),nextState:{isOpen:o.getState().isOpen},props:n,query:o.getState().query,refresh:i,store:o},r))}return n.plugins.forEach(function(c){var s;return(s=c.subscribe)===null||s===void 0?void 0:s.call(c,rn(rn({},r),{},{refresh:i,onSelect:function(l){t.push({onSelect:l})},onActive:function(l){t.push({onActive:l})}}))}),function(c){var s,l,u=c.metadata,m=c.environment;if(!((s=m.navigator)===null||s===void 0||(l=s.userAgent)===null||l===void 0)&&l.includes("Algolia Crawler")){var d=m.document.createElement("meta"),f=m.document.querySelector("head");d.name="algolia:metadata",setTimeout(function(){d.content=JSON.stringify(u),f.appendChild(d)},0)}}({metadata:D1({plugins:n.plugins,options:e}),environment:n.environment}),rn(rn({refresh:i},a),r)}function M1(e){var t=e.translations,n=(t===void 0?{}:t).searchByText,o=n===void 0?"Search by":n;return O.createElement("a",{href:"https://www.algolia.com/ref/docsearch/?utm_source=".concat(window.location.hostname,"&utm_medium=referral&utm_content=powered_by&utm_campaign=docsearch"),target:"_blank",rel:"noopener noreferrer"},O.createElement("span",{className:"DocSearch-Label"},o),O.createElement("svg",{width:"77",height:"19","aria-label":"Algolia",role:"img"},O.createElement("path",{d:"M2.5067 0h14.0245c1.384.001 2.5058 1.1205 2.5068 2.5017V16.5c-.0014 1.3808-1.1232 2.4995-2.5068 2.5H2.5067C1.1232 18.9995.0014 17.8808 0 16.5V2.4958A2.495 2.495 0 01.735.7294 2.505 2.505 0 012.5068 0zM37.95 15.0695c-3.7068.0168-3.7068-2.986-3.7068-3.4634L34.2372.3576 36.498 0v11.1794c0 .2715 0 1.9889 1.452 1.994v1.8961zm-9.1666-1.8388c.694 0 1.2086-.0397 1.5678-.1088v-2.2934a5.3639 5.3639 0 00-1.3303-.1679 4.8283 4.8283 0 00-.758.0582 2.2845 2.2845 0 00-.688.2024c-.2029.0979-.371.2362-.4919.4142-.1268.1788-.185.2826-.185.5533 0 .5297.185.8359.5205 1.0375.3355.2016.7928.3053 1.365.3053v-.0008zm-.1969-8.1817c.7463 0 1.3768.092 1.8856.2767.5088.1838.9195.4428 1.2204.7717.3068.334.5147.7777.6423 1.251.1327.4723.196.991.196 1.5603v5.798c-.5235.1036-1.05.192-1.5787.2649-.7048.1037-1.4976.156-2.3774.156-.5832 0-1.1215-.0582-1.6016-.167a3.385 3.385 0 01-1.2432-.5364 2.6034 2.6034 0 01-.8037-.9565c-.191-.3922-.29-.9447-.29-1.5208 0-.5533.11-.905.3246-1.2863a2.7351 2.7351 0 01.8849-.9329c.376-.242.8029-.415 1.2948-.5187a7.4517 7.4517 0 011.5381-.156 7.1162 7.1162 0 011.6667.2024V8.886c0-.259-.0296-.5061-.093-.7372a1.5847 1.5847 0 00-.3245-.6158 1.5079 1.5079 0 00-.6119-.4158 2.6788 2.6788 0 00-.966-.173c-.5206 0-.9948.0634-1.4283.1384a6.5481 6.5481 0 00-1.065.259l-.2712-1.849c.2831-.0986.7048-.1964 1.2491-.2943a9.2979 9.2979 0 011.752-.1501v.0008zm44.6597 8.1193c.6947 0 1.2086-.0405 1.567-.1097v-2.2942a5.3743 5.3743 0 00-1.3303-.1679c-.2485 0-.503.0177-.7573.0582a2.2853 2.2853 0 00-.688.2024 1.2333 1.2333 0 00-.4918.4142c-.1268.1788-.1843.2826-.1843.5533 0 .5297.1843.8359.5198 1.0375.3414.2066.7927.3053 1.365.3053v.0009zm-.191-8.1767c.7463 0 1.3768.0912 1.8856.2759.5087.1847.9195.4436 1.2204.7717.3.329.5147.7786.6414 1.251a5.7248 5.7248 0 01.197 1.562v5.7972c-.3466.0742-.874.1602-1.5788.2648-.7049.1038-1.4976.1552-2.3774.1552-.5832 0-1.1215-.0573-1.6016-.167a3.385 3.385 0 01-1.2432-.5356 2.6034 2.6034 0 01-.8038-.9565c-.191-.3922-.2898-.9447-.2898-1.5216 0-.5533.1098-.905.3245-1.2854a2.7373 2.7373 0 01.8849-.9338c.376-.2412.8029-.4141 1.2947-.5178a7.4545 7.4545 0 012.325-.1097c.2781.0287.5672.081.879.156v-.3686a2.7781 2.7781 0 00-.092-.738 1.5788 1.5788 0 00-.3246-.6166 1.5079 1.5079 0 00-.612-.415 2.6797 2.6797 0 00-.966-.1729c-.5205 0-.9947.0633-1.4282.1384a6.5608 6.5608 0 00-1.065.259l-.2712-1.8498c.283-.0979.7048-.1957 1.2491-.2935a9.8597 9.8597 0 011.752-.1494zm-6.79-1.072c-.7576.001-1.373-.6103-1.3759-1.3664 0-.755.6128-1.3664 1.376-1.3664.764 0 1.3775.6115 1.3775 1.3664s-.6195 1.3664-1.3776 1.3664zm1.1393 11.1507h-2.2726V5.3409l2.2734-.3568v10.0845l-.0008.0017zm-3.984 0c-3.707.0168-3.707-2.986-3.707-3.4642L59.7069.3576 61.9685 0v11.1794c0 .2715 0 1.9889 1.452 1.994V15.0703zm-7.3512-4.979c0-.975-.2138-1.7873-.6305-2.3516-.4167-.571-.9998-.852-1.747-.852-.7454 0-1.3302.281-1.7452.852-.4166.5702-.6195 1.3765-.6195 2.3516 0 .9851.208 1.6473.6254 2.2183.4158.576.9998.8587 1.7461.8587.7454 0 1.3303-.2885 1.747-.8595.4158-.5761.6237-1.2315.6237-2.2184v.0009zm2.3132-.006c0 .7609-.1099 1.3361-.3356 1.9654a4.654 4.654 0 01-.9533 1.6076A4.214 4.214 0 0155.613 14.69c-.579.2412-1.4697.3795-1.9143.3795-.4462-.005-1.3303-.1324-1.9033-.3795a4.307 4.307 0 01-1.474-1.0316c-.4115-.4445-.7293-.9801-.9609-1.6076a5.3423 5.3423 0 01-.3465-1.9653c0-.7608.104-1.493.3356-2.1155a4.683 4.683 0 01.9719-1.5958 4.3383 4.3383 0 011.479-1.0257c.5739-.242 1.2043-.3567 1.8864-.3567.6829 0 1.3125.1197 1.8906.3567a4.1245 4.1245 0 011.4816 1.0257 4.7587 4.7587 0 01.9592 1.5958c.2426.6225.3643 1.3547.3643 2.1155zm-17.0198 0c0 .9448.208 1.9932.6238 2.431.4166.4386.955.6579 1.6142.6579.3584 0 .6998-.0523 1.0176-.1502.3186-.0978.5721-.2134.775-.3517V7.0784a8.8706 8.8706 0 00-1.4926-.1906c-.8206-.0236-1.4452.312-1.8847.8468-.4335.5365-.6533 1.476-.6533 2.3516v-.0008zm6.2863 4.4485c0 1.5385-.3938 2.662-1.1866 3.3773-.791.7136-2.0005 1.0712-3.6308 1.0712-.5958 0-1.834-.1156-2.8228-.334l.3643-1.7865c.8282.173 1.9202.2193 2.4932.2193.9077 0 1.555-.1847 1.943-.5533.388-.3686.578-.916.578-1.643v-.3687a6.8289 6.8289 0 01-.8848.3349c-.3634.1096-.786.167-1.261.167-.6246 0-1.1917-.0979-1.7055-.2944a3.5554 3.5554 0 01-1.3244-.8645c-.3642-.3796-.6541-.8579-.8561-1.4289-.2028-.571-.3068-1.59-.3068-2.339 0-.7034.1099-1.5856.3245-2.1735.2198-.5871.5316-1.0949.9542-1.515.4167-.42.9255-.743 1.5213-.98a5.5923 5.5923 0 012.052-.3855c.7353 0 1.4114.092 2.0707.2024.6592.1088 1.2204.2236 1.6776.35v8.945-.0008zM11.5026 4.2418v-.6511c-.0005-.4553-.3704-.8241-.8266-.8241H8.749c-.4561 0-.826.3688-.8265.824v.669c0 .0742.0693.1264.1445.1096a6.0346 6.0346 0 011.6768-.2362 6.125 6.125 0 011.6202.2185.1116.1116 0 00.1386-.1097zm-5.2806.852l-.3296-.3282a.8266.8266 0 00-1.168 0l-.393.3922a.8199.8199 0 000 1.164l.3237.323c.0524.0515.1268.0397.1733-.0117.191-.259.3989-.507.6305-.7372.2374-.2362.48-.4437.7462-.6335.0575-.0354.0634-.1155.017-.1687zm3.5159 2.069v2.818c0 .081.0879.1392.1622.0987l2.5102-1.2964c.0574-.0287.0752-.0987.0464-.1552a3.1237 3.1237 0 00-2.603-1.574c-.0575 0-.115.0456-.115.1097l-.0008-.0009zm.0008 6.789c-2.0933.0005-3.7915-1.6912-3.7947-3.7804C5.9468 8.0821 7.6452 6.39 9.7387 6.391c2.0932-.0005 3.7911 1.6914 3.794 3.7804a3.7783 3.7783 0 01-1.1124 2.675 3.7936 3.7936 0 01-2.6824 1.1054h.0008zM9.738 4.8002c-1.9218 0-3.6975 1.0232-4.6584 2.6841a5.359 5.359 0 000 5.3683c.9609 1.661 2.7366 2.6841 4.6584 2.6841a5.3891 5.3891 0 003.8073-1.5725 5.3675 5.3675 0 001.578-3.7987 5.3574 5.3574 0 00-1.5771-3.797A5.379 5.379 0 009.7387 4.801l-.0008-.0008z",fill:"currentColor",fillRule:"evenodd"})))}function zo(e){return O.createElement("svg",{width:"15",height:"15","aria-label":e.ariaLabel,role:"img"},O.createElement("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"},e.children))}function j1(e){var t=e.translations,n=t===void 0?{}:t,o=n.selectText,r=o===void 0?"to select":o,a=n.selectKeyAriaLabel,i=a===void 0?"Enter key":a,c=n.navigateText,s=c===void 0?"to navigate":c,l=n.navigateUpKeyAriaLabel,u=l===void 0?"Arrow up":l,m=n.navigateDownKeyAriaLabel,d=m===void 0?"Arrow down":m,f=n.closeText,v=f===void 0?"to close":f,g=n.closeKeyAriaLabel,b=g===void 0?"Escape key":g,_=n.searchByText,y=_===void 0?"Search by":_;return O.createElement(O.Fragment,null,O.createElement("div",{className:"DocSearch-Logo"},O.createElement(M1,{translations:{searchByText:y}})),O.createElement("ul",{className:"DocSearch-Commands"},O.createElement("li",null,O.createElement("kbd",{className:"DocSearch-Commands-Key"},O.createElement(zo,{ariaLabel:i},O.createElement("path",{d:"M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3"}))),O.createElement("span",{className:"DocSearch-Label"},r)),O.createElement("li",null,O.createElement("kbd",{className:"DocSearch-Commands-Key"},O.createElement(zo,{ariaLabel:d},O.createElement("path",{d:"M7.5 3.5v8M10.5 8.5l-3 3-3-3"}))),O.createElement("kbd",{className:"DocSearch-Commands-Key"},O.createElement(zo,{ariaLabel:u},O.createElement("path",{d:"M7.5 11.5v-8M10.5 6.5l-3-3-3 3"}))),O.createElement("span",{className:"DocSearch-Label"},s)),O.createElement("li",null,O.createElement("kbd",{className:"DocSearch-Commands-Key"},O.createElement(zo,{ariaLabel:b},O.createElement("path",{d:"M13.6167 8.936c-.1065.3583-.6883.962-1.4875.962-.7993 0-1.653-.9165-1.653-2.1258v-.5678c0-1.2548.7896-2.1016 1.653-2.1016.8634 0 1.3601.4778 1.4875 1.0724M9 6c-.1352-.4735-.7506-.9219-1.46-.8972-.7092.0246-1.344.57-1.344 1.2166s.4198.8812 1.3445.9805C8.465 7.3992 8.968 7.9337 9 8.5c.032.5663-.454 1.398-1.4595 1.398C6.6593 9.898 6 9 5.963 8.4851m-1.4748.5368c-.2635.5941-.8099.876-1.5443.876s-1.7073-.6248-1.7073-2.204v-.4603c0-1.0416.721-2.131 1.7073-2.131.9864 0 1.6425 1.031 1.5443 2.2492h-2.956"}))),O.createElement("span",{className:"DocSearch-Label"},v))))}function H1(e){var t=e.hit,n=e.children;return O.createElement("a",{href:t.url},n)}function $1(){return O.createElement("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5"},O.createElement("g",{fill:"none",fillRule:"evenodd"},O.createElement("g",{transform:"translate(1 1)",strokeWidth:"2"},O.createElement("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),O.createElement("path",{d:"M36 18c0-9.94-8.06-18-18-18"},O.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})))))}function q1(){return O.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},O.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},O.createElement("path",{d:"M3.18 6.6a8.23 8.23 0 1112.93 9.94h0a8.23 8.23 0 01-11.63 0"}),O.createElement("path",{d:"M6.44 7.25H2.55V3.36M10.45 6v5.6M10.45 11.6L13 13"})))}function xa(){return O.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},O.createElement("path",{d:"M10 10l5.09-5.09L10 10l5.09 5.09L10 10zm0 0L4.91 4.91 10 10l-5.09 5.09L10 10z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function V1(){return O.createElement("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},O.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},O.createElement("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),O.createElement("path",{d:"M8 17l-6-6 6-6"})))}var N1=function(){return O.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},O.createElement("path",{d:"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))};function F1(e){switch(e.type){case"lvl1":return O.createElement(N1,null);case"content":return O.createElement(z1,null);default:return O.createElement(B1,null)}}function B1(){return O.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},O.createElement("path",{d:"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function z1(){return O.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},O.createElement("path",{d:"M17 5H3h14zm0 5H3h14zm0 5H3h14z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function Is(){return O.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},O.createElement("path",{d:"M10 14.2L5 17l1-5.6-4-4 5.5-.7 2.5-5 2.5 5 5.6.8-4 4 .9 5.5z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function U1(){return O.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},O.createElement("path",{d:"M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0"}))}function W1(){return O.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},O.createElement("path",{d:"M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"}))}function K1(e){var t=e.translations,n=t===void 0?{}:t,o=n.titleText,r=o===void 0?"Unable to fetch results":o,a=n.helpText,i=a===void 0?"You might want to check your network connection.":a;return O.createElement("div",{className:"DocSearch-ErrorScreen"},O.createElement("div",{className:"DocSearch-Screen-Icon"},O.createElement(U1,null)),O.createElement("p",{className:"DocSearch-Title"},r),O.createElement("p",{className:"DocSearch-Help"},i))}var Y1=["translations"];function J1(e){return function(t){if(Array.isArray(t))return na(t)}(e)||function(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}(e)||function(t,n){if(!!t){if(typeof t=="string")return na(t,n);var o=Object.prototype.toString.call(t).slice(8,-1);if(o==="Object"&&t.constructor&&(o=t.constructor.name),o==="Map"||o==="Set")return Array.from(t);if(o==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return na(t,n)}}(e)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function na(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=0||(u[s]=i[s]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function G1(e){var t=e.translations,n=t===void 0?{}:t,o=Q1(e,Y1),r=n.noResultsText,a=r===void 0?"No results for":r,i=n.suggestedQueryText,c=i===void 0?"Try searching for":i,s=n.reportMissingResultsText,l=s===void 0?"Believe this query should return results?":s,u=n.reportMissingResultsLinkText,m=u===void 0?"Let us know.":u,d=o.state.context.searchSuggestions;return O.createElement("div",{className:"DocSearch-NoResults"},O.createElement("div",{className:"DocSearch-Screen-Icon"},O.createElement(W1,null)),O.createElement("p",{className:"DocSearch-Title"},a,' "',O.createElement("strong",null,o.state.query),'"'),d&&d.length>0&&O.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},O.createElement("p",{className:"DocSearch-Help"},c,":"),O.createElement("ul",null,d.slice(0,3).reduce(function(f,v){return[].concat(J1(f),[O.createElement("li",{key:v},O.createElement("button",{className:"DocSearch-Prefill",key:v,type:"button",onClick:function(){o.setQuery(v.toLowerCase()+" "),o.refresh(),o.inputRef.current.focus()}},v))])},[]))),o.getMissingResultsUrl&&O.createElement("p",{className:"DocSearch-Help"},"".concat(l," "),O.createElement("a",{href:o.getMissingResultsUrl({query:o.state.query}),target:"_blank",rel:"noopener noreferrer"},m)))}var Z1=["hit","attribute","tagName"];function Ls(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,o)}return n}function Ds(e){for(var t=1;t=0||(u[s]=i[s]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Rs(e,t){return t.split(".").reduce(function(n,o){return n!=null&&n[o]?n[o]:null},e)}function wn(e){var t=e.hit,n=e.attribute,o=e.tagName;return Pt(o===void 0?"span":o,Ds(Ds({},eb(e,Z1)),{},{dangerouslySetInnerHTML:{__html:Rs(t,"_snippetResult.".concat(n,".value"))||Rs(t,n)}}))}function ks(e,t){return function(n){if(Array.isArray(n))return n}(e)||function(n,o){var r=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(r!=null){var a,i,c=[],s=!0,l=!1;try{for(r=r.call(n);!(s=(a=r.next()).done)&&(c.push(a.value),!o||c.length!==o);s=!0);}catch(u){l=!0,i=u}finally{try{s||r.return==null||r.return()}finally{if(l)throw i}}return c}}(e,t)||function(n,o){if(!!n){if(typeof n=="string")return xs(n,o);var r=Object.prototype.toString.call(n).slice(8,-1);if(r==="Object"&&n.constructor&&(r=n.constructor.name),r==="Map"||r==="Set")return Array.from(n);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return xs(n,o)}}(e,t)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function xs(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n|<\/mark>)/g,ob=RegExp(rm.source);function am(e){var t,n,o,r,a,i=e;if(!i.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var c=((i.__docsearch_parent?(t=i.__docsearch_parent)===null||t===void 0||(n=t._highlightResult)===null||n===void 0||(o=n.hierarchy)===null||o===void 0?void 0:o.lvl0:(r=e._highlightResult)===null||r===void 0||(a=r.hierarchy)===null||a===void 0?void 0:a.lvl0)||{}).value;return c&&ob.test(c)?c.replace(rm,""):c}function Ma(){return Ma=Object.assign||function(e){for(var t=1;t=0||(u[s]=i[s]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function cb(e){var t=e.translations,n=t===void 0?{}:t,o=ib(e,ab),r=n.recentSearchesTitle,a=r===void 0?"Recent":r,i=n.noRecentSearchesText,c=i===void 0?"No recent searches":i,s=n.saveRecentSearchButtonTitle,l=s===void 0?"Save this search":s,u=n.removeRecentSearchButtonTitle,m=u===void 0?"Remove this search from history":u,d=n.favoriteSearchesTitle,f=d===void 0?"Favorite":d,v=n.removeFavoriteSearchButtonTitle,g=v===void 0?"Remove this search from favorites":v;return o.state.status==="idle"&&o.hasCollections===!1?o.disableUserPersonalization?null:O.createElement("div",{className:"DocSearch-StartScreen"},O.createElement("p",{className:"DocSearch-Help"},c)):o.hasCollections===!1?null:O.createElement("div",{className:"DocSearch-Dropdown-Container"},O.createElement(Ca,gr({},o,{title:a,collection:o.state.collections[0],renderIcon:function(){return O.createElement("div",{className:"DocSearch-Hit-icon"},O.createElement(q1,null))},renderAction:function(b){var _=b.item,y=b.runFavoriteTransition,S=b.runDeleteTransition;return O.createElement(O.Fragment,null,O.createElement("div",{className:"DocSearch-Hit-action"},O.createElement("button",{className:"DocSearch-Hit-action-button",title:l,type:"submit",onClick:function(A){A.preventDefault(),A.stopPropagation(),y(function(){o.favoriteSearches.add(_),o.recentSearches.remove(_),o.refresh()})}},O.createElement(Is,null))),O.createElement("div",{className:"DocSearch-Hit-action"},O.createElement("button",{className:"DocSearch-Hit-action-button",title:m,type:"submit",onClick:function(A){A.preventDefault(),A.stopPropagation(),S(function(){o.recentSearches.remove(_),o.refresh()})}},O.createElement(xa,null))))}})),O.createElement(Ca,gr({},o,{title:f,collection:o.state.collections[1],renderIcon:function(){return O.createElement("div",{className:"DocSearch-Hit-icon"},O.createElement(Is,null))},renderAction:function(b){var _=b.item,y=b.runDeleteTransition;return O.createElement("div",{className:"DocSearch-Hit-action"},O.createElement("button",{className:"DocSearch-Hit-action-button",title:g,type:"submit",onClick:function(S){S.preventDefault(),S.stopPropagation(),y(function(){o.favoriteSearches.remove(_),o.refresh()})}},O.createElement(xa,null)))}})))}var sb=["translations"];function br(){return br=Object.assign||function(e){for(var t=1;t=0||(u[s]=i[s]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var ub=O.memo(function(e){var t=e.translations,n=t===void 0?{}:t,o=lb(e,sb);if(o.state.status==="error")return O.createElement(K1,{translations:n==null?void 0:n.errorScreen});var r=o.state.collections.some(function(a){return a.items.length>0});return o.state.query?r===!1?O.createElement(G1,br({},o,{translations:n==null?void 0:n.noResultsScreen})):O.createElement(rb,o):O.createElement(cb,br({},o,{hasCollections:r,translations:n==null?void 0:n.startScreen}))},function(e,t){return t.state.status==="loading"||t.state.status==="stalled"}),mb=["translations"];function yr(){return yr=Object.assign||function(e){for(var t=1;t=0||(u[s]=i[s]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function fb(e){var t=e.translations,n=t===void 0?{}:t,o=db(e,mb),r=n.resetButtonTitle,a=r===void 0?"Clear the query":r,i=n.resetButtonAriaLabel,c=i===void 0?"Clear the query":i,s=n.cancelButtonText,l=s===void 0?"Cancel":s,u=n.cancelButtonAriaLabel,m=u===void 0?"Cancel":u,d=o.getFormProps({inputElement:o.inputRef.current}).onReset;return O.useEffect(function(){o.autoFocus&&o.inputRef.current&&o.inputRef.current.focus()},[o.autoFocus,o.inputRef]),O.useEffect(function(){o.isFromSelection&&o.inputRef.current&&o.inputRef.current.select()},[o.isFromSelection,o.inputRef]),O.createElement(O.Fragment,null,O.createElement("form",{className:"DocSearch-Form",onSubmit:function(f){f.preventDefault()},onReset:d},O.createElement("label",yr({className:"DocSearch-MagnifierLabel"},o.getLabelProps()),O.createElement(em,null)),O.createElement("div",{className:"DocSearch-LoadingIndicator"},O.createElement($1,null)),O.createElement("input",yr({className:"DocSearch-Input",ref:o.inputRef},o.getInputProps({inputElement:o.inputRef.current,autoFocus:o.autoFocus,maxLength:64}))),O.createElement("button",{type:"reset",title:a,className:"DocSearch-Reset","aria-label":c,hidden:!o.state.query},O.createElement(xa,null))),O.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":m,onClick:o.onClose},l))}var hb=["_highlightResult","_snippetResult"];function pb(e,t){if(e==null)return{};var n,o,r=function(i,c){if(i==null)return{};var s,l,u={},m=Object.keys(i);for(l=0;l=0||(u[s]=i[s]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function _b(e){return function(){var t="__TEST_KEY__";try{return localStorage.setItem(t,""),localStorage.removeItem(t),!0}catch{return!1}}()===!1?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}function js(e){var t=e.key,n=e.limit,o=n===void 0?5:n,r=_b(t),a=r.getItem().slice(0,o);return{add:function(i){var c=i,s=(c._highlightResult,c._snippetResult,pb(c,hb)),l=a.findIndex(function(u){return u.objectID===s.objectID});l>-1&&a.splice(l,1),a.unshift(s),a=a.slice(0,o),r.setItem(a)},remove:function(i){a=a.filter(function(c){return c.objectID!==i.objectID}),r.setItem(a)},getAll:function(){return a}}}var vb=["facetName","facetQuery"];function gb(e){var t,n="algoliasearch-client-js-".concat(e.key),o=function(){return t===void 0&&(t=e.localStorage||window.localStorage),t},r=function(){return JSON.parse(o().getItem(n)||"{}")};return{get:function(a,i){var c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then(function(){var s=JSON.stringify(a),l=r()[s];return Promise.all([l||i(),l!==void 0])}).then(function(s){var l=fr(s,2),u=l[0],m=l[1];return Promise.all([u,m||c.miss(u)])}).then(function(s){return fr(s,1)[0]})},set:function(a,i){return Promise.resolve().then(function(){var c=r();return c[JSON.stringify(a)]=i,o().setItem(n,JSON.stringify(c)),i})},delete:function(a){return Promise.resolve().then(function(){var i=r();delete i[JSON.stringify(a)],o().setItem(n,JSON.stringify(i))})},clear:function(){return Promise.resolve().then(function(){o().removeItem(n)})}}}function Xn(e){var t=hr(e.caches),n=t.shift();return n===void 0?{get:function(o,r){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return r().then(function(i){return Promise.all([i,a.miss(i)])}).then(function(i){return fr(i,1)[0]})},set:function(o,r){return Promise.resolve(r)},delete:function(o){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(o,r){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return n.get(o,r,a).catch(function(){return Xn({caches:t}).get(o,r,a)})},set:function(o,r){return n.set(o,r).catch(function(){return Xn({caches:t}).set(o,r)})},delete:function(o){return n.delete(o).catch(function(){return Xn({caches:t}).delete(o)})},clear:function(){return n.clear().catch(function(){return Xn({caches:t}).clear()})}}}function oa(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{serializable:!0},t={};return{get:function(n,o){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(n);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var i=o(),c=r&&r.miss||function(){return Promise.resolve()};return i.then(function(s){return c(s)}).then(function(){return i})},set:function(n,o){return t[JSON.stringify(n)]=e.serializable?JSON.stringify(o):o,Promise.resolve(o)},delete:function(n){return delete t[JSON.stringify(n)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function bb(e){for(var t=e.length-1;t>0;t--){var n=Math.floor(Math.random()*(t+1)),o=e[t];e[t]=e[n],e[n]=o}return e}function im(e,t){return t&&Object.keys(t).forEach(function(n){e[n]=t[n](e)}),e}function Mr(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o0?o:void 0,timeout:n.timeout||t,headers:n.headers||{},queryParameters:n.queryParameters||{},cacheable:n.cacheable}}var An={Read:1,Write:2,Any:3},cm=1,yb=2,sm=3;function lm(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:cm;return Pe(Pe({},e),{},{status:t,lastUpdate:Date.now()})}function um(e){return typeof e=="string"?{protocol:"https",url:e,accept:An.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||An.Any}}var $s="GET",jr="POST";function Eb(e,t){return Promise.all(t.map(function(n){return e.get(n,function(){return Promise.resolve(lm(n))})})).then(function(n){var o=n.filter(function(i){return function(c){return c.status===cm||Date.now()-c.lastUpdate>12e4}(i)}),r=n.filter(function(i){return function(c){return c.status===sm&&Date.now()-c.lastUpdate<=12e4}(i)}),a=[].concat(hr(o),hr(r));return{getTimeout:function(i,c){return(r.length===0&&i===0?1:r.length+3+i)*c},statelessHosts:a.length>0?a.map(function(i){return um(i)}):t}})}function qs(e,t,n,o){var r=[],a=function(d,f){if(!(d.method===$s||d.data===void 0&&f.data===void 0)){var v=Array.isArray(d.data)?d.data:Pe(Pe({},d.data),f.data);return JSON.stringify(v)}}(n,o),i=function(d,f){var v=Pe(Pe({},d.headers),f.headers),g={};return Object.keys(v).forEach(function(b){var _=v[b];g[b.toLowerCase()]=_}),g}(e,o),c=n.method,s=n.method!==$s?{}:Pe(Pe({},n.data),o.data),l=Pe(Pe(Pe({"x-algolia-agent":e.userAgent.value},e.queryParameters),s),o.queryParameters),u=0,m=function d(f,v){var g=f.pop();if(g===void 0)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:Vs(r)};var b={data:a,headers:i,method:c,url:Ob(g,n.path,l),connectTimeout:v(u,e.timeouts.connect),responseTimeout:v(u,o.timeout)},_=function(S){var A={request:b,response:S,host:g,triesLeft:f.length};return r.push(A),A},y={onSucess:function(S){return function(A){try{return JSON.parse(A.content)}catch(D){throw function(K,R){return{name:"DeserializationError",message:K,response:R}}(D.message,A)}}(S)},onRetry:function(S){var A=_(S);return S.isTimedOut&&u++,Promise.all([e.logger.info("Retryable failure",dm(A)),e.hostsCache.set(g,lm(g,S.isTimedOut?sm:yb))]).then(function(){return d(f,v)})},onFail:function(S){throw _(S),function(A,D){var K=A.content,R=A.status,E=K;try{E=JSON.parse(K).message}catch{}return function(U,Y,H){return{name:"ApiError",message:U,status:Y,transporterStackTrace:H}}(E,R,D)}(S,Vs(r))}};return e.requester.send(b).then(function(S){return function(A,D){return function(K){var R=K.status;return K.isTimedOut||function(E){var U=E.isTimedOut,Y=E.status;return!U&&~~Y==0}(K)||~~(R/100)!=2&&~~(R/100)!=4}(A)?D.onRetry(A):~~(A.status/100)==2?D.onSucess(A):D.onFail(A)}(S,y)})};return Eb(e.hostsCache,t).then(function(d){return m(hr(d.statelessHosts).reverse(),d.getTimeout)})}function wb(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(n){var o="; ".concat(n.segment).concat(n.version!==void 0?" (".concat(n.version,")"):"");return t.value.indexOf(o)===-1&&(t.value="".concat(t.value).concat(o)),t}};return t}function Ob(e,t,n){var o=mm(n),r="".concat(e.protocol,"://").concat(e.url,"/").concat(t.charAt(0)==="/"?t.substr(1):t);return o.length&&(r+="?".concat(o)),r}function mm(e){return Object.keys(e).map(function(t){return Mr("%s=%s",t,(n=e[t],Object.prototype.toString.call(n)==="[object Object]"||Object.prototype.toString.call(n)==="[object Array]"?JSON.stringify(e[t]):e[t]));var n}).join("&")}function Vs(e){return e.map(function(t){return dm(t)})}function dm(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return Pe(Pe({},e),{},{request:Pe(Pe({},e.request),{},{headers:Pe(Pe({},e.request.headers),t)})})}var Pb=function(e){var t=e.appId,n=function(a,i,c){var s={"x-algolia-api-key":c,"x-algolia-application-id":i};return{headers:function(){return a===Qo.WithinHeaders?s:{}},queryParameters:function(){return a===Qo.WithinQueryParameters?s:{}}}}(e.authMode!==void 0?e.authMode:Qo.WithinHeaders,t,e.apiKey),o=function(a){var i=a.hostsCache,c=a.logger,s=a.requester,l=a.requestsCache,u=a.responsesCache,m=a.timeouts,d=a.userAgent,f=a.hosts,v=a.queryParameters,g={hostsCache:i,logger:c,requester:s,requestsCache:l,responsesCache:u,timeouts:m,userAgent:d,headers:a.headers,queryParameters:v,hosts:f.map(function(b){return um(b)}),read:function(b,_){var y=Hs(_,g.timeouts.read),S=function(){return qs(g,g.hosts.filter(function(D){return(D.accept&An.Read)!=0}),b,y)};if((y.cacheable!==void 0?y.cacheable:b.cacheable)!==!0)return S();var A={request:b,mappedRequestOptions:y,transporter:{queryParameters:g.queryParameters,headers:g.headers}};return g.responsesCache.get(A,function(){return g.requestsCache.get(A,function(){return g.requestsCache.set(A,S()).then(function(D){return Promise.all([g.requestsCache.delete(A),D])},function(D){return Promise.all([g.requestsCache.delete(A),Promise.reject(D)])}).then(function(D){var K=fr(D,2);return K[0],K[1]})})},{miss:function(D){return g.responsesCache.set(A,D)}})},write:function(b,_){return qs(g,g.hosts.filter(function(y){return(y.accept&An.Write)!=0}),b,Hs(_,g.timeouts.write))}};return g}(Pe(Pe({hosts:[{url:"".concat(t,"-dsn.algolia.net"),accept:An.Read},{url:"".concat(t,".algolia.net"),accept:An.Write}].concat(bb([{url:"".concat(t,"-1.algolianet.com")},{url:"".concat(t,"-2.algolianet.com")},{url:"".concat(t,"-3.algolianet.com")}]))},e),{},{headers:Pe(Pe(Pe({},n.headers()),{"content-type":"application/x-www-form-urlencoded"}),e.headers),queryParameters:Pe(Pe({},n.queryParameters()),e.queryParameters)})),r={transporter:o,appId:t,addAlgoliaAgent:function(a,i){o.userAgent.add({segment:a,version:i})},clearCache:function(){return Promise.all([o.requestsCache.clear(),o.responsesCache.clear()]).then(function(){})}};return im(r,e.methods)},fm=function(e){return function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o={transporter:e.transporter,appId:e.appId,indexName:t};return im(o,n.methods)}},Ns=function(e){return function(t,n){var o=t.map(function(r){return Pe(Pe({},r),{},{params:mm(r.params||{})})});return e.transporter.read({method:jr,path:"1/indexes/*/queries",data:{requests:o},cacheable:!0},n)}},Fs=function(e){return function(t,n){return Promise.all(t.map(function(o){var r=o.params,a=r.facetName,i=r.facetQuery,c=k0(r,vb);return fm(e)(o.indexName,{methods:{searchForFacetValues:hm}}).searchForFacetValues(a,i,Pe(Pe({},n),c))}))}},Sb=function(e){return function(t,n,o){return e.transporter.read({method:jr,path:Mr("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:n},cacheable:!0},o)}},Ab=function(e){return function(t,n){return e.transporter.read({method:jr,path:Mr("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},n)}},hm=function(e){return function(t,n,o){return e.transporter.read({method:jr,path:Mr("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:n},cacheable:!0},o)}},Tb=1,Ib=2,Lb=3;function pm(e,t,n){var o,r={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(a){return new Promise(function(i){var c=new XMLHttpRequest;c.open(a.method,a.url,!0),Object.keys(a.headers).forEach(function(m){return c.setRequestHeader(m,a.headers[m])});var s,l=function(m,d){return setTimeout(function(){c.abort(),i({status:0,content:d,isTimedOut:!0})},1e3*m)},u=l(a.connectTimeout,"Connection timeout");c.onreadystatechange=function(){c.readyState>c.OPENED&&s===void 0&&(clearTimeout(u),s=l(a.responseTimeout,"Socket timeout"))},c.onerror=function(){c.status===0&&(clearTimeout(u),clearTimeout(s),i({content:c.responseText||"Network request failed",status:c.status,isTimedOut:!1}))},c.onload=function(){clearTimeout(u),clearTimeout(s),i({content:c.responseText,status:c.status,isTimedOut:!1})},c.send(a.data)})}},logger:(o=Lb,{debug:function(a,i){return Tb>=o&&console.debug(a,i),Promise.resolve()},info:function(a,i){return Ib>=o&&console.info(a,i),Promise.resolve()},error:function(a,i){return console.error(a,i),Promise.resolve()}}),responsesCache:oa(),requestsCache:oa({serializable:!1}),hostsCache:Xn({caches:[gb({key:"".concat("4.8.5","-").concat(e)}),oa()]}),userAgent:wb("4.8.5").add({segment:"Browser",version:"lite"}),authMode:Qo.WithinQueryParameters};return Pb(Pe(Pe(Pe({},r),n),{},{methods:{search:Ns,searchForFacetValues:Fs,multipleQueries:Ns,multipleSearchForFacetValues:Fs,initIndex:function(a){return function(i){return fm(a)(i,{methods:{search:Ab,searchForFacetValues:hm,findAnswers:Sb}})}}}}))}pm.version="4.8.5";var Db=["footer","searchBox"];function co(){return co=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,o=new Array(t);n=0||(u[s]=i[s]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Cb(e){var t=e.appId,n=e.apiKey,o=e.indexName,r=e.placeholder,a=r===void 0?"Search docs":r,i=e.searchParameters,c=e.onClose,s=c===void 0?nb:c,l=e.transformItems,u=l===void 0?Ms:l,m=e.hitComponent,d=m===void 0?H1:m,f=e.resultsFooterComponent,v=f===void 0?function(){return null}:f,g=e.navigator,b=e.initialScrollY,_=b===void 0?0:b,y=e.transformSearchClient,S=y===void 0?Ms:y,A=e.disableUserPersonalization,D=A!==void 0&&A,K=e.initialQuery,R=K===void 0?"":K,E=e.translations,U=E===void 0?{}:E,Y=e.getMissingResultsUrl,H=U.footer,P=U.searchBox,T=xb(U,Db),k=kb(O.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),M=k[0],j=k[1],W=O.useRef(null),ee=O.useRef(null),me=O.useRef(null),de=O.useRef(null),ve=O.useRef(null),Se=O.useRef(10),Re=O.useRef(typeof window<"u"?window.getSelection().toString().slice(0,64):"").current,Fe=O.useRef(R||Re).current,x=function(p,w,I){return O.useMemo(function(){var C=pm(p,w);return C.addAlgoliaAgent("docsearch","3.2.1"),/docsearch.js \(.*\)/.test(C.transporter.userAgent.value)===!1&&C.addAlgoliaAgent("docsearch-react","3.2.1"),I(C)},[p,w,I])}(t,n,S),Z=O.useRef(js({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(o),limit:10})).current,N=O.useRef(js({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(o),limit:Z.getAll().length===0?7:4})).current,G=O.useCallback(function(p){if(!D){var w=p.type==="content"?p.__docsearch_parent:p;w&&Z.getAll().findIndex(function(I){return I.objectID===w.objectID})===-1&&N.add(w)}},[Z,N,D]),pe=O.useMemo(function(){return C1({id:"docsearch",defaultActiveItemId:0,placeholder:a,openOnFocus:!0,initialState:{query:Fe,context:{searchSuggestions:[]}},navigator:g,onStateChange:function(p){j(p.state)},getSources:function(p){var w=p.query,I=p.state,C=p.setContext,$=p.setStatus;return w?x.search([{query:w,indexName:o,params:ra({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(Se.current),"hierarchy.lvl2:".concat(Se.current),"hierarchy.lvl3:".concat(Se.current),"hierarchy.lvl4:".concat(Se.current),"hierarchy.lvl5:".concat(Se.current),"hierarchy.lvl6:".concat(Se.current),"content:".concat(Se.current)],snippetEllipsisText:"\u2026",highlightPreTag:"",highlightPostTag:"",hitsPerPage:20},i)}]).catch(function(q){throw q.name==="RetryError"&&$("error"),q}).then(function(q){var J=q.results[0],z=J.hits,Q=J.nbHits,B=Cs(z,function(re){return am(re)});return I.context.searchSuggestions.length0&&(le(),ve.current&&ve.current.focus())},[Fe,le]),O.useEffect(function(){function p(){if(ee.current){var w=.01*window.innerHeight;ee.current.style.setProperty("--docsearch-vh","".concat(w,"px"))}}return p(),window.addEventListener("resize",p),function(){window.removeEventListener("resize",p)}},[]),O.createElement("div",co({ref:W},fe({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container",M.status==="stalled"&&"DocSearch-Container--Stalled",M.status==="error"&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(p){p.target===p.currentTarget&&s()}}),O.createElement("div",{className:"DocSearch-Modal",ref:ee},O.createElement("header",{className:"DocSearch-SearchBar",ref:me},O.createElement(fb,co({},pe,{state:M,autoFocus:Fe.length===0,inputRef:ve,isFromSelection:Boolean(Fe)&&Fe===Re,translations:P,onClose:s}))),O.createElement("div",{className:"DocSearch-Dropdown",ref:de},O.createElement(ub,co({},pe,{indexName:o,state:M,hitComponent:d,resultsFooterComponent:v,disableUserPersonalization:D,recentSearches:N,favoriteSearches:Z,inputRef:ve,translations:T,getMissingResultsUrl:Y,onItemClick:function(p){G(p),s()}}))),O.createElement("footer",{className:"DocSearch-Footer"},O.createElement(j1,{translations:H}))))}function ja(){return ja=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&arguments[1]!==void 0?arguments[1]:window;return typeof t=="string"?n.document.querySelector(t):t}(e.container,e.environment))}const Hb=e=>e.button===1||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey,$b=()=>{const e=vn(),t=_i();return{hitComponent:({hit:n,children:o})=>({type:"a",ref:void 0,constructor:void 0,key:void 0,props:{href:n.url,onClick:r=>{Hb(r)||(r.preventDefault(),e.push(rc(n.url,t.value.base)))},children:o},__v:null}),navigator:{navigate:({itemUrl:n})=>{e.push(rc(n,t.value.base))}},transformSearchClient:n=>{const o=ri(n.search,500);return{...n,search:async(...r)=>o(...r)}}}};const qb=je({name:"Docsearch",props:{containerId:{type:String,required:!1,default:"docsearch-container"},options:{type:Object,required:!0}},setup(e){const t=Fn(),n=Em(),o=$b(),r=te(()=>{var c;return{...e.options,...(c=e.options.locales)==null?void 0:c[t.value]}}),a=[],i=()=>{var s,l;const c=(l=(s=r.value.searchParameters)==null?void 0:s.facetFilters)!=null?l:[];a.splice(0,a.length,`lang:${n.value}`,...ce(c)?c:[c]),jb({...o,...r.value,container:`#${e.containerId}`,searchParameters:{...r.value.searchParameters,facetFilters:a}})};return et(()=>{i(),ot([t,r],([c,s],[l,u])=>{c!==l&&JSON.stringify(s)!==JSON.stringify(u)&&i()}),ot(n,(c,s)=>{if(c!==s){const l=a.findIndex(u=>u===`lang:${s}`);l>-1&&a.splice(l,1,`lang:${c}`)}})}),()=>Te("div",{id:e.containerId})}}),Vb={apiKey:"30c521836bfc8e97915576e11ac2cebc",indexName:"arthas",appId:"UX8WBNVHHR",locales:{"/":{placeholder:"\u641C\u7D22\u6587\u6863",translations:{button:{buttonText:"\u641C\u7D22\u6587\u6863",buttonAriaLabel:"\u641C\u7D22\u6587\u6863"},modal:{searchBox:{resetButtonTitle:"\u6E05\u9664\u67E5\u8BE2\u6761\u4EF6",resetButtonAriaLabel:"\u6E05\u9664\u67E5\u8BE2\u6761\u4EF6",cancelButtonText:"\u53D6\u6D88",cancelButtonAriaLabel:"\u53D6\u6D88"},startScreen:{recentSearchesTitle:"\u641C\u7D22\u5386\u53F2",noRecentSearchesText:"\u6CA1\u6709\u641C\u7D22\u5386\u53F2",saveRecentSearchButtonTitle:"\u4FDD\u5B58\u81F3\u641C\u7D22\u5386\u53F2",removeRecentSearchButtonTitle:"\u4ECE\u641C\u7D22\u5386\u53F2\u4E2D\u79FB\u9664",favoriteSearchesTitle:"\u6536\u85CF",removeFavoriteSearchButtonTitle:"\u4ECE\u6536\u85CF\u4E2D\u79FB\u9664"},errorScreen:{titleText:"\u65E0\u6CD5\u83B7\u53D6\u7ED3\u679C",helpText:"\u4F60\u53EF\u80FD\u9700\u8981\u68C0\u67E5\u4F60\u7684\u7F51\u7EDC\u8FDE\u63A5"},footer:{selectText:"\u9009\u62E9",navigateText:"\u5207\u6362",closeText:"\u5173\u95ED",searchByText:"\u641C\u7D22\u63D0\u4F9B\u8005"},noResultsScreen:{noResultsText:"\u65E0\u6CD5\u627E\u5230\u76F8\u5173\u7ED3\u679C",suggestedQueryText:"\u4F60\u53EF\u4EE5\u5C1D\u8BD5\u67E5\u8BE2",reportMissingResultsText:"\u4F60\u8BA4\u4E3A\u8BE5\u67E5\u8BE2\u5E94\u8BE5\u6709\u7ED3\u679C\uFF1F",reportMissingResultsLinkText:"\u70B9\u51FB\u53CD\u9988"}}}}}},Nb=Lt({enhance({app:e}){e.component("Docsearch",()=>Te(qb,{options:Vb}))}}),Fb={"doc/start-arthas.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:4},{name:"mantuliu",email:"240951888@qq.com",commits:1}],"doc/sm.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:1}],"doc/session.md":[{name:"Fu",email:"dkafussss@gmail.com",commits:1}],"doc/retransform.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3}],"doc/redefine.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:8},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:1}],"doc/quit.md":[{name:"Fu",email:"dkafussss@gmail.com",commits:1}],"doc/quick-start.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:23},{name:"Gene",email:"geneq@hotmail.com",commits:1},{name:"Sergio Escalante",email:"sergioescala@gmail.com",commits:1},{name:"northmorn",email:"northmorn@gmail.com",commits:1},{name:"\u9773\u9633",email:"260893248@qq.com",commits:1}],"doc/profiler.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:7},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/perfcounter.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/options.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:9},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"qianmoke",email:"zzilovey@gmail.com",commits:1}],"doc/ognl.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"gongdewei",email:"kylixs@qq.com",commits:1}],"doc/monitor.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"LHearen",email:"lhearen@gmail.com",commits:1},{name:"mikawudi",email:"mikawudi@qq.com",commits:1}],"doc/memory.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:1}],"doc/mc.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:5},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:1},{name:"vic",email:"snipercy@users.noreply.github.com",commits:1}],"doc/mbean.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"\u5F90\u5FD7\u6BC5",email:"xuzhiyi@youzan.com",commits:1}],"doc/manual-install.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:12},{name:"gongdewei",email:"kylixs@qq.com",commits:1}],"doc/keymap.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/jvm.md":[{name:"bohr.qiu",email:"bohr.qiu@gmail.com",commits:4},{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/jad.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:8},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:1},{name:"penguin-wwy",email:"940375606@qq.com",commits:1}],"doc/install-detail.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:29}],"doc/index.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:53},{name:"TheoneFx",email:"chenxilzx1@gmail.com",commits:1},{name:"gongdewei",email:"kylixs@qq.com",commits:1},{name:"lzc-alioo",email:"33567235+lzc-alioo@users.noreply.github.com",commits:1}],"doc/idea-plugin.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:1},{name:"zthreefires",email:"34255589+zthreefires@users.noreply.github.com",commits:1},{name:"\u6C6A\u5409",email:"983433479@qq.com",commits:1}],"doc/http-api.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:4},{name:"gongdewei",email:"kylixs@qq.com",commits:3},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/history.md":[{name:"Fu",email:"dkafussss@gmail.com",commits:1}],"doc/help.md":[{name:"Fu",email:"dkafussss@gmail.com",commits:1}],"doc/heapdump.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/groovy.md":[{name:"beiwei30",email:"ian.luo@gmail.com",commits:1},{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:1}],"doc/grep.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:4},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/getstatic.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:1}],"doc/faq.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:17},{name:"\u6C6A\u5409",email:"983433479@qq.com",commits:2},{name:"Gong Dewei",email:"kylixs@qq.com",commits:1}],"doc/echo.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/dump.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:1}],"doc/download.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:7}],"doc/docker.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:6},{name:"garenchan",email:"1412950785@qq.com",commits:1}],"doc/dashboard.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:4},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"LHearen",email:"lhearen@gmail.com",commits:1},{name:"gongdewei",email:"kylixs@qq.com",commits:1},{name:"xuefeng0707",email:"xuefeng0707@hotmail.com",commits:1}],"doc/contact-us.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:10}],"doc/commands.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:23},{name:"Fu",email:"dkafussss@gmail.com",commits:1}],"doc/cls.md":[{name:"Fu",email:"dkafussss@gmail.com",commits:1}],"doc/classloader.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:5},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:2},{name:"LHearen",email:"lhearen@gmail.com",commits:1}],"doc/cat.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/batch-support.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:4},{name:"D-H-T",email:"dht925nerd@126.com",commits:1}],"doc/base64.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:1}],"doc/auth.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:7}],"doc/async.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:5},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"\u6C6A\u5409",email:"983433479@qq.com",commits:1}],"doc/arthas3.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:5}],"doc/arthas-properties.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3}],"doc/agent.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3}],"doc/advice-class.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2}],"doc/advanced-use.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:28},{name:"penguin-wwy",email:"940375606@qq.com",commits:1},{name:"\u5F90\u5FD7\u6BC5",email:"xuzhiyi@youzan.com",commits:1},{name:"\u9759\u5B8F",email:"acvrock.cn@gmail.com",commits:1}],"doc/README.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:1}],"doc/stack.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:5},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/thread.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:4},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"gongdewei",email:"kylixs@qq.com",commits:1},{name:"\u674E\u9F0E",email:"oldratlee@gmail.com",commits:1}],"doc/sysenv.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/tee.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"pipetee",email:"toyangmin@gmail.com",commits:1}],"doc/stop.md":[{name:"Fu",email:"dkafussss@gmail.com",commits:1}],"doc/trace.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:14},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Jerry",email:"favoorr@gmail.com",commits:1},{name:"\u5F90\u5FD7\u6BC5",email:"xuzhiyi@youzan.com",commits:1}],"doc/pwd.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/release-notes.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:8}],"doc/reset.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:5},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/save-log.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:4},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/sc.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:1}],"doc/spring-boot-starter.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:11}],"doc/tunnel.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:6}],"doc/vmtool.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3}],"doc/tt.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:5},{name:"superheizai",email:"superheizai@aliyun.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Xiangmingzhe",email:"xiangmz0928@gmail.com",commits:1},{name:"vic",email:"snipercy@users.noreply.github.com",commits:1},{name:"\u6C6A\u5409",email:"983433479@qq.com",commits:1}],"doc/vmoption.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/logger.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:1}],"doc/sysprop.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:4},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"doc/version.md":[{name:"Fu",email:"dkafussss@gmail.com",commits:1}],"doc/watch.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:12},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"vic",email:"snipercy@users.noreply.github.com",commits:1},{name:"\u6C6A\u5409",email:"983433479@qq.com",commits:1}],"doc/web-console.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:14},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"en/doc/sm.md":[{name:"Hearen",email:"LHearen@126.com",commits:2},{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/session.md":[{name:"Fu",email:"dkafussss@gmail.com",commits:1}],"en/doc/sc.md":[{name:"Hearen",email:"LHearen@126.com",commits:2},{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:1},{name:"Sergio Escalante",email:"sergioescala@gmail.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/save-log.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/retransform.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3}],"en/doc/reset.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:4},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/release-notes.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:7},{name:"0xflotus",email:"26602940+0xflotus@users.noreply.github.com",commits:1},{name:"Hearen",email:"LHearen@126.com",commits:1}],"en/doc/redefine.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:7},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:1},{name:"LHearen",email:"lhearen@gmail.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/quit.md":[{name:"Fu",email:"dkafussss@gmail.com",commits:1}],"en/doc/quick-start.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:15},{name:"Hearen",email:"LHearen@126.com",commits:2},{name:"0xflotus",email:"26602940+0xflotus@users.noreply.github.com",commits:1},{name:"Arteev Raina",email:"arteevraina@gmail.com",commits:1},{name:"LHearen",email:"lhearen@gmail.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1},{name:"garenchan",email:"1412950785@qq.com",commits:1}],"en/doc/pwd.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"en/doc/profiler.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:7},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"en/doc/perfcounter.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"en/doc/options.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:8},{name:"Hearen",email:"LHearen@126.com",commits:2},{name:"alfredzouang",email:"43456743+alfredzouang@users.noreply.github.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/ognl.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"gongdewei",email:"kylixs@qq.com",commits:1}],"en/doc/monitor.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"LHearen",email:"lhearen@gmail.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1},{name:"mikawudi",email:"mikawudi@qq.com",commits:1}],"en/doc/memory.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:1}],"en/doc/mc.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:5},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:1},{name:"vic",email:"snipercy@users.noreply.github.com",commits:1}],"en/doc/mbean.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"\u5F90\u5FD7\u6BC5",email:"xuzhiyi@youzan.com",commits:1}],"en/doc/manual-install.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:7},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"Sergio Escalante",email:"sergioescala@gmail.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1},{name:"gongdewei",email:"kylixs@qq.com",commits:1}],"en/doc/logger.md":[{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:2},{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"en/doc/keymap.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Arteev Raina",email:"arteevraina@gmail.com",commits:1},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/jvm.md":[{name:"bohr.qiu",email:"bohr.qiu@gmail.com",commits:2},{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/jad.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:6},{name:"Hearen",email:"LHearen@126.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/install-detail.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:18},{name:"Arteev Raina",email:"arteevraina@gmail.com",commits:1},{name:"LHearen",email:"lhearen@gmail.com",commits:1},{name:"Sahil Jha",email:"sjha200000@gmail.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/index.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:28},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"LHearen",email:"LHearen@gmail.com",commits:1},{name:"Nithyanandan Natchimuthu",email:"anand1st@gmail.com",commits:1},{name:"Arteev Raina",email:"arteevraina@gmail.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1},{name:"gongdewei",email:"kylixs@qq.com",commits:1},{name:"Sahil Jha",email:"sjha200000@gmail.com",commits:1}],"en/doc/idea-plugin.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:1},{name:"\u6C6A\u5409",email:"983433479@qq.com",commits:1}],"en/doc/http-api.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:4},{name:"gongdewei",email:"kylixs@qq.com",commits:3},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"en/doc/history.md":[{name:"Fu",email:"dkafussss@gmail.com",commits:1}],"en/doc/help.md":[{name:"Fu",email:"dkafussss@gmail.com",commits:1}],"en/doc/heapdump.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"en/doc/groovy.md":[{name:"Arteev Raina",email:"arteevraina@gmail.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/grep.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:4},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"en/doc/getstatic.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Arteev Raina",email:"arteevraina@gmail.com",commits:1},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/faq.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:15},{name:"\u6C6A\u5409",email:"983433479@qq.com",commits:2},{name:"Gong Dewei",email:"kylixs@qq.com",commits:1}],"en/doc/echo.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"en/doc/dump.md":[{name:"Hearen",email:"LHearen@126.com",commits:2},{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Hollow Man",email:"hollowman@hollowman.ml",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/download.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:6},{name:"Arteev Raina",email:"arteevraina@gmail.com",commits:1}],"en/doc/docker.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:6},{name:"garenchan",email:"1412950785@qq.com",commits:1}],"en/doc/dashboard.md":[{name:"LHearen",email:"lhearen@gmail.com",commits:2},{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1},{name:"gongdewei",email:"kylixs@qq.com",commits:1},{name:"xuefeng0707",email:"xuefeng0707@hotmail.com",commits:1}],"en/doc/contact-us.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Sahil Jha",email:"sjha200000@gmail.com",commits:1}],"en/doc/commands.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:21},{name:"Arteev Raina",email:"arteevraina@gmail.com",commits:1},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"LHearen",email:"lhearen@gmail.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/cls.md":[{name:"Fu",email:"dkafussss@gmail.com",commits:1}],"en/doc/classloader.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:4},{name:"Hearen",email:"LHearen@126.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:2},{name:"0xflotus",email:"26602940+0xflotus@users.noreply.github.com",commits:1},{name:"Arteev Raina",email:"arteevraina@gmail.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/cat.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"en/doc/batch-support.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Arteev Raina",email:"arteevraina@gmail.com",commits:1},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/base64.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:1}],"en/doc/auth.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:6}],"en/doc/async.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3},{name:"0xflotus",email:"26602940+0xflotus@users.noreply.github.com",commits:1},{name:"Arteev Raina",email:"arteevraina@gmail.com",commits:1},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Sergio Escalante",email:"sergioescala@gmail.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1},{name:"\u6C6A\u5409",email:"983433479@qq.com",commits:1}],"en/doc/arthas-properties.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3}],"en/doc/agent.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3}],"en/doc/advice-class.md":[{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/advanced-use.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:28},{name:"Arteev Raina",email:"arteevraina@gmail.com",commits:1},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"HearingSmile",email:"41669762+tianjindong@users.noreply.github.com",commits:1},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"LHearen",email:"lhearen@gmail.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1},{name:"\u5F90\u5FD7\u6BC5",email:"xuzhiyi@youzan.com",commits:1},{name:"0xflotus",email:"26602940+0xflotus@users.noreply.github.com",commits:1},{name:"\u9759\u5B8F",email:"acvrock.cn@gmail.com",commits:1}],"en/doc/README.md":[{name:"LHearen",email:"lhearen@gmail.com",commits:1},{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:1}],"en/doc/stack.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3},{name:"LHearen",email:"lhearen@gmail.com",commits:2},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/start-arthas.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1},{name:"mantuliu",email:"240951888@qq.com",commits:1}],"en/doc/spring-boot-starter.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:8}],"en/doc/stop.md":[{name:"Fu",email:"dkafussss@gmail.com",commits:1}],"en/doc/sysenv.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"en/doc/sysprop.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/tee.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"pipetee",email:"toyangmin@gmail.com",commits:1}],"en/doc/thread.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"LHearen",email:"lhearen@gmail.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1},{name:"gongdewei",email:"kylixs@qq.com",commits:1},{name:"\u674E\u9F0E",email:"oldratlee@gmail.com",commits:1}],"en/doc/tt.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3},{name:"LHearen",email:"lhearen@gmail.com",commits:2},{name:"superheizai",email:"superheizai@aliyun.com",commits:2},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Sergio Escalante",email:"sergioescala@gmail.com",commits:1},{name:"\u6C6A\u5409",email:"983433479@qq.com",commits:1}],"en/doc/version.md":[{name:"Fu",email:"dkafussss@gmail.com",commits:1}],"en/doc/watch.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:10},{name:"Hearen",email:"LHearen@126.com",commits:2},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"LHearen",email:"lhearen@gmail.com",commits:1},{name:"\u6C6A\u5409",email:"983433479@qq.com",commits:1}],"en/doc/tunnel.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:5}],"en/doc/vmtool.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3}],"en/doc/trace.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:12},{name:"0xflotus",email:"26602940+0xflotus@users.noreply.github.com",commits:1},{name:"Hearen",email:"LHearen@126.com",commits:1},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1},{name:"Jerry",email:"favoorr@gmail.com",commits:1},{name:"LHearen",email:"lhearen@gmail.com",commits:1},{name:"beiwei30",email:"ian.luo@gmail.com",commits:1}],"en/doc/vmoption.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:3},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}],"en/doc/web-console.md":[{name:"hengyunabc",email:"hengyunabc@gmail.com",commits:15},{name:"Hollow Man",email:"hollowman186@vip.qq.com",commits:1}]};let Ks=0;const Ys="webkit moz ms o".split(" ");let Et,wt;const Bb=typeof window>"u";if(Bb)Et=function(){},wt=function(){};else{Et=window.requestAnimationFrame,wt=window.cancelAnimationFrame;let e;for(let t=0;t{t(n+o)},o);return Ks=n+o,r},wt=function(t){window.clearTimeout(t)})}const zb={props:{startVal:{type:Number,required:!1,default:0},endVal:{type:Number,required:!1,default:2017},duration:{type:Number,required:!1,default:3e3},autoplay:{type:Boolean,required:!1,default:!0},decimals:{type:Number,required:!1,default:0,validator(e){return e>=0}},decimal:{type:String,required:!1,default:"."},separator:{type:String,required:!1,default:","},prefix:{type:String,required:!1,default:""},suffix:{type:String,required:!1,default:""},useEasing:{type:Boolean,required:!1,default:!0},easingFn:{type:Function,default(e,t,n,o){return n*(-Math.pow(2,-10*e/o)+1)*1024/1023+t}}},data(){return{localStartVal:this.startVal,displayValue:this.formatNumber(this.startVal),printVal:null,paused:!1,localDuration:this.duration,startTime:null,timestamp:null,remaining:null,rAF:null}},computed:{countDown(){return this.startVal>this.endVal}},watch:{startVal(){this.autoplay&&this.start()},endVal(){this.autoplay&&this.start()}},mounted(){this.autoplay&&this.start(),this.$emit("mountedCallback")},methods:{start(){this.localStartVal=this.startVal,this.startTime=null,this.localDuration=this.duration,this.paused=!1,this.rAF=Et(this.count)},pauseResume(){this.paused?(this.resume(),this.paused=!1):(this.pause(),this.paused=!0)},pause(){wt(this.rAF)},resume(){this.startTime=null,this.localDuration=+this.remaining,this.localStartVal=+this.printVal,Et(this.count)},reset(){this.startTime=null,wt(this.rAF),this.displayValue=this.formatNumber(this.startVal)},count(e){this.startTime||(this.startTime=e),this.timestamp=e;const t=e-this.startTime;this.remaining=this.localDuration-t,this.useEasing?this.countDown?this.printVal=this.localStartVal-this.easingFn(t,0,this.localStartVal-this.endVal,this.localDuration):this.printVal=this.easingFn(t,this.localStartVal,this.endVal-this.localStartVal,this.localDuration):this.countDown?this.printVal=this.localStartVal-(this.localStartVal-this.endVal)*(t/this.localDuration):this.printVal=this.localStartVal+(this.endVal-this.localStartVal)*(t/this.localDuration),this.countDown?this.printVal=this.printValthis.endVal?this.endVal:this.printVal,this.displayValue=this.formatNumber(this.printVal),t1?this.decimal+t[1]:"",r=/(\d+)(\d{3})/;if(this.separator&&!this.isNumber(this.separator))for(;r.test(n);)n=n.replace(r,"$1"+this.separator+"$2");return this.prefix+n+o+this.suffix}},destroyed(){wt(this.rAF)}};function Ub(e,t,n,o,r,a){return V(),X("span",null,Me(r.displayValue),1)}const Wb=we(zb,[["render",Ub],["__file","vue-countTo.vue"]]),Kb=()=>{const e=mt();if(!e.value.git)return;const t=e.value.filePathRelative,n=e.value.git.contributors,o=Fb[t],r=(a,i)=>a.find(c=>c.name===i.name&&c.email===i.email);o&&o.forEach(a=>{r(n,a)?r(n,a).commits+=a.commits:n.push(a)}),n==null||n.sort((a,i)=>i.commits-a.commits)},Yb=Lt({enhance({router:e,app:t}){t.component("CountTo",Wb),e.afterEach((n,o)=>{n.path!==o.path&&Kb()}),e.beforeEach((n,o,r)=>{typeof _hmt<"u"&&n.path&&n.fullPath!==o.fullPath&&_hmt.push(["_trackPageview",n.fullPath]),r()})}}),Go=[ih,uh,wh,Ip,kp,_0,v0,P0,D0,Nb,Yb];var _m=De(Sm),vm=Ka({key:"",path:"",title:"",lang:"",frontmatter:{},excerpt:"",headers:[]}),Mt=De(vm),mt=()=>Mt;import.meta.webpackHot&&(__VUE_HMR_RUNTIME__.updatePageData=e=>{_m.value[e.key]=()=>Promise.resolve(e),e.key===Mt.value.key&&(Mt.value=e)});var gm=Symbol(""),At=()=>{const e=We(gm);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},bm=Symbol(""),Jb=()=>{const e=We(bm);if(!e)throw new Error("usePageHead() is called without provider.");return e},Qb=Symbol(""),ym=Symbol(""),Em=()=>{const e=We(ym);if(!e)throw new Error("usePageLang() is called without provider.");return e},pi=Symbol(""),Fn=()=>{const e=We(pi);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},Kt=De(Xf),_i=()=>Kt;import.meta.webpackHot&&(__VUE_HMR_RUNTIME__.updateSiteData=e=>{Kt.value=e});var wm=Symbol(""),vi=()=>{const e=We(wm);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},Gb=Symbol(""),sn=Vn({resolvePageData:async e=>{const t=_m.value[e],n=await(t==null?void 0:t());return n!=null?n:vm},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,n)=>{const o=Le(t.description)?t.description:n.description,r=[...ce(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:o}]];return th(r)},resolvePageHeadTitle:(e,t)=>`${e.title?`${e.title} | `:""}${t.title}`,resolvePageLang:e=>e.lang||"en",resolveRouteLocale:(e,t)=>Xl(e,t),resolveSiteLocaleData:(e,t)=>({...e,...e.locales[t]})}),gi=je({name:"ClientOnly",setup(e,t){const n=De(!1);return et(()=>{n.value=!0}),()=>{var o,r;return n.value?(r=(o=t.slots).default)==null?void 0:r.call(o):null}}}),Zb=je({name:"Content",props:{pageKey:{type:String,required:!1,default:""}},setup(e){const t=mt(),n=te(()=>eu[e.pageKey||t.value.key]);return()=>n.value?Te(n.value):Te("div","404 Not Found")}}),Xb="Layout",ey="NotFound",ty=Go.reduce((e,t)=>({...e,...t.layouts}),{}),Js=je({name:"Vuepress",setup(){const e=mt(),t=te(()=>{let n;if(e.value.path){const o=e.value.frontmatter.layout;Le(o)?n=o:n=Xb}else n=ey;return ty[n]});return()=>Te(t.value)}}),bi=e=>So(e)?e:`${_i().value.base}${Zl(e)}`;const ny=[["v-8daa1a0e","/",{title:""},["/index.html","/README.md"]],["v-7445f070","/doc/",{title:"\u7B80\u4ECB"},["/doc/index.html","/doc/README.md"]],["v-0d09f68d","/doc/advanced-use.html",{title:"\u5176\u4ED6\u7279\u6027"},["/doc/advanced-use","/doc/advanced-use.md"]],["v-46e53834","/doc/advice-class.html",{title:"\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF"},["/doc/advice-class","/doc/advice-class.md"]],["v-37178538","/doc/agent.html",{title:"\u4EE5 Java Agent \u7684\u65B9\u5F0F\u542F\u52A8"},["/doc/agent","/doc/agent.md"]],["v-5c517900","/doc/arthas-properties.html",{title:"Arthas Properties"},["/doc/arthas-properties","/doc/arthas-properties.md"]],["v-02eb6d0d","/doc/arthas3.html",{title:""},["/doc/arthas3","/doc/arthas3.md"]],["v-4f82df66","/doc/async.html",{title:"Arthas \u540E\u53F0\u5F02\u6B65\u4EFB\u52A1"},["/doc/async","/doc/async.md"]],["v-d0358c7e","/doc/auth.html",{title:"auth"},["/doc/auth","/doc/auth.md"]],["v-3157067a","/doc/base64.html",{title:"base64"},["/doc/base64","/doc/base64.md"]],["v-cc8f4ae6","/doc/batch-support.html",{title:"\u6279\u5904\u7406\u529F\u80FD"},["/doc/batch-support","/doc/batch-support.md"]],["v-6542b733","/doc/cat.html",{title:"cat"},["/doc/cat","/doc/cat.md"]],["v-49b1709e","/doc/classloader.html",{title:"classloader"},["/doc/classloader","/doc/classloader.md"]],["v-ad1b2b42","/doc/cls.html",{title:"cls"},["/doc/cls","/doc/cls.md"]],["v-5ed4d0e1","/doc/commands.html",{title:"\u547D\u4EE4\u5217\u8868"},["/doc/commands","/doc/commands.md"]],["v-3992adde","/doc/contact-us.html",{title:"\u8054\u7CFB\u6211\u4EEC"},["/doc/contact-us","/doc/contact-us.md"]],["v-0d1e3f35","/doc/dashboard.html",{title:"dashboard"},["/doc/dashboard","/doc/dashboard.md"]],["v-02361049","/doc/docker.html",{title:"Docker"},["/doc/docker","/doc/docker.md"]],["v-2116d2e1","/doc/download.html",{title:"\u4E0B\u8F7D"},["/doc/download","/doc/download.md"]],["v-1fe4a616","/doc/dump.html",{title:"dump"},["/doc/dump","/doc/dump.md"]],["v-2c48f364","/doc/echo.html",{title:"echo"},["/doc/echo","/doc/echo.md"]],["v-d070981a","/doc/faq.html",{title:"FAQ"},["/doc/faq","/doc/faq.md"]],["v-78c35af6","/doc/getstatic.html",{title:"getstatic"},["/doc/getstatic","/doc/getstatic.md"]],["v-63f4cd5a","/doc/grep.html",{title:"grep"},["/doc/grep","/doc/grep.md"]],["v-809381ca","/doc/groovy.html",{title:"groovy"},["/doc/groovy","/doc/groovy.md"]],["v-07868089","/doc/heapdump.html",{title:"heapdump"},["/doc/heapdump","/doc/heapdump.md"]],["v-e3b34070","/doc/help.html",{title:"help"},["/doc/help","/doc/help.md"]],["v-26f43d96","/doc/history.html",{title:"history"},["/doc/history","/doc/history.md"]],["v-225de034","/doc/http-api.html",{title:"Http API"},["/doc/http-api","/doc/http-api.md"]],["v-7c670020","/doc/idea-plugin.html",{title:"IDEA Plugin"},["/doc/idea-plugin","/doc/idea-plugin.md"]],["v-0cb398f4","/doc/install-detail.html",{title:"Arthas Install"},["/doc/install-detail","/doc/install-detail.md"]],["v-211d675c","/doc/jad.html",{title:"jad"},["/doc/jad","/doc/jad.md"]],["v-41806853","/doc/jfr.html",{title:"jfr"},["/doc/jfr","/doc/jfr.md"]],["v-f1483d70","/doc/jvm.html",{title:"jvm"},["/doc/jvm","/doc/jvm.md"]],["v-4039cdec","/doc/keymap.html",{title:"keymap"},["/doc/keymap","/doc/keymap.md"]],["v-5ae8aed9","/doc/logger.html",{title:"logger"},["/doc/logger","/doc/logger.md"]],["v-6a31cc55","/doc/manual-install.html",{title:"\u624B\u52A8\u5B89\u88C5 Arthas"},["/doc/manual-install","/doc/manual-install.md"]],["v-8ebd6c68","/doc/mbean.html",{title:"mbean"},["/doc/mbean","/doc/mbean.md"]],["v-3b401ada","/doc/mc.html",{title:"mc"},["/doc/mc","/doc/mc.md"]],["v-4d9433f0","/doc/memory.html",{title:"memory"},["/doc/memory","/doc/memory.md"]],["v-6e88d7a2","/doc/monitor.html",{title:"monitor"},["/doc/monitor","/doc/monitor.md"]],["v-627e52da","/doc/ognl.html",{title:"ognl"},["/doc/ognl","/doc/ognl.md"]],["v-27b6152a","/doc/options.html",{title:"options"},["/doc/options","/doc/options.md"]],["v-2f05b636","/doc/perfcounter.html",{title:"perfcounter"},["/doc/perfcounter","/doc/perfcounter.md"]],["v-13eae420","/doc/profiler.html",{title:"profiler"},["/doc/profiler","/doc/profiler.md"]],["v-1c2d8c2c","/doc/pwd.html",{title:"pwd"},["/doc/pwd","/doc/pwd.md"]],["v-5afc3a07","/doc/quick-start.html",{title:"\u5FEB\u901F\u5165\u95E8"},["/doc/quick-start","/doc/quick-start.md"]],["v-aa7c750c","/doc/quit.html",{title:"quit"},["/doc/quit","/doc/quit.md"]],["v-0446ad7b","/doc/redefine.html",{title:"redefine"},["/doc/redefine","/doc/redefine.md"]],["v-648880ae","/doc/release-notes.html",{title:"Release Notes"},["/doc/release-notes","/doc/release-notes.md"]],["v-71f77d4c","/doc/reset.html",{title:"reset"},["/doc/reset","/doc/reset.md"]],["v-54cde250","/doc/retransform.html",{title:"retransform"},["/doc/retransform","/doc/retransform.md"]],["v-8e632816","/doc/save-log.html",{title:"\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7"},["/doc/save-log","/doc/save-log.md"]],["v-1fc55619","/doc/sc.html",{title:"sc"},["/doc/sc","/doc/sc.md"]],["v-3891b473","/doc/session.html",{title:"session"},["/doc/session","/doc/session.md"]],["v-30d5cc4f","/doc/sm.html",{title:"sm"},["/doc/sm","/doc/sm.md"]],["v-07cf9d55","/doc/spring-boot-starter.html",{title:"Arthas Spring Boot Starter"},["/doc/spring-boot-starter","/doc/spring-boot-starter.md"]],["v-b75a107e","/doc/stack.html",{title:"stack"},["/doc/stack","/doc/stack.md"]],["v-a9c412f2","/doc/start-arthas.html",{title:"\u542F\u52A8 Arthas"},["/doc/start-arthas","/doc/start-arthas.md"]],["v-bc0910b2","/doc/stop.html",{title:"stop"},["/doc/stop","/doc/stop.md"]],["v-0333612e","/doc/sysenv.html",{title:"sysenv"},["/doc/sysenv","/doc/sysenv.md"]],["v-7012b8ce","/doc/sysprop.html",{title:"sysprop"},["/doc/sysprop","/doc/sysprop.md"]],["v-0536edb5","/doc/tee.html",{title:"tee"},["/doc/tee","/doc/tee.md"]],["v-10845ac2","/doc/thread.html",{title:"thread"},["/doc/thread","/doc/thread.md"]],["v-65d67724","/doc/trace.html",{title:"trace"},["/doc/trace","/doc/trace.md"]],["v-71adf3e9","/doc/tt.html",{title:"tt"},["/doc/tt","/doc/tt.md"]],["v-d2ddc9fe","/doc/tunnel.html",{title:"Arthas Tunnel"},["/doc/tunnel","/doc/tunnel.md"]],["v-5b5d3371","/doc/version.html",{title:"version"},["/doc/version","/doc/version.md"]],["v-40db67fd","/doc/vmoption.html",{title:"vmoption"},["/doc/vmoption","/doc/vmoption.md"]],["v-10890efa","/doc/vmtool.html",{title:"vmtool"},["/doc/vmtool","/doc/vmtool.md"]],["v-24fc49da","/doc/watch.html",{title:"watch"},["/doc/watch","/doc/watch.md"]],["v-a5f6e7aa","/doc/web-console.html",{title:"Web Console"},["/doc/web-console","/doc/web-console.md"]],["v-2d0a870d","/en/",{title:"Home"},["/en/index.html","/en/README.md"]],["v-07555a84","/en/doc/",{title:"Introduction"},["/en/doc/index.html","/en/doc/README.md"]],["v-463d120e","/en/doc/advanced-use.html",{title:"Other features"},["/en/doc/advanced-use","/en/doc/advanced-use.md"]],["v-a736375c","/en/doc/advice-class.html",{title:"Fundamental Fields in Expressions"},["/en/doc/advice-class","/en/doc/advice-class.md"]],["v-f6b5c310","/en/doc/agent.html",{title:"Start as a Java Agent"},["/en/doc/agent","/en/doc/agent.md"]],["v-74fb2694","/en/doc/arthas-properties.html",{title:"Arthas Properties"},["/en/doc/arthas-properties","/en/doc/arthas-properties.md"]],["v-786f7161","/en/doc/async.html",{title:"Arthas Async Jobs"},["/en/doc/async","/en/doc/async.md"]],["v-f76c33a6","/en/doc/auth.html",{title:"auth"},["/en/doc/auth","/en/doc/auth.md"]],["v-d17b7034","/en/doc/base64.html",{title:"base64"},["/en/doc/base64","/en/doc/base64.md"]],["v-765e30be","/en/doc/batch-support.html",{title:"Batch Processing"},["/en/doc/batch-support","/en/doc/batch-support.md"]],["v-64a0cd47","/en/doc/cat.html",{title:"cat"},["/en/doc/cat","/en/doc/cat.md"]],["v-fc1b9a9c","/en/doc/classloader.html",{title:"classloader"},["/en/doc/classloader","/en/doc/classloader.md"]],["v-ae5eff1a","/en/doc/cls.html",{title:"cls"},["/en/doc/cls","/en/doc/cls.md"]],["v-12153166","/en/doc/commands.html",{title:"All Commands"},["/en/doc/commands","/en/doc/commands.md"]],["v-4be7594a","/en/doc/contact-us.html",{title:"Contact Us"},["/en/doc/contact-us","/en/doc/contact-us.md"]],["v-79107649","/en/doc/dashboard.html",{title:"dashboard"},["/en/doc/dashboard","/en/doc/dashboard.md"]],["v-682151b5","/en/doc/docker.html",{title:"Docker"},["/en/doc/docker","/en/doc/docker.md"]],["v-8d912d66","/en/doc/download.html",{title:"Download"},["/en/doc/download","/en/doc/download.md"]],["v-471b4d3e","/en/doc/dump.html",{title:"dump"},["/en/doc/dump","/en/doc/dump.md"]],["v-18ad9fd0","/en/doc/echo.html",{title:"echo"},["/en/doc/echo","/en/doc/echo.md"]],["v-d1b46bf2","/en/doc/faq.html",{title:"FAQ"},["/en/doc/faq","/en/doc/faq.md"]],["v-2f908999","/en/doc/getstatic.html",{title:"getstatic"},["/en/doc/getstatic","/en/doc/getstatic.md"]],["v-8b2b7482","/en/doc/grep.html",{title:"grep"},["/en/doc/grep","/en/doc/grep.md"]],["v-25a18087","/en/doc/groovy.html",{title:"groovy"},["/en/doc/groovy","/en/doc/groovy.md"]],["v-c0b1d216","/en/doc/heapdump.html",{title:"heapdump"},["/en/doc/heapdump","/en/doc/heapdump.md"]],["v-7a8b0c34","/en/doc/help.html",{title:"help"},["/en/doc/help","/en/doc/help.md"]],["v-4402cd49","/en/doc/history.html",{title:"history"},["/en/doc/history","/en/doc/history.md"]],["v-8b0312c0","/en/doc/http-api.html",{title:"Http API"},["/en/doc/http-api","/en/doc/http-api.md"]],["v-96b07b98","/en/doc/idea-plugin.html",{title:"IDEA Plugin"},["/en/doc/idea-plugin","/en/doc/idea-plugin.md"]],["v-319f48f2","/en/doc/install-detail.html",{title:"Install Arthas"},["/en/doc/install-detail","/en/doc/install-detail.md"]],["v-207b7d70","/en/doc/jad.html",{title:"jad"},["/en/doc/jad","/en/doc/jad.md"]],["v-40de7e67","/en/doc/jfr.html",{title:"jfr"},["/en/doc/jfr","/en/doc/jfr.md"]],["v-f28c1148","/en/doc/jvm.html",{title:"jvm"},["/en/doc/jvm","/en/doc/jvm.md"]],["v-b3b5e150","/en/doc/keymap.html",{title:"keymap"},["/en/doc/keymap","/en/doc/keymap.md"]],["v-7e581f76","/en/doc/logger.html",{title:"logger"},["/en/doc/logger","/en/doc/logger.md"]],["v-bbaa3c7e","/en/doc/manual-install.html",{title:"Manually Install Arthas"},["/en/doc/manual-install","/en/doc/manual-install.md"]],["v-58d22ae0","/en/doc/mbean.html",{title:"mbean"},["/en/doc/mbean","/en/doc/mbean.md"]],["v-2ac66c02","/en/doc/mc.html",{title:"mc"},["/en/doc/mc","/en/doc/mc.md"]],["v-3f212774","/en/doc/memory.html",{title:"memory"},["/en/doc/memory","/en/doc/memory.md"]],["v-20388043","/en/doc/monitor.html",{title:"monitor"},["/en/doc/monitor","/en/doc/monitor.md"]],["v-89b4fa02","/en/doc/ognl.html",{title:"ognl"},["/en/doc/ognl","/en/doc/ognl.md"]],["v-43a1e17f","/en/doc/options.html",{title:"options"},["/en/doc/options","/en/doc/options.md"]],["v-6746784a","/en/doc/perfcounter.html",{title:"perfcounter"},["/en/doc/perfcounter","/en/doc/perfcounter.md"]],["v-a7e90ae8","/en/doc/profiler.html",{title:"profiler"},["/en/doc/profiler","/en/doc/profiler.md"]],["v-1b8ba240","/en/doc/pwd.html",{title:"pwd"},["/en/doc/pwd","/en/doc/pwd.md"]],["v-d98607ca","/en/doc/quick-start.html",{title:"Quick Start"},["/en/doc/quick-start","/en/doc/quick-start.md"]],["v-d1b31c34","/en/doc/quit.html",{title:"quit"},["/en/doc/quit","/en/doc/quit.md"]],["v-c7317832","/en/doc/redefine.html",{title:"redefine"},["/en/doc/redefine","/en/doc/redefine.md"]],["v-e0bde47c","/en/doc/release-notes.html",{title:"Release Notes"},["/en/doc/release-notes","/en/doc/release-notes.md"]],["v-6735226e","/en/doc/reset.html",{title:"reset"},["/en/doc/reset","/en/doc/reset.md"]],["v-e5e2b738","/en/doc/retransform.html",{title:"retransform"},["/en/doc/retransform","/en/doc/retransform.md"]],["v-50ef0261","/en/doc/save-log.html",{title:"Log command outputs"},["/en/doc/save-log","/en/doc/save-log.md"]],["v-28022d85","/en/doc/sc.html",{title:"sc"},["/en/doc/sc","/en/doc/sc.md"]],["v-dfe2bef2","/en/doc/session.html",{title:"session"},["/en/doc/session","/en/doc/session.md"]],["v-3912a3bb","/en/doc/sm.html",{title:"sm"},["/en/doc/sm","/en/doc/sm.md"]],["v-71870b69","/en/doc/spring-boot-starter.html",{title:"Arthas Spring Boot Starter"},["/en/doc/spring-boot-starter","/en/doc/spring-boot-starter.md"]],["v-4483d8d5","/en/doc/stack.html",{title:"stack"},["/en/doc/stack","/en/doc/stack.md"]],["v-7af576f3","/en/doc/start-arthas.html",{title:"Start Arthas"},["/en/doc/start-arthas","/en/doc/start-arthas.md"]],["v-e33fb7da","/en/doc/stop.html",{title:"stop"},["/en/doc/stop","/en/doc/stop.md"]],["v-645190d5","/en/doc/sysenv.html",{title:"sysenv"},["/en/doc/sysenv","/en/doc/sysenv.md"]],["v-1f738fad","/en/doc/sysprop.html",{title:"sysprop"},["/en/doc/sysprop","/en/doc/sysprop.md"]],["v-049503c9","/en/doc/tee.html",{title:"tee"},["/en/doc/tee","/en/doc/tee.md"]],["v-5da9140b","/en/doc/thread.html",{title:"thread"},["/en/doc/thread","/en/doc/thread.md"]],["v-06075838","/en/doc/trace.html",{title:"trace"},["/en/doc/trace","/en/doc/trace.md"]],["v-79eacb55","/en/doc/tt.html",{title:"tt"},["/en/doc/tt","/en/doc/tt.md"]],["v-07074726","/en/doc/tunnel.html",{title:"Arthas Tunnel"},["/en/doc/tunnel","/en/doc/tunnel.md"]],["v-9a4bc0f6","/en/doc/version.html",{title:"version"},["/en/doc/version","/en/doc/version.md"]],["v-4e08032e","/en/doc/vmoption.html",{title:"vmoption"},["/en/doc/vmoption","/en/doc/vmoption.md"]],["v-76745066","/en/doc/vmtool.html",{title:"vmtool"},["/en/doc/vmtool","/en/doc/vmtool.md"]],["v-75a5aa24","/en/doc/watch.html",{title:"watch"},["/en/doc/watch","/en/doc/watch.md"]],["v-35756382","/en/doc/web-console.html",{title:"Web Console"},["/en/doc/web-console","/en/doc/web-console.md"]],["v-3706649a","/404.html",{title:""},["/404"]]];var oy=()=>ny.reduce((e,[t,n,o,r])=>(e.push({name:t,path:n,component:Js,meta:o},...r.map(a=>({path:a,redirect:n}))),e),[{name:"404",path:"/:catchAll(.*)",component:Js}]),ry=Vh,ay=()=>{const e=Op({history:ry(Gl(Kt.value.base)),routes:oy(),scrollBehavior:(t,n,o)=>o||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,n)=>{var o;(t.path!==n.path||n===kt)&&([Mt.value]=await Promise.all([sn.resolvePageData(t.name),(o=eu[t.name])==null?void 0:o.__asyncLoader()]))}),e},iy=e=>{e.component("ClientOnly",gi),e.component("Content",Zb)},cy=(e,t)=>{const n=te(()=>sn.resolveRouteLocale(Kt.value.locales,t.currentRoute.value.path)),o=te(()=>sn.resolveSiteLocaleData(Kt.value,n.value)),r=te(()=>sn.resolvePageFrontmatter(Mt.value)),a=te(()=>sn.resolvePageHeadTitle(Mt.value,o.value)),i=te(()=>sn.resolvePageHead(a.value,r.value,o.value)),c=te(()=>sn.resolvePageLang(Mt.value));return e.provide(pi,n),e.provide(wm,o),e.provide(gm,r),e.provide(Qb,a),e.provide(bm,i),e.provide(ym,c),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>r.value},$head:{get:()=>i.value},$headTitle:{get:()=>a.value},$lang:{get:()=>c.value},$page:{get:()=>Mt.value},$routeLocale:{get:()=>n.value},$site:{get:()=>Kt.value},$siteLocale:{get:()=>o.value},$withBase:{get:()=>bi}}),{pageData:Mt,pageFrontmatter:r,pageHead:i,pageHeadTitle:a,pageLang:c,routeLocale:n,siteData:Kt,siteLocaleData:o}},sy=()=>{const e=Dt(),t=Jb(),n=Em(),o=De([]),r=()=>{t.value.forEach(i=>{const c=ly(i);c&&o.value.push(c)})},a=()=>{document.documentElement.lang=n.value,o.value.forEach(i=>{i.parentNode===document.head&&document.head.removeChild(i)}),o.value.splice(0,o.value.length),t.value.forEach(i=>{const c=uy(i);c!==null&&(document.head.appendChild(c),o.value.push(c))})};hn(Gb,a),et(()=>{r(),a(),ot(()=>e.path,()=>a())})},ly=([e,t,n=""])=>{const o=Object.entries(t).map(([c,s])=>Le(s)?`[${c}="${s}"]`:s===!0?`[${c}]`:"").join(""),r=`head > ${e}${o}`;return Array.from(document.querySelectorAll(r)).find(c=>c.innerText===n)||null},uy=([e,t,n])=>{if(!Le(e))return null;const o=document.createElement(e);return oi(t)&&Object.entries(t).forEach(([r,a])=>{Le(a)?o.setAttribute(r,a):a===!0&&o.setAttribute(r,"")}),Le(n)&&o.appendChild(document.createTextNode(n)),o},my=Gf,dy=async()=>{var n;const e=my({name:"VuepressApp",setup(){var o;sy();for(const r of Go)(o=r.setup)==null||o.call(r);return()=>[Te(mu),...Go.flatMap(({rootComponents:r=[]})=>r.map(a=>Te(a)))]}}),t=ay();iy(e),cy(e,t);for(const o of Go)await((n=o.enhance)==null?void 0:n.call(o,{app:e,router:t,siteData:Kt}));return e.use(t),{app:e,router:t}};dy().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{we as _,ue as a,ie as b,X as c,dy as createVueApp,df as d,Xt as e,V as o,It as r,Me as t,Ke as w}; diff --git a/3.x/assets/arthas-output-recording.5e4ef7bc.js b/3.x/assets/arthas-output-recording.5e4ef7bc.js new file mode 100644 index 00000000000..3985c9e8fc4 --- /dev/null +++ b/3.x/assets/arthas-output-recording.5e4ef7bc.js @@ -0,0 +1 @@ +const t="/3.x/images/arthas-output-recording.png";export{t as _}; diff --git a/3.x/assets/arthas-output-svg.30f64f53.js b/3.x/assets/arthas-output-svg.30f64f53.js new file mode 100644 index 00000000000..9b7c585e76c --- /dev/null +++ b/3.x/assets/arthas-output-svg.30f64f53.js @@ -0,0 +1 @@ +const s="/3.x/images/arthas-output.jpg",t="/3.x/images/arthas-output-svg.jpg";export{s as _,t as a}; diff --git a/3.x/assets/arthas-properties.html.1fb20763.js b/3.x/assets/arthas-properties.html.1fb20763.js new file mode 100644 index 00000000000..179ede1e130 --- /dev/null +++ b/3.x/assets/arthas-properties.html.1fb20763.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-74fb2694","path":"/en/doc/arthas-properties.html","title":"Arthas Properties","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Supported configuration items","slug":"supported-configuration-items","link":"#supported-configuration-items","children":[{"level":3,"title":"disable specify commands","slug":"disable-specify-commands","link":"#disable-specify-commands","children":[]}]},{"level":2,"title":"Configured order","slug":"configured-order","link":"#configured-order","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/arthas-properties.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/arthas-properties.html.3164354d.js b/3.x/assets/arthas-properties.html.3164354d.js new file mode 100644 index 00000000000..b6d8831cc7f --- /dev/null +++ b/3.x/assets/arthas-properties.html.3164354d.js @@ -0,0 +1,13 @@ +import{_ as e,o as t,c as a,d as s}from"./app.4d248835.js";const r={},i=s(`

Arthas Properties

arthas.properties\u6587\u4EF6\u5728 arthas \u7684\u76EE\u5F55\u4E0B\u3002

  • \u5982\u679C\u662F\u81EA\u52A8\u4E0B\u8F7D\u7684 arthas\uFF0C\u5219\u76EE\u5F55\u5728~/.arthas/lib/3.x.x/arthas/\u4E0B\u9762
  • \u5982\u679C\u662F\u4E0B\u8F7D\u7684\u5B8C\u6574\u5305\uFF0C\u5728 arthas \u89E3\u538B\u76EE\u5F55\u4E0B

\u652F\u6301\u7684\u914D\u7F6E\u9879

\u6CE8\u610F

\u6CE8\u610F\u914D\u7F6E\u5FC5\u987B\u662F\u9A7C\u5CF0\u7684\uFF0C\u548C spring boot \u7684-\u98CE\u683C\u4E0D\u4E00\u6837\u3002spring boot \u5E94\u7528\u624D\u540C\u65F6\u652F\u6301\u9A7C\u5CF0 \u548C -\u98CE\u683C\u7684\u914D\u7F6E\u3002

#arthas.config.overrideAll=true
+arthas.telnetPort=3658
+arthas.httpPort=8563
+arthas.ip=127.0.0.1
+
+# seconds
+arthas.sessionTimeout=1800
+
+#arthas.appName=demoapp
+#arthas.tunnelServer=ws://127.0.0.1:7777/ws
+#arthas.agentId=mmmmmmyiddddd
+
  • \u5982\u679C\u914D\u7F6E arthas.telnetPort\u4E3A -1 \uFF0C\u5219\u4E0D listen telnet \u7AEF\u53E3\u3002arthas.httpPort\u7C7B\u4F3C\u3002
  • \u5982\u679C\u914D\u7F6E arthas.telnetPort\u4E3A 0 \uFF0C\u5219\u968F\u673A telnet \u7AEF\u53E3\uFF0C\u5728~/logs/arthas/arthas.log\u91CC\u53EF\u4EE5\u627E\u5230\u5177\u4F53\u7AEF\u53E3\u65E5\u5FD7\u3002arthas.httpPort\u7C7B\u4F3C\u3002

\u63D0\u793A

\u5982\u679C\u662F\u9632\u6B62\u4E00\u4E2A\u673A\u5668\u4E0A\u542F\u52A8\u591A\u4E2A arthas \u7AEF\u53E3\u51B2\u7A81\u3002\u53EF\u4EE5\u914D\u7F6E\u4E3A\u968F\u673A\u7AEF\u53E3\uFF0C\u6216\u8005\u914D\u7F6E\u4E3A -1\uFF0C\u5E76\u4E14\u901A\u8FC7 tunnel server \u6765\u4F7F\u7528 arthas\u3002

\u7981\u6B62\u6307\u5B9A\u547D\u4EE4

\u63D0\u793A

since 3.5.2

\u6BD4\u5982\u914D\u7F6E\uFF1A

arthas.disabledCommands=stop,dump
+

\u4E5F\u53EF\u4EE5\u5728\u547D\u4EE4\u884C\u914D\u7F6E\uFF1A --disabled-commands stop,dump \u3002

\u63D0\u793A

\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0Carthas-spring-boot-starter \u4F1A\u7981\u6389stop\u547D\u4EE4\u3002

\u914D\u7F6E\u7684\u4F18\u5148\u7EA7

\u914D\u7F6E\u7684\u4F18\u5148\u7EA7\u662F\uFF1A\u547D\u4EE4\u884C\u53C2\u6570 > System Env > System Properties > arthas.properties \u3002

\u6BD4\u5982\uFF1A

  • ./as3.sh --telnet-port 9999 \u4F20\u5165\u7684\u914D\u7F6E\u4F1A\u8986\u76D6\u6389arthas.properties\u91CC\u7684\u9ED8\u8BA4\u503Carthas.telnetPort=3658\u3002
  • \u5982\u679C\u5E94\u7528\u81EA\u8EAB\u8BBE\u7F6E\u4E86 system properties arthas.telnetPort=8888\uFF0C\u5219\u4F1A\u8986\u76D6\u6389arthas.properties\u91CC\u7684\u9ED8\u8BA4\u503Carthas.telnetPort=3658\u3002

\u5982\u679C\u60F3\u8981 arthas.properties\u7684\u4F18\u5148\u7EA7\u6700\u9AD8\uFF0C\u5219\u53EF\u4EE5\u914D\u7F6E arthas.config.overrideAll=true \u3002

`,19),d=[i];function o(n,c){return t(),a("div",null,d)}const p=e(r,[["render",o],["__file","arthas-properties.html.vue"]]);export{p as default}; diff --git a/3.x/assets/arthas-properties.html.c6a378d8.js b/3.x/assets/arthas-properties.html.c6a378d8.js new file mode 100644 index 00000000000..b8296ebb28a --- /dev/null +++ b/3.x/assets/arthas-properties.html.c6a378d8.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-5c517900","path":"/doc/arthas-properties.html","title":"Arthas Properties","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u652F\u6301\u7684\u914D\u7F6E\u9879","slug":"\u652F\u6301\u7684\u914D\u7F6E\u9879","link":"#\u652F\u6301\u7684\u914D\u7F6E\u9879","children":[{"level":3,"title":"\u7981\u6B62\u6307\u5B9A\u547D\u4EE4","slug":"\u7981\u6B62\u6307\u5B9A\u547D\u4EE4","link":"#\u7981\u6B62\u6307\u5B9A\u547D\u4EE4","children":[]}]},{"level":2,"title":"\u914D\u7F6E\u7684\u4F18\u5148\u7EA7","slug":"\u914D\u7F6E\u7684\u4F18\u5148\u7EA7","link":"#\u914D\u7F6E\u7684\u4F18\u5148\u7EA7","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/arthas-properties.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/arthas-properties.html.f3f99ef8.js b/3.x/assets/arthas-properties.html.f3f99ef8.js new file mode 100644 index 00000000000..f8ac1bbf06e --- /dev/null +++ b/3.x/assets/arthas-properties.html.f3f99ef8.js @@ -0,0 +1,13 @@ +import{_ as e,o as t,c as a,d as i}from"./app.4d248835.js";const o={},r=i(`

Arthas Properties

The arthas.properties file is in the arthas directory.

  • If it is automatically downloaded arthas, the directory is under ~/.arthas/lib/3.x.x/arthas/
  • If it is a downloaded complete package, under the decompression directory of arthas

Supported configuration items

WARNING

Note that the configuration must be camel case, which is different from the - style of spring boot. Only the spring boot application supports both camel case and - style configuration.

#arthas.config.overrideAll=true
+arthas.telnetPort=3658
+arthas.httpPort=8563
+arthas.ip=127.0.0.1
+
+# seconds
+arthas.sessionTimeout=1800
+
+#arthas.appName=demoapp
+#arthas.tunnelServer=ws://127.0.0.1:7777/ws
+#arthas.agentId=mmmmmmyiddddd
+
  • If the configuration of arthas.telnetPort is -1, the telnet port will not be listened. arthas.httpPort is similar.
  • If you configure arthas.telnetPort to 0, then random listen telnet port, you can find the random port log in ~/logs/arthas/arthas.log. arthas.httpPort is similar.

TIP

If you want to prevent multiple arthas port conflicts on a machine. It can be configured as a random port, or configured as -1, and use arthas through the tunnel server.

disable specify commands

TIP

since 3.5.2

Such as configuration:

arthas.disabledCommands=stop,dump
+

It can also be configured on the command line: --disabled-commands stop,dump.

TIP

By default, arthas-spring-boot-starter will disable the stop command.

Configured order

The order of configuration is: command line parameters > System Env > System Properties > arthas.properties.

such as:

  • ./as3.sh --telnet-port 9999 command line configuration will overwrite the default value arthas.telnetPort=3658 in arthas.properties.
  • If the application itself sets system properties arthas.telnetPort=8888, it will override the default value arthas.telnetPort=3658 in arthas.properties.

If you want arthas.properties to have the highest order, you can configure arthas.config.overrideAll=true.

`,19),s=[r];function n(d,c){return t(),a("div",null,s)}const h=e(o,[["render",n],["__file","arthas-properties.html.vue"]]);export{h as default}; diff --git a/3.x/assets/arthas-web-ui.89f4fc6d.js b/3.x/assets/arthas-web-ui.89f4fc6d.js new file mode 100644 index 00000000000..d968884f94b --- /dev/null +++ b/3.x/assets/arthas-web-ui.89f4fc6d.js @@ -0,0 +1 @@ +const s="/3.x/images/arthas-web-ui.png";export{s as _}; diff --git a/3.x/assets/arthas.b23d3e5a.js b/3.x/assets/arthas.b23d3e5a.js new file mode 100644 index 00000000000..47c8de21b98 --- /dev/null +++ b/3.x/assets/arthas.b23d3e5a.js @@ -0,0 +1 @@ +const s="/3.x/images/arthas.png";export{s as _}; diff --git a/3.x/assets/arthas3.html.62e301e7.js b/3.x/assets/arthas3.html.62e301e7.js new file mode 100644 index 00000000000..de9ec28ade4 --- /dev/null +++ b/3.x/assets/arthas3.html.62e301e7.js @@ -0,0 +1,49 @@ +import{_ as r,o as i,c as t,a as e,b as d,d as a,e as s,r as l}from"./app.4d248835.js";const o={},c=a(`

Arthas3.0 \u7684\u65B0\u7279\u6027

\u5728\u7EBF\u8BCA\u65AD\u529F\u80FD

Arthas3.0 \u4E2D\u6700\u91CD\u8981\u7684\u7279\u6027\uFF0C\u4E0D\u9700\u8981\u767B\u9646\u673A\u5668\u5C31\u53EF\u4EE5\u5BF9\u5E94\u7528\u8FDB\u884C\u8BCA\u65AD\uFF0C\u4F53\u9A8C\u548C\u672C\u5730\u8BCA\u65AD\u5B8C\u5168\u4E00\u81F4

\u4F7F\u7528\u6B65\u9AA4

TODO

\u52A8\u56FE\u6F14\u793A

TODO

\u7BA1\u9053\u652F\u6301

Arthas 3.0 \u5F00\u59CB\u652F\u6301\u7BA1\u9053, \u7387\u5148\u63D0\u4F9B\u4E86grep,wc,plaintext\u7684\u652F\u6301\u3002

\u53BB groovy \u4F9D\u8D56

groovy \u8868\u8FBE\u5F0F\u5728 arthas2.0 \u4E2D\u5927\u91CF\u4F7F\u7528\uFF0C\u4F8B\u5982 watch \u8868\u8FBE\u5F0F

watch com.alibaba.sample.petstore.web.store.module.screen.ItemList add "params + ' ' + returnObj" params.size()==2
+

\u5176\u4E2D"params + ' ' + returnObj"\u4EE5\u53CAparams.size()==2\u80CC\u540E\u5176\u5B9E\u90FD\u4F7F\u7528\u4E86 groovy \u6765\u8FDB\u884C\u8868\u8FBE\u5F0F\u6C42\u503C\uFF0C\u5982\u679C\u53CD\u590D\u5927\u91CF\u7684\u8FD0\u884C\u8FD9\u4E9B\u8868\u8FBE\u5F0F\uFF0Cgroovy \u4F1A\u521B\u5EFA\u5927\u91CF\u7684 classloader\uFF0C\u6253\u6EE1 perm \u533A\u4ECE\u800C\u89E6\u53D1 FGC\u3002

\u4E3A\u4E86\u907F\u514D\u8FD9\u4E2A\u95EE\u9898\uFF0CArthas 3.0 \u4E2D\u4F7F\u7528\u4E86 ognl \u8FD9\u4E2A\u66F4\u52A0\u8F7B\u91CF\u7684\u8868\u8FBE\u5F0F\u6C42\u503C\u5E93\u6765\u4EE3\u66FF groovy\uFF0C\u5F7B\u5E95\u89E3\u51B3\u4E86 groovy \u5F15\u8D77\u7684 FGC \u98CE\u9669\u3002\u4F46\u7531\u4E8E\u8FD9\u4E2A\u66FF\u6362\uFF0C\u5BFC\u81F4\u539F\u6765\u4F7F\u7528 groovy \u811A\u672C\u7F16\u5199\u7684\u81EA\u5B9A\u4E49\u811A\u672C\u5931\u6548\u3002\u8FD9\u4E2A\u95EE\u9898\u7559\u5F85\u540E\u7EED\u89E3\u51B3\u3002

`,14),v=s("\u5728 3.0 \u4E2D\uFF0Cwatch \u547D\u4EE4\u7684\u8868\u8FBE\u5F0F\u90E8\u5206\u7684\u4E66\u5199\u6709\u4E86\u4E00\u4E9B\u6539\u53D8\uFF0C\u8BE6\u89C1"),u={href:"https://arthas.aliyun.com/3.x/doc/watch",target:"_blank",rel:"noopener noreferrer"},m=s("\u8FD9\u91CC"),h=a(`

\u63D0\u5347 rt \u7EDF\u8BA1\u7CBE\u5EA6

Arthas 2.0 \u4E2D\uFF0C\u7EDF\u8BA1 rt \u90FD\u662F\u4EE5ms\u4E3A\u5355\u4F4D\uFF0C\u5BF9\u4E8E\u67D0\u4E9B\u6BD4\u8F83\u5C0F\u7684\u65B9\u6CD5\u8C03\u7528\uFF0C\u8017\u65F6\u5728\u6BEB\u79D2\u4EE5\u4E0B\u7684\u90FD\u4F1A\u88AB\u8BA4\u4E3A\u662F 0ms\uFF0C\u9020\u6210 trace \u603B\u65F6\u95F4\u548C\u5404\u65B9\u6CD5\u7684\u65F6\u95F4\u76F8\u52A0\u4E0D\u4E00\u81F4\u7B49\u95EE\u9898\uFF08\u867D\u7136\u8FD9\u91CC\u9762\u786E\u5B9E\u4F1A\u6709\u8BEF\u5DEE\uFF0C\u4E3B\u8981 Arthas \u81EA\u8EAB\u7684\u5F00\u9500\uFF09\u3002Arthas 3.0 \u4E2D\u6240\u6709 rt \u7684\u5355\u4F4D\u7EDF\u4E00\u6539\u4E3A\u4F7F\u7528ns\u6765\u7EDF\u8BA1\uFF0C\u7CBE\u51C6\u6355\u83B7\u4F60\u7684\u65B9\u6CD5\u8017\u65F6\uFF0C\u8BA9 0ms \u8FD9\u6837\u65E0\u610F\u4E49\u7684\u7EDF\u8BA1\u6570\u636E\u4E0D\u518D\u51FA\u73B0\uFF01

$ tt -l
+ INDEX     TIMESTAMP               COST(ms)    IS-RET    IS-EXP   OBJECT            CLASS                                METHOD
+------------------------------------------------------------------------------------------------------------------------------------------------------------
+ 1000      2017-02-24 10:56:46     808.743525  true      false    0x3bd5e918        TestTraceServlet                     doGet
+ 1001      2017-02-24 10:56:55     805.799155  true      false    0x3bd5e918        TestTraceServlet                     doGet
+ 1002      2017-02-24 10:57:04     808.026935  true      false    0x3bd5e918        TestTraceServlet                     doGet
+ 1003      2017-02-24 10:57:22     805.036963  true      false    0x3bd5e918        TestTraceServlet                     doGet
+ 1004      2017-02-24 10:57:24     803.581886  true      false    0x3bd5e918        TestTraceServlet                     doGet
+ 1005      2017-02-24 10:57:39     814.657657  true      false    0x3bd5e918        TestTraceServlet                     doGet
+

watch/stack/trace \u547D\u4EE4\u652F\u6301\u6309\u8017\u65F6\u8FC7\u6EE4

\u6211\u4EEC\u5728 trace \u7684\u65F6\u5019\uFF0C\u7ECF\u5E38\u4F1A\u51FA\u73B0\u67D0\u4E2A\u65B9\u6CD5\u95F4\u9699\u6027\u7684 rt \u98D9\u9AD8\uFF0C\u4F46\u662F\u6211\u4EEC\u53EA\u60F3\u77E5\u9053 rt \u9AD8\u7684\u65F6\u5019\uFF0C\u662F\u54EA\u91CC\u6162\u4E86\uFF0C\u5BF9\u4E8E\u6B63\u5E38 rt \u7684\u65B9\u6CD5\u6211\u4EEC\u5E76\u4E0D\u5173\u5FC3\uFF0CArthas 3.0 \u652F\u6301\u4E86\u6309#cost(\u65B9\u6CD5\u6267\u884C\u8017\u65F6,\u5355\u4F4D\u4E3Ams)\u8FDB\u884C\u8FC7\u6EE4\uFF0C\u53EA\u8F93\u51FA\u7B26\u5408\u6761\u4EF6\u7684 trace \u8DEF\u5F84\uFF0C\u76EE\u524D\uFF0C\u8FD9\u4E09\u4E2A\u547D\u4EE4\u7684\u76F8\u5173\u6587\u6863\u5DF2\u7ECF\u505A\u4E86\u66F4\u65B0\uFF0C\u589E\u52A0\u4E86\u8BE5\u7528\u6CD5\u7684\u793A\u4F8B\u3002

sysprop \u547D\u4EE4\u64CD\u4F5C SystemProperty

sysprop \u547D\u4EE4\u652F\u6301\u67E5\u770B\u6240\u6709\u7684\u7CFB\u7EDF\u5C5E\u6027\uFF0C\u4EE5\u53CA\u9488\u5BF9\u7279\u5B9A\u5C5E\u6027\u8FDB\u884C\u67E5\u770B\u548C\u4FEE\u6539\u3002

$ sysprop
+...
+ os.arch                                              x86_64
+ java.ext.dirs                                        /Users/wangtao/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.
+                                                      8.0_51.jdk/Contents/Home/jre/lib/ext:/Library/Java/Extensions:/Network/Library
+                                                      /Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
+ user.dir                                             /Users/wangtao/work/ali-tomcat-home/ant-develop/output/build
+ catalina.vendor                                      alibaba
+ line.separator
+
+ java.vm.name                                         Java HotSpot(TM) 64-Bit Server VM
+ file.encoding                                        UTF-8
+ org.apache.tomcat.util.http.ServerCookie.ALLOW_EQUA  true
+ LS_IN_VALUE
+ com.taobao.tomcat.info                               Apache Tomcat/7.0.70.1548
+ java.specification.version                           1.8
+$ sysprop java.version
+java.version=1.8.0_51
+$ sysprop production.mode true
+Successfully changed the system property.
+production.mode=true
+

thread \u547D\u4EE4\u652F\u6301\u6307\u5B9A\u91C7\u6837\u65F6\u95F4

thread \u547D\u4EE4\u8BA1\u7B97\u7EBF\u7A0B cpu \u5360\u7528\u7684\u903B\u8F91\uFF0C\u9ED8\u8BA4\u662F\u91C7\u6837 100ms \u5185\u5404\u4E2A\u7EBF\u7A0B\u7684 cpu \u4F7F\u7528\u60C5\u51B5\u5E76\u8BA1\u7B97 cpu \u6D88\u8017\u5360\u6BD4\u3002\u6709\u65F6\u5019 100ms \u7684\u65F6\u95F4\u95F4\u9694\u592A\u77ED\uFF0C\u770B\u4E0D\u51FA\u95EE\u9898\u6240\u5728\uFF0CArthas3.0 \u4E2D thread \u547D\u4EE4\u652F\u6301\u8BBE\u7F6E\u91C7\u6837\u95F4\u9694(\u4EE5ms\u4E3A\u5355\u4F4D)\uFF0C\u53EF\u4EE5\u89C2\u5BDF\u4EFB\u610F\u65F6\u95F4\u6BB5\u5185\u7684 cpu \u6D88\u8017\u5360\u6BD4\u60C5\u51B5\u3002

$ thread -i 1000
+Threads Total: 74, NEW: 0, RUNNABLE: 17, BLOCKED: 0, WAITING: 15, TIMED_WAITING: 42, TERMINATED: 0
+ID                 NAME                                                     GROUP                                  PRIORITY           STATE              %CPU               TIME               INTERRUPTED        DAEMON
+78                 com.taobao.config.client.timer                           main                                   5                  TIMED_WAITING      22                 0:0                false              true
+92                 Abandoned connection cleanup thread                      main                                   5                  TIMED_WAITING      15                 0:2                false              true
+361                as-command-execute-daemon                                system                                 10                 RUNNABLE           14                 0:0                false              true
+67                 HSF-Remoting-Timer-10-thread-1                           main                                   10                 TIMED_WAITING      12                 0:2                false              true
+113                JamScheduleThread                                        system                                 9                  TIMED_WAITING      2                  0:0                false              true
+14                 Thread-3                                                 main                                   5                  RUNNABLE           2                  0:0                false              false
+81                 com.taobao.remoting.TimerThread                          main                                   5                  TIMED_WAITING      2                  0:0                false              true
+104                http-bio-7001-AsyncTimeout                               main                                   5                  TIMED_WAITING      2                  0:0                false              true
+123                nioEventLoopGroup-2-1                                    system                                 10                 RUNNABLE           2                  0:0                false              false
+127                nioEventLoopGroup-3-2                                    system                                 10                 RUNNABLE           2                  0:0                false              false
+345                nioEventLoopGroup-3-3                                    system                                 10                 RUNNABLE           2                  0:0                false              false
+358                nioEventLoopGroup-3-4                                    system                                 10                 RUNNABLE           2                  0:0                false              false
+27                 qos-boss-1-1                                             main                                   5                  RUNNABLE           2                  0:0                false              true
+22                 EagleEye-AsyncAppender-Thread-BizLog                     main                                   5                  TIMED_WAITING      1                  0:0                false              true
+

trace \u547D\u4EE4\u81EA\u52A8\u9AD8\u4EAE\u663E\u793A\u6700\u8017\u65F6\u65B9\u6CD5\u8C03\u7528

trace \u547D\u4EE4\u73B0\u5728\u4F1A\u81EA\u52A8\u663E\u793A

![Untitled2](TODO /Untitled2.gif)

`,14);function p(b,T){const n=l("ExternalLinkIcon");return i(),t("div",null,[c,e("p",null,[v,e("a",u,[m,d(n)])]),h])}const E=r(o,[["render",p],["__file","arthas3.html.vue"]]);export{E as default}; diff --git a/3.x/assets/arthas3.html.f5096367.js b/3.x/assets/arthas3.html.f5096367.js new file mode 100644 index 00000000000..12106192f3b --- /dev/null +++ b/3.x/assets/arthas3.html.f5096367.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-02eb6d0d","path":"/doc/arthas3.html","title":"","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"Arthas3.0 \u7684\u65B0\u7279\u6027","slug":"arthas3-0-\u7684\u65B0\u7279\u6027","link":"#arthas3-0-\u7684\u65B0\u7279\u6027","children":[]},{"level":3,"title":"\u53BB groovy \u4F9D\u8D56","slug":"\u53BB-groovy-\u4F9D\u8D56","link":"#\u53BB-groovy-\u4F9D\u8D56","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/arthas3.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/async.html.0718d03c.js b/3.x/assets/async.html.0718d03c.js new file mode 100644 index 00000000000..d6994e35155 --- /dev/null +++ b/3.x/assets/async.html.0718d03c.js @@ -0,0 +1,14 @@ +import{_ as o,o as s,c,a as e,b as a,e as t,d as i,r as d}from"./app.4d248835.js";const r={},l=e("h1",{id:"arthas-async-jobs",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#arthas-async-jobs","aria-hidden":"true"},"#"),t(" Arthas Async Jobs")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=en&id=case-async-jobs",target:"_blank",rel:"noopener noreferrer"},h=e("code",null,"Async Jobs",-1),p=t(" online tutorial"),b=t("Asynchronous jobs in arthas. The idea is borrowed from "),m={href:"http://man7.org/linux/man-pages/man1/jobs.1p.html",target:"_blank",rel:"noopener noreferrer"},g=t("linux jobs"),f=t("."),k=i(`

1. Use & to run the command in the background

For example, execute the trace command in the background:

trace Test t &
+

By doing this, the current command is put to the background to run, you can continue to execute other commands in the console.

2. List background jobs

If you want to list all background jobs, you can execute the jobs command and the results are as follows:

$ jobs
+[10]*
+       Stopped           watch com.taobao.container.Test test "params[0].{? #this.name == null }" -x 2
+       execution count : 19
+       start time      : Fri Sep 22 09:59:55 CST 2017
+       timeout date    : Sat Sep 23 09:59:55 CST 2017
+       session         : 3648e874-5e69-473f-9eed-7f89660b079b (current)
+

You can see that there is currently a background job executing:

  • job id is 10, * indicates that this job is created by the current session.
  • status is Stopped
  • execution count is the number of executions, which have been executed 19 times since the start.
  • timeout date: timeout timestamp, when the time exceeds this timestamp, the job will be automatically timeout and exit.

3. Suspend and cancel job

When the job is executing in the foreground, for example, directly executing the command trace Test t, or executing the background job command trace Test t &, then putting the job back to the foreground via fg command, the console cannot continue to execute other command, but can receive and process the following keyboard events:

  • \u2018ctrl + z\u2019: Suspends the job, the job status will change to Stopped, and the job can be restarted by bg <job-id> or fg <job-id>
  • \u2018ctrl + c\u2019: Stops the job
  • \u2018ctrl + d\u2019: According to linux semantics this should lead to exit the terminal, right now Arthas has not implemented this yet, therefore simply ignore this keystroke.

4. fg/bg, switch the job from the foreground to the background, and vise verse

  • When a job is executed in the background or in suspended status (use ctrl + z to suspend job), fg <job-id> can transfer the job to the foreground to continue to run.
  • When a job is in suspended status (use ctrl + z to suspend job), bg <job-id> can put the job to the background to continue to run.
  • A job created by other session can only be put to the foreground to run by using fg in the current session.

5. Redirect the output

The job output can be redirect to the specified file by > or >>, and can be used together with &. By doing this, you can achieve running commands asynchronously, for example:

$ trace Test t >> test.out &
+

At this time, the trace command will be executed in the background, and the result will be output to the test.out file under the working directory of the application. You can continue to execute other commands. And you can view the command execution result in the file. You can execute the pwd command to view the working directory of the current application.

$ cat test.out
+

If no redirect file is specified, the result will be output to the ~/logs/arthas-cache/ directory, for example:

$ trace Test t >> &
+job id : 2
+cache location : /Users/admin/logs/arthas-cache/28198/2
+

At this time, the command will be executed asynchronously in the background, and the result will be asynchronously saved in the file (~/logs/arthas-cache/\${PID}/\${JobId});

  • At this time, the execution of the task is not affected by the session disconnection; the default timeout period of the task is 1 day, and the default timeout period can be modified through the global options command;
  • The result of this command will be output asynchronously to the file; at this time, regardless of whether save-result is true or not, the result will not be written asynchronously to ~/logs/arthas-cache/result.log.

6. Stop job

If you want to stop background job, just kill <job-id>.

7. Others

  • Support up to 8 commands at the same time to redirect the output to the log files.
  • Do not open too many background jobs at the same time to avoid negative performance effect to the target JVM.
  • If you do not want to stop the Arthas service and continue to perform background tasks, you can exit the Arthas console by executing quit command (stop command will stop the Arthas service)
`,27);function v(x,j){const n=d("ExternalLinkIcon");return s(),c("div",null,[l,e("p",null,[e("a",u,[h,p,a(n)])]),e("p",null,[b,e("a",m,[g,a(n)]),f]),k])}const _=o(r,[["render",v],["__file","async.html.vue"]]);export{_ as default}; diff --git a/3.x/assets/async.html.08408f7f.js b/3.x/assets/async.html.08408f7f.js new file mode 100644 index 00000000000..3aba026a983 --- /dev/null +++ b/3.x/assets/async.html.08408f7f.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-4f82df66","path":"/doc/async.html","title":"Arthas \u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"1. \u4F7F\u7528&\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1","slug":"_1-\u4F7F\u7528-\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1","link":"#_1-\u4F7F\u7528-\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1","children":[]},{"level":2,"title":"2. \u901A\u8FC7 jobs \u67E5\u770B\u4EFB\u52A1","slug":"_2-\u901A\u8FC7-jobs-\u67E5\u770B\u4EFB\u52A1","link":"#_2-\u901A\u8FC7-jobs-\u67E5\u770B\u4EFB\u52A1","children":[]},{"level":2,"title":"3. \u4EFB\u52A1\u6682\u505C\u548C\u53D6\u6D88","slug":"_3-\u4EFB\u52A1\u6682\u505C\u548C\u53D6\u6D88","link":"#_3-\u4EFB\u52A1\u6682\u505C\u548C\u53D6\u6D88","children":[]},{"level":2,"title":"4. fg\u3001bg \u547D\u4EE4\uFF0C\u5C06\u547D\u4EE4\u8F6C\u5230\u524D\u53F0\u3001\u540E\u53F0\u7EE7\u7EED\u6267\u884C","slug":"_4-fg\u3001bg-\u547D\u4EE4-\u5C06\u547D\u4EE4\u8F6C\u5230\u524D\u53F0\u3001\u540E\u53F0\u7EE7\u7EED\u6267\u884C","link":"#_4-fg\u3001bg-\u547D\u4EE4-\u5C06\u547D\u4EE4\u8F6C\u5230\u524D\u53F0\u3001\u540E\u53F0\u7EE7\u7EED\u6267\u884C","children":[]},{"level":2,"title":"5. \u4EFB\u52A1\u8F93\u51FA\u91CD\u5B9A\u5411","slug":"_5-\u4EFB\u52A1\u8F93\u51FA\u91CD\u5B9A\u5411","link":"#_5-\u4EFB\u52A1\u8F93\u51FA\u91CD\u5B9A\u5411","children":[]},{"level":2,"title":"6. \u505C\u6B62\u547D\u4EE4","slug":"_6-\u505C\u6B62\u547D\u4EE4","link":"#_6-\u505C\u6B62\u547D\u4EE4","children":[]},{"level":2,"title":"7. \u5176\u4ED6","slug":"_7-\u5176\u4ED6","link":"#_7-\u5176\u4ED6","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":2},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1}]},"filePathRelative":"doc/async.md","version":"3.7.3"}');export{l as data}; diff --git a/3.x/assets/async.html.0990e2e8.js b/3.x/assets/async.html.0990e2e8.js new file mode 100644 index 00000000000..ff4e2ecd29f --- /dev/null +++ b/3.x/assets/async.html.0990e2e8.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-786f7161","path":"/en/doc/async.html","title":"Arthas Async Jobs","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"1. Use & to run the command in the background","slug":"_1-use-to-run-the-command-in-the-background","link":"#_1-use-to-run-the-command-in-the-background","children":[]},{"level":2,"title":"2. List background jobs","slug":"_2-list-background-jobs","link":"#_2-list-background-jobs","children":[]},{"level":2,"title":"3. Suspend and cancel job","slug":"_3-suspend-and-cancel-job","link":"#_3-suspend-and-cancel-job","children":[]},{"level":2,"title":"4. fg/bg, switch the job from the foreground to the background, and vise verse","slug":"_4-fg-bg-switch-the-job-from-the-foreground-to-the-background-and-vise-verse","link":"#_4-fg-bg-switch-the-job-from-the-foreground-to-the-background-and-vise-verse","children":[]},{"level":2,"title":"5. Redirect the output","slug":"_5-redirect-the-output","link":"#_5-redirect-the-output","children":[]},{"level":2,"title":"6. Stop job","slug":"_6-stop-job","link":"#_6-stop-job","children":[]},{"level":2,"title":"7. Others","slug":"_7-others","link":"#_7-others","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":2},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1}]},"filePathRelative":"en/doc/async.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/async.html.d8cce9ca.js b/3.x/assets/async.html.d8cce9ca.js new file mode 100644 index 00000000000..d003f555e51 --- /dev/null +++ b/3.x/assets/async.html.d8cce9ca.js @@ -0,0 +1,14 @@ +import{_ as t,o,c,a as e,b as n,e as a,d as i,r as l}from"./app.4d248835.js";const d={},r=e("h1",{id:"arthas-\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#arthas-\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","aria-hidden":"true"},"#"),a(" Arthas \u540E\u53F0\u5F02\u6B65\u4EFB\u52A1")],-1),p={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=cn&id=case-async-jobs",target:"_blank",rel:"noopener noreferrer"},u=e("code",null,"\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1",-1),h=a("\u5728\u7EBF\u6559\u7A0B"),b=a("arthas \u4E2D\u7684\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1\uFF0C\u4F7F\u7528\u4E86\u4EFF linux \u7CFB\u7EDF\u4EFB\u52A1\u76F8\u5173\u7684\u547D\u4EE4\u3002"),m={href:"https://ehlxr.me/2017/01/18/Linux-%E4%B8%AD-fg%E3%80%81bg%E3%80%81jobs%E3%80%81-%E6%8C%87%E4%BB%A4/",target:"_blank",rel:"noopener noreferrer"},g=a("linux \u4EFB\u52A1\u76F8\u5173\u4ECB\u7ECD"),v=a("\u3002"),_=i(`

1. \u4F7F\u7528&\u5728\u540E\u53F0\u6267\u884C\u4EFB\u52A1

\u6BD4\u5982\u5E0C\u671B\u6267\u884C\u540E\u53F0\u6267\u884C trace \u547D\u4EE4\uFF0C\u90A3\u4E48\u8C03\u7528\u4E0B\u9762\u547D\u4EE4

trace Test t &
+

\u8FD9\u65F6\u547D\u4EE4\u5728\u540E\u53F0\u6267\u884C\uFF0C\u53EF\u4EE5\u5728 console \u4E2D\u7EE7\u7EED\u6267\u884C\u5176\u4ED6\u547D\u4EE4\u3002

2. \u901A\u8FC7 jobs \u67E5\u770B\u4EFB\u52A1

\u5982\u679C\u5E0C\u671B\u67E5\u770B\u5F53\u524D\u6709\u54EA\u4E9B arthas \u4EFB\u52A1\u5728\u6267\u884C\uFF0C\u53EF\u4EE5\u6267\u884C jobs \u547D\u4EE4\uFF0C\u6267\u884C\u7ED3\u679C\u5982\u4E0B

$ jobs
+[10]*
+       Stopped           watch com.taobao.container.Test test "params[0].{? #this.name == null }" -x 2
+       execution count : 19
+       start time      : Fri Sep 22 09:59:55 CST 2017
+       timeout date    : Sat Sep 23 09:59:55 CST 2017
+       session         : 3648e874-5e69-473f-9eed-7f89660b079b (current)
+

\u53EF\u4EE5\u770B\u5230\u76EE\u524D\u6709\u4E00\u4E2A\u540E\u53F0\u4EFB\u52A1\u5728\u6267\u884C\u3002

  • job id \u662F 10, * \u8868\u793A\u6B64 job \u662F\u5F53\u524D session \u521B\u5EFA
  • \u72B6\u6001\u662F Stopped
  • execution count \u662F\u6267\u884C\u6B21\u6570\uFF0C\u4ECE\u542F\u52A8\u5F00\u59CB\u5DF2\u7ECF\u6267\u884C\u4E86 19 \u6B21
  • timeout date \u662F\u8D85\u65F6\u7684\u65F6\u95F4\uFF0C\u5230\u8FD9\u4E2A\u65F6\u95F4\uFF0C\u4EFB\u52A1\u5C06\u4F1A\u81EA\u52A8\u8D85\u65F6\u9000\u51FA

3. \u4EFB\u52A1\u6682\u505C\u548C\u53D6\u6D88

\u5F53\u4EFB\u52A1\u6B63\u5728\u524D\u53F0\u6267\u884C\uFF0C\u6BD4\u5982\u76F4\u63A5\u8C03\u7528\u547D\u4EE4trace Test t\u6216\u8005\u8C03\u7528\u540E\u53F0\u6267\u884C\u547D\u4EE4trace Test t &\u540E\u53C8\u901A\u8FC7fg\u547D\u4EE4\u5C06\u4EFB\u52A1\u8F6C\u5230\u524D\u53F0\u3002\u8FD9\u65F6 console \u4E2D\u65E0\u6CD5\u7EE7\u7EED\u6267\u884C\u547D\u4EE4\uFF0C\u4F46\u662F\u53EF\u4EE5\u63A5\u6536\u5E76\u5904\u7406\u4EE5\u4E0B\u4E8B\u4EF6\uFF1A

  • \u2018ctrl + z\u2019\uFF1A\u5C06\u4EFB\u52A1\u6682\u505C\u3002\u901A\u8FC7jbos\u67E5\u770B\u4EFB\u52A1\u72B6\u6001\u5C06\u4F1A\u53D8\u4E3A Stopped\uFF0C\u901A\u8FC7bg <job-id>\u6216\u8005fg <job-id>\u53EF\u8BA9\u4EFB\u52A1\u91CD\u65B0\u5F00\u59CB\u6267\u884C
  • \u2018ctrl + c\u2019\uFF1A\u505C\u6B62\u4EFB\u52A1
  • \u2018ctrl + d\u2019\uFF1A\u6309\u7167 linux \u8BED\u4E49\u5E94\u5F53\u662F\u9000\u51FA\u7EC8\u7AEF\uFF0C\u76EE\u524D arthas \u4E2D\u662F\u7A7A\u5B9E\u73B0\uFF0C\u4E0D\u5904\u7406

4. fg\u3001bg \u547D\u4EE4\uFF0C\u5C06\u547D\u4EE4\u8F6C\u5230\u524D\u53F0\u3001\u540E\u53F0\u7EE7\u7EED\u6267\u884C

  • \u4EFB\u52A1\u5728\u540E\u53F0\u6267\u884C\u6216\u8005\u6682\u505C\u72B6\u6001\uFF08ctrl + z\u6682\u505C\u4EFB\u52A1\uFF09\u65F6\uFF0C\u6267\u884Cfg <job-id>\u5C06\u53EF\u4EE5\u628A\u5BF9\u5E94\u7684\u4EFB\u52A1\u8F6C\u5230\u524D\u53F0\u7EE7\u7EED\u6267\u884C\u3002\u5728\u524D\u53F0\u6267\u884C\u65F6\uFF0C\u65E0\u6CD5\u5728 console \u4E2D\u6267\u884C\u5176\u4ED6\u547D\u4EE4
  • \u5F53\u4EFB\u52A1\u5904\u4E8E\u6682\u505C\u72B6\u6001\u65F6\uFF08ctrl + z\u6682\u505C\u4EFB\u52A1\uFF09\uFF0C\u6267\u884Cbg <job-id>\u5C06\u53EF\u4EE5\u628A\u5BF9\u5E94\u7684\u4EFB\u52A1\u5728\u540E\u53F0\u7EE7\u7EED\u6267\u884C
  • \u975E\u5F53\u524D session \u521B\u5EFA\u7684 job\uFF0C\u53EA\u80FD\u7531\u5F53\u524D session fg \u5230\u524D\u53F0\u6267\u884C

5. \u4EFB\u52A1\u8F93\u51FA\u91CD\u5B9A\u5411

\u53EF\u901A\u8FC7>\u6216\u8005>>\u5C06\u4EFB\u52A1\u8F93\u51FA\u7ED3\u679C\u8F93\u51FA\u5230\u6307\u5B9A\u7684\u6587\u4EF6\u4E2D\uFF0C\u53EF\u4EE5\u548C&\u4E00\u8D77\u4F7F\u7528\uFF0C\u5B9E\u73B0 arthas \u547D\u4EE4\u7684\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1\u3002\u6BD4\u5982\uFF1A

$ trace Test t >> test.out &
+

\u8FD9\u65F6 trace \u547D\u4EE4\u4F1A\u5728\u540E\u53F0\u6267\u884C\uFF0C\u5E76\u4E14\u628A\u7ED3\u679C\u8F93\u51FA\u5230\u5E94\u7528\u5DE5\u4F5C\u76EE\u5F55\u4E0B\u9762\u7684test.out\u6587\u4EF6\u3002\u53EF\u7EE7\u7EED\u6267\u884C\u5176\u4ED6\u547D\u4EE4\u3002\u5E76\u53EF\u67E5\u770B\u6587\u4EF6\u4E2D\u7684\u547D\u4EE4\u6267\u884C\u7ED3\u679C\u3002\u53EF\u4EE5\u6267\u884Cpwd\u547D\u4EE4\u67E5\u770B\u5F53\u524D\u5E94\u7528\u7684\u5DE5\u4F5C\u76EE\u5F55\u3002

$ cat test.out
+

\u5982\u679C\u6CA1\u6709\u6307\u5B9A\u91CD\u5B9A\u5411\u6587\u4EF6\uFF0C\u5219\u4F1A\u628A\u7ED3\u679C\u8F93\u51FA\u5230~/logs/arthas-cache/\u76EE\u5F55\u4E0B\uFF0C\u6BD4\u5982\uFF1A

$ trace Test t >>  &
+job id  : 2
+cache location  : /Users/admin/logs/arthas-cache/28198/2
+

\u6B64\u65F6\u547D\u4EE4\u4F1A\u5728\u540E\u53F0\u5F02\u6B65\u6267\u884C\uFF0C\u5E76\u5C06\u7ED3\u679C\u5F02\u6B65\u4FDD\u5B58\u5728\u6587\u4EF6\uFF08~/logs/arthas-cache/\${PID}/\${JobId}\uFF09\u4E2D\uFF1B

  • \u6B64\u65F6\u4EFB\u52A1\u7684\u6267\u884C\u4E0D\u53D7 session \u65AD\u5F00\u7684\u5F71\u54CD\uFF1B\u4EFB\u52A1\u9ED8\u8BA4\u8D85\u65F6\u65F6\u95F4\u662F 1 \u5929\uFF0C\u53EF\u4EE5\u901A\u8FC7\u5168\u5C40 options \u547D\u4EE4\u4FEE\u6539\u9ED8\u8BA4\u8D85\u65F6\u65F6\u95F4\uFF1B
  • \u6B64\u547D\u4EE4\u7684\u7ED3\u679C\u5C06\u5F02\u6B65\u8F93\u51FA\u5230 \b \u6587\u4EF6\u4E2D\uFF1B\u6B64\u65F6\u4E0D\u7BA1 save-result \u662F\u5426\u4E3A true\uFF0C\u90FD\u4E0D\u4F1A\u518D\u5F80~/logs/arthas-cache/result.log \u4E2D\u5F02\u6B65\u5199\u7ED3\u679C\u3002

6. \u505C\u6B62\u547D\u4EE4

\u5F02\u6B65\u6267\u884C\u7684\u547D\u4EE4\uFF0C\u5982\u679C\u5E0C\u671B\u505C\u6B62\uFF0C\u53EF\u6267\u884Ckill <job-id>

7. \u5176\u4ED6

  • \u6700\u591A\u540C\u65F6\u652F\u6301 8 \u4E2A\u547D\u4EE4\u4F7F\u7528\u91CD\u5B9A\u5411\u5C06\u7ED3\u679C\u5199\u65E5\u5FD7
  • \u8BF7\u52FF\u540C\u65F6\u5F00\u542F\u8FC7\u591A\u7684\u540E\u53F0\u5F02\u6B65\u547D\u4EE4\uFF0C\u4EE5\u514D\u5BF9\u76EE\u6807 JVM \u6027\u80FD\u9020\u6210\u5F71\u54CD
  • \u5982\u679C\u4E0D\u60F3\u505C\u6B62 arthas\uFF0C\u7EE7\u7EED\u6267\u884C\u540E\u53F0\u4EFB\u52A1\uFF0C\u53EF\u4EE5\u6267\u884C quit \u9000\u51FA arthas \u63A7\u5236\u53F0\uFF08stop \u4F1A\u505C\u6B62 arthas \u670D\u52A1\uFF09
`,27);function k(f,x){const s=l("ExternalLinkIcon");return o(),c("div",null,[r,e("p",null,[e("a",p,[u,h,n(s)])]),e("p",null,[b,e("a",m,[g,n(s)]),v]),_])}const E=t(d,[["render",k],["__file","async.html.vue"]]);export{E as default}; diff --git a/3.x/assets/auth.html.0cae929d.js b/3.x/assets/auth.html.0cae929d.js new file mode 100644 index 00000000000..a4890c5e0f8 --- /dev/null +++ b/3.x/assets/auth.html.0cae929d.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-d0358c7e","path":"/doc/auth.html","title":"auth","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801","slug":"\u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801","link":"#\u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801","children":[]},{"level":2,"title":"\u672C\u5730\u8FDE\u63A5\u4E0D\u9274\u6743","slug":"\u672C\u5730\u8FDE\u63A5\u4E0D\u9274\u6743","link":"#\u672C\u5730\u8FDE\u63A5\u4E0D\u9274\u6743","children":[]},{"level":2,"title":"\u5728 telnet console \u91CC\u9274\u6743","slug":"\u5728-telnet-console-\u91CC\u9274\u6743","link":"#\u5728-telnet-console-\u91CC\u9274\u6743","children":[]},{"level":2,"title":"Web console \u5BC6\u7801\u9A8C\u8BC1","slug":"web-console-\u5BC6\u7801\u9A8C\u8BC1","link":"#web-console-\u5BC6\u7801\u9A8C\u8BC1","children":[]},{"level":2,"title":"HTTP API \u9A8C\u8BC1","slug":"http-api-\u9A8C\u8BC1","link":"#http-api-\u9A8C\u8BC1","children":[{"level":3,"title":"Authorization Header \u65B9\u5F0F\uFF08\u63A8\u8350\uFF09","slug":"authorization-header-\u65B9\u5F0F-\u63A8\u8350","link":"#authorization-header-\u65B9\u5F0F-\u63A8\u8350","children":[]},{"level":3,"title":"URL \u53C2\u6570\u4F20\u9012\u65B9\u5F0F","slug":"url-\u53C2\u6570\u4F20\u9012\u65B9\u5F0F","link":"#url-\u53C2\u6570\u4F20\u9012\u65B9\u5F0F","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/auth.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/auth.html.35f80b21.js b/3.x/assets/auth.html.35f80b21.js new file mode 100644 index 00000000000..1df497d0501 --- /dev/null +++ b/3.x/assets/auth.html.35f80b21.js @@ -0,0 +1,13 @@ +import{_ as t,o as i,c as o,a as e,b as d,d as a,e as n,r}from"./app.4d248835.js";const c={},l=a(`

auth

\u63D0\u793A

\u9A8C\u8BC1\u5F53\u524D\u4F1A\u8BDD

\u914D\u7F6E\u7528\u6237\u540D\u548C\u5BC6\u7801

\u5728 attach \u65F6\uFF0C\u53EF\u4EE5\u5728\u547D\u4EE4\u884C\u6307\u5B9A\u5BC6\u7801\u3002\u6BD4\u5982\uFF1A

java -jar arthas-boot3.jar --password ppp
+
  • \u53EF\u4EE5\u901A\u8FC7 --username \u9009\u9879\u6765\u6307\u5B9A\u7528\u6237\uFF0C\u9ED8\u8BA4\u503C\u662Farthas\u3002

  • \u4E5F\u53EF\u4EE5\u5728 arthas.properties \u91CC\u4E2D\u914D\u7F6E username/password\u3002\u547D\u4EE4\u884C\u7684\u4F18\u5148\u7EA7\u5927\u4E8E\u914D\u7F6E\u6587\u4EF6\u3002

  • \u5982\u679C\u53EA\u914D\u7F6Eusername\uFF0C\u6CA1\u6709\u914D\u7F6Epassword\uFF0C\u5219\u4F1A\u751F\u6210\u968F\u673A\u5BC6\u7801\uFF0C\u6253\u5370\u5728~/logs/arthas/arthas.log\u4E2D

    Using generated security password: 0vUBJpRIppkKuZ7dYzYqOKtranj4unGh
    +

\u672C\u5730\u8FDE\u63A5\u4E0D\u9274\u6743

\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u5728arthas.properties\u6587\u4EF6\u91CC\u6709\u914D\u7F6E\uFF1A

arthas.localConnectionNonAuth=true
+

\u5F53\u914D\u7F6E\u5BC6\u7801\u65F6\uFF0C\u4F7F\u7528\u672C\u5730\u8FDE\u63A5\uFF0C\u4E5F\u4E0D\u9700\u8981\u9274\u6743\u3002\u9ED8\u8BA4\u914D\u7F6E\u503C\u662F true\uFF0C\u65B9\u4FBF\u672C\u5730\u8FDE\u63A5\u4F7F\u7528\u3002\u53EA\u6709\u8FDC\u7A0B\u8FDE\u63A5\u65F6\uFF0C\u624D\u9700\u8981\u9274\u6743\u3002

\u5728 telnet console \u91CC\u9274\u6743

\u8FDE\u63A5\u5230 arthas \u540E\uFF0C\u76F4\u63A5\u6267\u884C\u547D\u4EE4\u4F1A\u63D0\u793A\u9700\u8981\u9274\u6743\uFF1A

[arthas@37430]$ help
+Error! command not permitted, try to use 'auth' command to authenticates.
+

\u4F7F\u7528auth\u547D\u4EE4\u6765\u9274\u6743\uFF0C\u6210\u529F\u4E4B\u540E\u53EF\u4EE5\u6267\u884C\u5176\u5B83\u547D\u4EE4\u3002

[arthas@37430]$ auth ppp
+Authentication result: true
+
  • \u53EF\u4EE5\u901A\u8FC7 --username \u9009\u9879\u6765\u6307\u5B9A\u7528\u6237\uFF0C\u9ED8\u8BA4\u503C\u662Farthas\u3002

Web console \u5BC6\u7801\u9A8C\u8BC1

\u6253\u5F00\u6D4F\u89C8\u5668\uFF0C\u4F1A\u6709\u5F39\u7A97\u63D0\u793A\u9700\u8981\u8F93\u5165 \u7528\u6237\u540D \u548C \u5BC6\u7801\u3002

\u6210\u529F\u4E4B\u540E\uFF0C\u5219\u53EF\u4EE5\u76F4\u63A5\u8FDE\u63A5\u4E0A web console\u3002

HTTP API \u9A8C\u8BC1

Authorization Header \u65B9\u5F0F\uFF08\u63A8\u8350\uFF09

Arthas \u91C7\u7528\u7684\u662F HTTP \u6807\u51C6\u7684 Basic Authorization\uFF0C\u5BA2\u6237\u7AEF\u8BF7\u6C42\u65F6\u589E\u52A0\u5BF9\u5E94\u7684 header \u5373\u53EF\u3002

`,22),u=n("\u53C2\u8003\uFF1A"),p={href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication",target:"_blank",rel:"noopener noreferrer"},h=n("https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication"),m=a(`

\u4F8B\u5982\uFF0C\u7528\u6237\u540D\u662F\uFF1Aadmin\uFF0C\u5BC6\u7801\u662F admin\uFF0C\u5219\u7EC4\u5408\u4E3A\u5B57\u7B26\u4E32\uFF1A admin:admin\uFF0Cbase64 \u7ED3\u679C\u662F\uFF1A YWRtaW46YWRtaW4=\uFF0C\u5219 HTTP \u8BF7\u6C42\u589E\u52A0Authorization header\uFF1A

curl 'http://localhost:8563/api' \\
+  -H 'Authorization: Basic YWRtaW46YWRtaW4=' \\
+  --data-raw '{"action":"exec","command":"version"}'
+

URL \u53C2\u6570\u4F20\u9012\u65B9\u5F0F

\u4E3A\u4E86\u65B9\u4FBF\u5404\u79CD\u7279\u6B8A\u60C5\u51B5\uFF0C\u652F\u6301\u4E86\u4EE5 parameters \u65B9\u5F0F\u4F20\u9012 username \u548C password\u3002\u6BD4\u5982\uFF1A

curl 'http://localhost:8563/api?password=admin' \\
+  --data-raw '{"action":"exec","command":"version"}'
+
`,5);function v(b,g){const s=r("ExternalLinkIcon");return i(),o("div",null,[l,e("ul",null,[e("li",null,[u,e("a",p,[h,d(s)])])]),m])}const _=t(c,[["render",v],["__file","auth.html.vue"]]);export{_ as default}; diff --git a/3.x/assets/auth.html.3fe3d5ca.js b/3.x/assets/auth.html.3fe3d5ca.js new file mode 100644 index 00000000000..97fb64f68c9 --- /dev/null +++ b/3.x/assets/auth.html.3fe3d5ca.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-f76c33a6","path":"/en/doc/auth.html","title":"auth","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Configure username and password","slug":"configure-username-and-password","link":"#configure-username-and-password","children":[]},{"level":2,"title":"Local connection does not require authentication","slug":"local-connection-does-not-require-authentication","link":"#local-connection-does-not-require-authentication","children":[]},{"level":2,"title":"Authenticate in the telnet console","slug":"authenticate-in-the-telnet-console","link":"#authenticate-in-the-telnet-console","children":[]},{"level":2,"title":"Web console Authentication","slug":"web-console-authentication","link":"#web-console-authentication","children":[]},{"level":2,"title":"HTTP API Authentication","slug":"http-api-authentication","link":"#http-api-authentication","children":[{"level":3,"title":"HTTP Authorization Header(recommended)","slug":"http-authorization-header-recommended","link":"#http-authorization-header-recommended","children":[]},{"level":3,"title":"URL parameters","slug":"url-parameters","link":"#url-parameters","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/auth.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/auth.html.d091b8de.js b/3.x/assets/auth.html.d091b8de.js new file mode 100644 index 00000000000..354c7548999 --- /dev/null +++ b/3.x/assets/auth.html.d091b8de.js @@ -0,0 +1,13 @@ +import{_ as s,o as i,c as o,a as e,b as r,d as a,e as n,r as c}from"./app.4d248835.js";const d={},l=a(`

auth

TIP

Authenticates the current session

Configure username and password

When attaching, you can specify a password on the command line. such as:

java -jar arthas-boot3.jar --password ppp
+
  • The user can be specified by the --username option, the default value is arthas.

  • You can also configure username/password in arthas.properties. The priority of the command line is higher than that of the configuration file.

  • If only username is configured and no password is configured, a random password will be generated and printed in ~/logs/arthas/arthas.log

    Using generated security password: 0vUBJpRIppkKuZ7dYzYqOKtranj4unGh
    +

Local connection does not require authentication

By default, there are configurations in the arthas.properties file:

arthas.localConnectionNonAuth=true
+

When the password is configured, connect from localhost, the authentication is not required. The default configuration value is true, which is convenient for local connection. Authentication is only required when connecting remotely.

Authenticate in the telnet console

After connecting to arthas, directly executing the command will prompt for authentication:

[arthas@37430]$ help
+Error! command not permitted, try to use 'auth' command to authenticates.
+

Use the auth command to authenticate, and you can execute other commands after success.

[arthas@37430]$ auth ppp
+Authentication result: true
+
  • The user can be specified by the --username option, the default value is arthas.

Web console Authentication

Open the browser, there will be a pop-up window prompting you to enter your username and password.

After success, you can directly connect to the web console.

HTTP API Authentication

Arthas uses the HTTP standard Basic Authorization.

`,22),u=n("Reference: "),h={href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication",target:"_blank",rel:"noopener noreferrer"},p=n("https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication"),m=a(`

For example, if the user name is: admin and the password is admin, the combination is a string: admin:admin, the base64 result is: YWRtaW46YWRtaW4=, then the HTTP request adds the Authorization header:

curl 'http://localhost:8563/api' \\
+  -H 'Authorization: Basic YWRtaW46YWRtaW4=' \\
+  --data-raw '{"action":"exec","command":"version"}'
+

URL parameters

It supports passing username and password in parameters. such as:

curl 'http://localhost:8563/api?password=admin' \\
+  --data-raw '{"action":"exec","command":"version"}'
+
`,5);function v(b,g){const t=c("ExternalLinkIcon");return i(),o("div",null,[l,e("ul",null,[e("li",null,[u,e("a",h,[p,r(t)])])]),m])}const x=s(d,[["render",v],["__file","auth.html.vue"]]);export{x as default}; diff --git a/3.x/assets/back-to-top.8efcbe56.svg b/3.x/assets/back-to-top.8efcbe56.svg new file mode 100644 index 00000000000..83236781a94 --- /dev/null +++ b/3.x/assets/back-to-top.8efcbe56.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/3.x/assets/base64.html.4fc99fea.js b/3.x/assets/base64.html.4fc99fea.js new file mode 100644 index 00000000000..e3a7b22fc51 --- /dev/null +++ b/3.x/assets/base64.html.4fc99fea.js @@ -0,0 +1,11 @@ +import{_ as e,o as a,c as s,d as n}from"./app.4d248835.js";const t={},i=n(`

base64

TIP

Encode and decode using Base64 representation.

Encode to base64

[arthas@70070]$ echo 'abc' > /tmp/test.txt
+[arthas@70070]$ cat /tmp/test.txt
+abc
+
+[arthas@70070]$ base64 /tmp/test.txt
+YWJjCg==
+

Encode to base64 and save output to file

$ base64 --input /tmp/test.txt --output /tmp/result.txt
+

Decode from base64

$ base64 -d /tmp/result.txt
+abc
+

Decode from base64 and save output to file

$ base64 -d /tmp/result.txt --output /tmp/bbb.txt
+
`,10),d=[i];function c(o,r){return a(),s("div",null,d)}const p=e(t,[["render",c],["__file","base64.html.vue"]]);export{p as default}; diff --git a/3.x/assets/base64.html.4feec68d.js b/3.x/assets/base64.html.4feec68d.js new file mode 100644 index 00000000000..b45749b7eaa --- /dev/null +++ b/3.x/assets/base64.html.4feec68d.js @@ -0,0 +1,11 @@ +import{_ as a,o as e,c as s,d as n}from"./app.4d248835.js";const t={},i=n(`

base64

\u63D0\u793A

base64 \u7F16\u7801\u8F6C\u6362\uFF0C\u548C linux \u91CC\u7684 base64 \u547D\u4EE4\u7C7B\u4F3C\u3002

\u5BF9\u6587\u4EF6\u8FDB\u884C base64 \u7F16\u7801

[arthas@70070]$ echo 'abc' > /tmp/test.txt
+[arthas@70070]$ cat /tmp/test.txt
+abc
+
+[arthas@70070]$ base64 /tmp/test.txt
+YWJjCg==
+

\u5BF9\u6587\u4EF6\u8FDB\u884C base64 \u7F16\u7801\u5E76\u628A\u7ED3\u679C\u4FDD\u5B58\u5230\u6587\u4EF6\u91CC

$ base64 --input /tmp/test.txt --output /tmp/result.txt
+

\u7528 base64 \u89E3\u7801\u6587\u4EF6

$ base64 -d /tmp/result.txt
+abc
+

\u7528 base64 \u89E3\u7801\u6587\u4EF6\u5E76\u4FDD\u5B58\u7ED3\u679C\u5230\u6587\u4EF6\u91CC

$ base64 -d /tmp/result.txt --output /tmp/bbb.txt
+
`,10),r=[i];function d(l,c){return e(),s("div",null,r)}const o=a(t,[["render",d],["__file","base64.html.vue"]]);export{o as default}; diff --git a/3.x/assets/base64.html.d9951e03.js b/3.x/assets/base64.html.d9951e03.js new file mode 100644 index 00000000000..50bf9109635 --- /dev/null +++ b/3.x/assets/base64.html.d9951e03.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-d17b7034","path":"/en/doc/base64.html","title":"base64","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Encode to base64","slug":"encode-to-base64","link":"#encode-to-base64","children":[]},{"level":2,"title":"Encode to base64 and save output to file","slug":"encode-to-base64-and-save-output-to-file","link":"#encode-to-base64-and-save-output-to-file","children":[]},{"level":2,"title":"Decode from base64","slug":"decode-from-base64","link":"#decode-from-base64","children":[]},{"level":2,"title":"Decode from base64 and save output to file","slug":"decode-from-base64-and-save-output-to-file","link":"#decode-from-base64-and-save-output-to-file","children":[]}],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/base64.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/base64.html.e5a32bd6.js b/3.x/assets/base64.html.e5a32bd6.js new file mode 100644 index 00000000000..2f6a8e167cc --- /dev/null +++ b/3.x/assets/base64.html.e5a32bd6.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-3157067a","path":"/doc/base64.html","title":"base64","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u5BF9\u6587\u4EF6\u8FDB\u884C base64 \u7F16\u7801","slug":"\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801","link":"#\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801","children":[]},{"level":2,"title":"\u5BF9\u6587\u4EF6\u8FDB\u884C base64 \u7F16\u7801\u5E76\u628A\u7ED3\u679C\u4FDD\u5B58\u5230\u6587\u4EF6\u91CC","slug":"\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801\u5E76\u628A\u7ED3\u679C\u4FDD\u5B58\u5230\u6587\u4EF6\u91CC","link":"#\u5BF9\u6587\u4EF6\u8FDB\u884C-base64-\u7F16\u7801\u5E76\u628A\u7ED3\u679C\u4FDD\u5B58\u5230\u6587\u4EF6\u91CC","children":[]},{"level":2,"title":"\u7528 base64 \u89E3\u7801\u6587\u4EF6","slug":"\u7528-base64-\u89E3\u7801\u6587\u4EF6","link":"#\u7528-base64-\u89E3\u7801\u6587\u4EF6","children":[]},{"level":2,"title":"\u7528 base64 \u89E3\u7801\u6587\u4EF6\u5E76\u4FDD\u5B58\u7ED3\u679C\u5230\u6587\u4EF6\u91CC","slug":"\u7528-base64-\u89E3\u7801\u6587\u4EF6\u5E76\u4FDD\u5B58\u7ED3\u679C\u5230\u6587\u4EF6\u91CC","link":"#\u7528-base64-\u89E3\u7801\u6587\u4EF6\u5E76\u4FDD\u5B58\u7ED3\u679C\u5230\u6587\u4EF6\u91CC","children":[]}],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/base64.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/batch-support.html.09feead8.js b/3.x/assets/batch-support.html.09feead8.js new file mode 100644 index 00000000000..5c46fca2433 --- /dev/null +++ b/3.x/assets/batch-support.html.09feead8.js @@ -0,0 +1,10 @@ +import{_ as n,o as c,c as o,a as e,b as i,w as d,d as a,e as s,r}from"./app.4d248835.js";const l={},h=a(`

Batch Processing

With the help of Batch Processing, you can run multiple commands in batch and get the final result at the end. The process name can be specified using the \u201C\u2013select\u201D parameter.

Usage

Step 1: Create the script

Create a test.as script suffixed with as. Here as is suggested for the suffix of the filename, but in fact any suffix is acceptable.

\u279C  arthas git:(develop) cat /var/tmp/test.as
+help
+dashboard -n 1
+session
+thread
+sc -d org.apache.commons.lang.StringUtils
+

Note:

`,7),p=a("
  • Each command takes one line.
  • Batch mode execution times (via -n) must be explicitly specified for dashboard, otherwise batch script cannot terminate.
  • Commands such as watch/tt/trace/monitor/stack should include -n option to ensure the script can be able to quit.
  • ",3),u=s("Also consider to use "),m=e("code",null,"async",-1),b=s(" (for example: "),v=e("code",null,"watch c.t.X test returnObj > &",-1),f=s(") to put commands run at background and get the output from the log file, see more from "),g=s("asynchronous job"),_=a(`

    Step 2: Run the script

    Use -f to specify the script file. By default the result will be output to the standard output, but you can redirect the output to the file like this:

    ./as3.sh -f /var/tmp/test.as 56328 > test.out
    +

    Use -c also can specify the commands, like this:

    ./as3.sh -c 'sysprop; thread' 56328 > test.out
    +

    Step 3: Check the output

    cat test.out
    +
    `,7);function k(x,y){const t=r("RouterLink");return c(),o("div",null,[h,e("ul",null,[p,e("li",null,[u,m,b,v,f,i(t,{to:"/en/doc/async.html"},{default:d(()=>[g]),_:1})])]),_])}const B=n(l,[["render",k],["__file","batch-support.html.vue"]]);export{B as default}; diff --git a/3.x/assets/batch-support.html.1959143d.js b/3.x/assets/batch-support.html.1959143d.js new file mode 100644 index 00000000000..2b696d6629e --- /dev/null +++ b/3.x/assets/batch-support.html.1959143d.js @@ -0,0 +1,10 @@ +import{_ as t,o as d,c as i,a as e,b as o,w as c,d as a,e as s,r}from"./app.4d248835.js";const l={},p=a('

    \u6279\u5904\u7406\u529F\u80FD

    \u63D0\u793A

    \u901A\u8FC7\u6279\u5904\u7406\u529F\u80FD\uFF0Carthas \u652F\u6301\u4E00\u6B21\u6027\u6279\u91CF\u8FD0\u884C\u591A\u4E2A\u547D\u4EE4\uFF0C\u5E76\u53D6\u5F97\u547D\u4EE4\u6267\u884C\u7684\u7ED3\u679C\u3002\u53EF\u7ED3\u5408 --select \u53C2\u6570\u53EF\u4EE5\u6307\u5B9A\u8FDB\u7A0B\u540D\u5B57\u4E00\u8D77\u4F7F\u7528\u3002

    \u4F7F\u7528\u65B9\u6CD5

    \u7B2C\u4E00\u6B65\uFF1A\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C

    \u8FD9\u91CC\u6211\u4EEC\u65B0\u5EFA\u4E86\u4E00\u4E2Atest.as\u811A\u672C\uFF0C\u4E3A\u4E86\u89C4\u8303\uFF0C\u6211\u4EEC\u91C7\u7528\u4E86.as \u540E\u7F00\u540D\uFF0C\u4F46\u4E8B\u5B9E\u4E0A\u4EFB\u610F\u7684\u6587\u672C\u6587\u4EF6\u90FD ok\u3002

    ',5),h={class:"custom-container tip"},u=e("p",{class:"custom-container-title"},"\u63D0\u793A",-1),m=e("li",null,"\u76EE\u524D\u9700\u8981\u6BCF\u4E2A\u547D\u4EE4\u5360\u4E00\u884C",-1),v=e("li",null,[s("dashboard \u52A1\u5FC5\u6307\u5B9A\u6267\u884C\u6B21\u6570 ("),e("code",null,"-n"),s(")\uFF0C\u5426\u5219\u4F1A\u5BFC\u81F4\u6279\u5904\u7406\u811A\u672C\u65E0\u6CD5\u7EC8\u6B62")],-1),_=e("li",null,[s("watch/tt/trace/monitor/stack \u7B49\u547D\u4EE4\u52A1\u5FC5\u6307\u5B9A\u6267\u884C\u6B21\u6570 ("),e("code",null,"-n"),s(")\uFF0C\u5426\u5219\u4F1A\u5BFC\u81F4\u6279\u5904\u7406\u811A\u672C\u65E0\u6CD5\u7EC8\u6B62")],-1),b=s("\u53EF\u4EE5\u4F7F\u7528\u5F02\u6B65\u540E\u53F0\u4EFB\u52A1\uFF0C\u5982 "),g=e("code",null,"watch c.t.X test returnObj > &",-1),k=s("\uFF0C\u8BA9\u547D\u4EE4\u4E00\u76F4\u5728\u540E\u53F0\u8FD0\u884C\uFF0C\u901A\u8FC7\u65E5\u5FD7\u83B7\u53D6\u7ED3\u679C\uFF0C"),x=s("\u83B7\u53D6\u66F4\u591A\u5F02\u6B65\u4EFB\u52A1\u7684\u4FE1\u606F"),f=a(`
    \u279C  arthas git:(develop) cat /var/tmp/test.as
    +help
    +dashboard -n 1
    +session
    +thread
    +sc -d org.apache.commons.lang.StringUtils
    +

    \u7B2C\u4E8C\u6B65\uFF1A\u8FD0\u884C\u4F60\u7684\u6279\u5904\u7406\u811A\u672C

    \u901A\u8FC7-f\u6267\u884C\u811A\u672C\u6587\u4EF6\uFF0C\u6279\u5904\u7406\u811A\u672C\u9ED8\u8BA4\u4F1A\u8F93\u51FA\u5230\u6807\u51C6\u8F93\u51FA\u4E2D\uFF0C\u53EF\u4EE5\u5C06\u7ED3\u679C\u91CD\u5B9A\u5411\u5230\u6587\u4EF6\u4E2D\u3002

    ./as3.sh -f /var/tmp/test.as <pid> > test.out # pid \u53EF\u4EE5\u901A\u8FC7 jps \u547D\u4EE4\u67E5\u770B
    +

    \u4E5F\u53EF\u4EE5\u901A\u8FC7 -c \u6765\u6307\u5B9A\u6307\u884C\u7684\u547D\u4EE4\uFF0C\u6BD4\u5982

    ./as3.sh -c 'sysprop; thread' <pid> > test.out # pid \u53EF\u4EE5\u901A\u8FC7 jps \u547D\u4EE4\u67E5\u770B
    +

    \u7B2C\u4E09\u6B65\uFF1A\u67E5\u770B\u8FD0\u884C\u7ED3\u679C

    cat test.out
    +
    `,8);function w(N,V){const n=r("RouterLink");return d(),i("div",null,[p,e("div",h,[u,e("ul",null,[m,v,_,e("li",null,[b,g,k,o(n,{to:"/doc/async.html"},{default:c(()=>[x]),_:1})])])]),f])}const B=t(l,[["render",w],["__file","batch-support.html.vue"]]);export{B as default}; diff --git a/3.x/assets/batch-support.html.a2012b98.js b/3.x/assets/batch-support.html.a2012b98.js new file mode 100644 index 00000000000..e300587092b --- /dev/null +++ b/3.x/assets/batch-support.html.a2012b98.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-765e30be","path":"/en/doc/batch-support.html","title":"Batch Processing","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"Step 1: Create the script","slug":"step-1-create-the-script","link":"#step-1-create-the-script","children":[]},{"level":3,"title":"Step 2: Run the script","slug":"step-2-run-the-script","link":"#step-2-run-the-script","children":[]},{"level":3,"title":"Step 3: Check the output","slug":"step-3-check-the-output","link":"#step-3-check-the-output","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":2},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/batch-support.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/batch-support.html.acbd1eb9.js b/3.x/assets/batch-support.html.acbd1eb9.js new file mode 100644 index 00000000000..3d459668d0b --- /dev/null +++ b/3.x/assets/batch-support.html.acbd1eb9.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-cc8f4ae6","path":"/doc/batch-support.html","title":"\u6279\u5904\u7406\u529F\u80FD","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u65B9\u6CD5","slug":"\u4F7F\u7528\u65B9\u6CD5","link":"#\u4F7F\u7528\u65B9\u6CD5","children":[{"level":3,"title":"\u7B2C\u4E00\u6B65\uFF1A\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","slug":"\u7B2C\u4E00\u6B65-\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","link":"#\u7B2C\u4E00\u6B65-\u521B\u5EFA\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","children":[]},{"level":3,"title":"\u7B2C\u4E8C\u6B65\uFF1A\u8FD0\u884C\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","slug":"\u7B2C\u4E8C\u6B65-\u8FD0\u884C\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","link":"#\u7B2C\u4E8C\u6B65-\u8FD0\u884C\u4F60\u7684\u6279\u5904\u7406\u811A\u672C","children":[]},{"level":3,"title":"\u7B2C\u4E09\u6B65\uFF1A\u67E5\u770B\u8FD0\u884C\u7ED3\u679C","slug":"\u7B2C\u4E09\u6B65-\u67E5\u770B\u8FD0\u884C\u7ED3\u679C","link":"#\u7B2C\u4E09\u6B65-\u67E5\u770B\u8FD0\u884C\u7ED3\u679C","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":2},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/batch-support.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/cat.html.77044202.js b/3.x/assets/cat.html.77044202.js new file mode 100644 index 00000000000..638da81b958 --- /dev/null +++ b/3.x/assets/cat.html.77044202.js @@ -0,0 +1,2 @@ +import{_ as n,o as c,c as s,a as e,b as o,e as a,d as r,r as i}from"./app.4d248835.js";const d={},l=e("h1",{id:"cat",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#cat","aria-hidden":"true"},"#"),a(" cat")],-1),h={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-cat",target:"_blank",rel:"noopener noreferrer"},_=e("code",null,"cat",-1),u=a("\u5728\u7EBF\u6559\u7A0B"),m=r(`

    \u63D0\u793A

    \u6253\u5370\u6587\u4EF6\u5185\u5BB9\uFF0C\u548C linux \u91CC\u7684 cat \u547D\u4EE4\u7C7B\u4F3C\u3002

    \u4F7F\u7528\u53C2\u8003

    $ cat /tmp/a.txt
    +
    `,3);function p(f,x){const t=i("ExternalLinkIcon");return c(),s("div",null,[l,e("p",null,[e("a",h,[_,u,o(t)])]),m])}const b=n(d,[["render",p],["__file","cat.html.vue"]]);export{b as default}; diff --git a/3.x/assets/cat.html.79af7693.js b/3.x/assets/cat.html.79af7693.js new file mode 100644 index 00000000000..8b11c748ba4 --- /dev/null +++ b/3.x/assets/cat.html.79af7693.js @@ -0,0 +1 @@ +const a=JSON.parse('{"key":"v-6542b733","path":"/doc/cat.html","title":"cat","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/cat.md","version":"3.7.3"}');export{a as data}; diff --git a/3.x/assets/cat.html.7e324ac6.js b/3.x/assets/cat.html.7e324ac6.js new file mode 100644 index 00000000000..1092b48d954 --- /dev/null +++ b/3.x/assets/cat.html.7e324ac6.js @@ -0,0 +1,2 @@ +import{_ as n,o as s,c,a as e,b as o,e as a,d as r,r as i}from"./app.4d248835.js";const d={},l=e("h1",{id:"cat",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#cat","aria-hidden":"true"},"#"),a(" cat")],-1),h={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-cat",target:"_blank",rel:"noopener noreferrer"},_=e("code",null,"cat",-1),u=a(" online tutorial"),p=r(`

    TIP

    Concatenate and print files

    Usage

    $ cat /tmp/a.txt
    +
    `,3);function m(f,v){const t=i("ExternalLinkIcon");return s(),c("div",null,[l,e("p",null,[e("a",h,[_,u,o(t)])]),p])}const g=n(d,[["render",m],["__file","cat.html.vue"]]);export{g as default}; diff --git a/3.x/assets/cat.html.c8a558a6.js b/3.x/assets/cat.html.c8a558a6.js new file mode 100644 index 00000000000..4f0c8faa298 --- /dev/null +++ b/3.x/assets/cat.html.c8a558a6.js @@ -0,0 +1 @@ +const a=JSON.parse('{"key":"v-64a0cd47","path":"/en/doc/cat.html","title":"cat","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/cat.md","version":"3.7.3"}');export{a as data}; diff --git a/3.x/assets/classloader.html.2b5b952f.js b/3.x/assets/classloader.html.2b5b952f.js new file mode 100644 index 00000000000..301f7aeb498 --- /dev/null +++ b/3.x/assets/classloader.html.2b5b952f.js @@ -0,0 +1,87 @@ +import{_ as n,o as l,c as i,a,b as r,e as s,d,r as t}from"./app.4d248835.js";const c={},o=a("h1",{id:"classloader",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#classloader","aria-hidden":"true"},"#"),s(" classloader")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=cn&id=command-classloader",target:"_blank",rel:"noopener noreferrer"},p=a("code",null,"classloader",-1),v=s("\u5728\u7EBF\u6559\u7A0B"),m=d(`

    \u63D0\u793A

    \u67E5\u770B classloader \u7684\u7EE7\u627F\u6811\uFF0Curls\uFF0C\u7C7B\u52A0\u8F7D\u4FE1\u606F

    classloader \u547D\u4EE4\u5C06 JVM \u4E2D\u6240\u6709\u7684 classloader \u7684\u4FE1\u606F\u7EDF\u8BA1\u51FA\u6765\uFF0C\u5E76\u53EF\u4EE5\u5C55\u793A\u7EE7\u627F\u6811\uFF0Curls \u7B49\u3002

    \u53EF\u4EE5\u8BA9\u6307\u5B9A\u7684 classloader \u53BB getResources\uFF0C\u6253\u5370\u51FA\u6240\u6709\u67E5\u627E\u5230\u7684 resources \u7684 url\u3002\u5BF9\u4E8EResourceNotFoundException\u6BD4\u8F83\u6709\u7528\u3002

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    [l]\u6309\u7C7B\u52A0\u8F7D\u5B9E\u4F8B\u8FDB\u884C\u7EDF\u8BA1
    [t]\u6253\u5370\u6240\u6709 ClassLoader \u7684\u7EE7\u627F\u6811
    [a]\u5217\u51FA\u6240\u6709 ClassLoader \u52A0\u8F7D\u7684\u7C7B\uFF0C\u8BF7\u8C28\u614E\u4F7F\u7528
    [c:]ClassLoader \u7684 hashcode
    [classLoaderClass:]\u6307\u5B9A\u6267\u884C\u8868\u8FBE\u5F0F\u7684 ClassLoader \u7684 class name
    [c: r:]\u7528 ClassLoader \u53BB\u67E5\u627E resource
    [c: load:]\u7528 ClassLoader \u53BB\u52A0\u8F7D\u6307\u5B9A\u7684\u7C7B

    \u4F7F\u7528\u53C2\u8003

    \u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F

    $ classloader
    + name                                       numberOfInstances  loadedCountTotal
    + com.taobao.arthas.agent.ArthasClassloader  1                  2115
    + BootstrapClassLoader                       1                  1861
    + sun.reflect.DelegatingClassLoader          5                  5
    + sun.misc.Launcher$AppClassLoader           1                  4
    + sun.misc.Launcher$ExtClassLoader           1                  1
    +Affect(row-cnt:5) cost in 3 ms.
    +

    \u6309\u7C7B\u52A0\u8F7D\u5B9E\u4F8B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F

    $ classloader -l
    + name                                                loadedCount  hash      parent
    + BootstrapClassLoader                                1861         null      null
    + com.taobao.arthas.agent.ArthasClassloader@68b31f0a  2115         68b31f0a  sun.misc.Launcher$ExtClassLoader@66350f69
    + sun.misc.Launcher$AppClassLoader@3d4eac69           4            3d4eac69  sun.misc.Launcher$ExtClassLoader@66350f69
    + sun.misc.Launcher$ExtClassLoader@66350f69           1            66350f69  null
    +Affect(row-cnt:4) cost in 2 ms.
    +

    \u67E5\u770B ClassLoader \u7684\u7EE7\u627F\u6811

    $ classloader -t
    ++-BootstrapClassLoader
    ++-sun.misc.Launcher$ExtClassLoader@66350f69
    +  +-com.taobao.arthas.agent.ArthasClassloader@68b31f0a
    +  +-sun.misc.Launcher$AppClassLoader@3d4eac69
    +Affect(row-cnt:4) cost in 3 ms.
    +

    \u67E5\u770B URLClassLoader \u5B9E\u9645\u7684 urls

    $ classloader -c 3d4eac69
    +file:/private/tmp/math-game.jar
    +file:/Users/hengyunabc/.arthas/lib/3.0.5/arthas/arthas-agent.jar
    +
    +Affect(row-cnt:9) cost in 3 ms.
    +

    \u6CE8\u610F hashcode \u662F\u53D8\u5316\u7684\uFF0C\u9700\u8981\u5148\u67E5\u770B\u5F53\u524D\u7684 ClassLoader \u4FE1\u606F\uFF0C\u63D0\u53D6\u5BF9\u5E94 ClassLoader \u7684 hashcode\u3002

    \u5BF9\u4E8E\u53EA\u6709\u552F\u4E00\u5B9E\u4F8B\u7684 ClassLoader \u53EF\u4EE5\u901A\u8FC7 class name \u6307\u5B9A\uFF0C\u4F7F\u7528\u8D77\u6765\u66F4\u52A0\u65B9\u4FBF\uFF1A

    $ classloader --classLoaderClass sun.misc.Launcher$AppClassLoader
    +file:/private/tmp/math-game.jar
    +file:/Users/hengyunabc/.arthas/lib/3.0.5/arthas/arthas-agent.jar
    +
    +Affect(row-cnt:9) cost in 3 ms.
    +

    \u4F7F\u7528 ClassLoader \u53BB\u67E5\u627E resource

    $ classloader -c 3d4eac69  -r META-INF/MANIFEST.MF
    + jar:file:/System/Library/Java/Extensions/MRJToolkit.jar!/META-INF/MANIFEST.MF
    + jar:file:/private/tmp/math-game.jar!/META-INF/MANIFEST.MF
    + jar:file:/Users/hengyunabc/.arthas/lib/3.0.5/arthas/arthas-agent.jar!/META-INF/MANIFEST.MF
    +

    \u4E5F\u53EF\u4EE5\u5C1D\u8BD5\u67E5\u627E\u7C7B\u7684 class \u6587\u4EF6\uFF1A

    $ classloader -c 1b6d3586 -r java/lang/String.class
    + jar:file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/rt.jar!/java/lang/String.class
    +

    \u4F7F\u7528 ClassLoader \u53BB\u52A0\u8F7D\u7C7B

    $ classloader -c 3d4eac69 --load demo.MathGame
    +load class success.
    + class-info        demo.MathGame
    + code-source       /private/tmp/math-game.jar
    + name              demo.MathGame
    + isInterface       false
    + isAnnotation      false
    + isEnum            false
    + isAnonymousClass  false
    + isArray           false
    + isLocalClass      false
    + isMemberClass     false
    + isPrimitive       false
    + isSynthetic       false
    + simple-name       MathGame
    + modifier          public
    + annotation
    + interfaces
    + super-class       +-java.lang.Object
    + class-loader      +-sun.misc.Launcher$AppClassLoader@3d4eac69
    +                     +-sun.misc.Launcher$ExtClassLoader@66350f69
    + classLoaderHash   3d4eac69
    +

    \u7EDF\u8BA1 ClassLoader \u5B9E\u9645\u4F7F\u7528 URL \u548C\u672A\u4F7F\u7528\u7684 URL

    \u6CE8\u610F

    \u6CE8\u610F\uFF0C\u57FA\u4E8E JVM \u76EE\u524D\u5DF2\u52A0\u8F7D\u7684\u6240\u6709\u7C7B\u7EDF\u8BA1\uFF0C\u4E0D\u4EE3\u8868Unused URLs\u53EF\u4EE5\u4ECE\u5E94\u7528\u4E2D\u5220\u6389\u3002\u56E0\u4E3A\u53EF\u80FD\u5C06\u6765\u9700\u8981\u4ECEUnused URLs\u91CC\u52A0\u8F7D\u7C7B\uFF0C\u6216\u8005\u9700\u8981\u52A0\u8F7Dresources\u3002

    $ classloader --url-stat
    + com.taobao.arthas.agent.ArthasClassloader@3c41660, hash:3c41660
    + Used URLs:
    + file:/Users/admin/.arthas/lib/3.5.6/arthas/arthas-core.jar
    + Unused URLs:
    +
    + sun.misc.Launcher$AppClassLoader@75b84c92, hash:75b84c92
    + Used URLs:
    + file:/Users/admin/code/java/arthas/math-game/target/math-game.jar
    + file:/Users/admin/.arthas/lib/3.5.6/arthas/arthas-agent.jar
    + Unused URLs:
    +
    + sun.misc.Launcher$ExtClassLoader@7f31245a, hash:7f31245a
    + Used URLs:
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/sunec.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/sunjce_provider.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/localedata.jar
    + Unused URLs:
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/nashorn.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/cldrdata.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/legacy8ujsse.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/jfxrt.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/dnsns.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/openjsse.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/sunpkcs11.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/jaccess.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/zipfs.jar
    +
    `,26);function b(h,k){const e=t("ExternalLinkIcon");return l(),i("div",null,[o,a("p",null,[a("a",u,[p,v,r(e)])]),m])}const f=n(c,[["render",b],["__file","classloader.html.vue"]]);export{f as default}; diff --git a/3.x/assets/classloader.html.50846686.js b/3.x/assets/classloader.html.50846686.js new file mode 100644 index 00000000000..90008396e0e --- /dev/null +++ b/3.x/assets/classloader.html.50846686.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-fc1b9a9c","path":"/en/doc/classloader.html","title":"classloader","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"View statistics categorized by class type","slug":"view-statistics-categorized-by-class-type","link":"#view-statistics-categorized-by-class-type","children":[]},{"level":3,"title":"View statistics categorized by loaded classes number","slug":"view-statistics-categorized-by-loaded-classes-number","link":"#view-statistics-categorized-by-loaded-classes-number","children":[]},{"level":3,"title":"View class-loaders hierarchy","slug":"view-class-loaders-hierarchy","link":"#view-class-loaders-hierarchy","children":[]},{"level":3,"title":"Show the URLs of the URLClassLoader","slug":"show-the-urls-of-the-urlclassloader","link":"#show-the-urls-of-the-urlclassloader","children":[]},{"level":3,"title":"Use the classloader to load resource","slug":"use-the-classloader-to-load-resource","link":"#use-the-classloader-to-load-resource","children":[]},{"level":3,"title":"Use the classloader to load class","slug":"use-the-classloader-to-load-class","link":"#use-the-classloader-to-load-class","children":[]},{"level":3,"title":"Statistics ClassLoader actually used URLs and unused URLs","slug":"statistics-classloader-actually-used-urls-and-unused-urls","link":"#statistics-classloader-actually-used-urls-and-unused-urls","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/classloader.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/classloader.html.5b255ef1.js b/3.x/assets/classloader.html.5b255ef1.js new file mode 100644 index 00000000000..638e898792f --- /dev/null +++ b/3.x/assets/classloader.html.5b255ef1.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-49b1709e","path":"/doc/classloader.html","title":"classloader","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"\u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","slug":"\u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","link":"#\u6309\u7C7B\u52A0\u8F7D\u7C7B\u578B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","children":[]},{"level":3,"title":"\u6309\u7C7B\u52A0\u8F7D\u5B9E\u4F8B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","slug":"\u6309\u7C7B\u52A0\u8F7D\u5B9E\u4F8B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","link":"#\u6309\u7C7B\u52A0\u8F7D\u5B9E\u4F8B\u67E5\u770B\u7EDF\u8BA1\u4FE1\u606F","children":[]},{"level":3,"title":"\u67E5\u770B ClassLoader \u7684\u7EE7\u627F\u6811","slug":"\u67E5\u770B-classloader-\u7684\u7EE7\u627F\u6811","link":"#\u67E5\u770B-classloader-\u7684\u7EE7\u627F\u6811","children":[]},{"level":3,"title":"\u67E5\u770B URLClassLoader \u5B9E\u9645\u7684 urls","slug":"\u67E5\u770B-urlclassloader-\u5B9E\u9645\u7684-urls","link":"#\u67E5\u770B-urlclassloader-\u5B9E\u9645\u7684-urls","children":[]},{"level":3,"title":"\u4F7F\u7528 ClassLoader \u53BB\u67E5\u627E resource","slug":"\u4F7F\u7528-classloader-\u53BB\u67E5\u627E-resource","link":"#\u4F7F\u7528-classloader-\u53BB\u67E5\u627E-resource","children":[]},{"level":3,"title":"\u4F7F\u7528 ClassLoader \u53BB\u52A0\u8F7D\u7C7B","slug":"\u4F7F\u7528-classloader-\u53BB\u52A0\u8F7D\u7C7B","link":"#\u4F7F\u7528-classloader-\u53BB\u52A0\u8F7D\u7C7B","children":[]},{"level":3,"title":"\u7EDF\u8BA1 ClassLoader \u5B9E\u9645\u4F7F\u7528 URL \u548C\u672A\u4F7F\u7528\u7684 URL","slug":"\u7EDF\u8BA1-classloader-\u5B9E\u9645\u4F7F\u7528-url-\u548C\u672A\u4F7F\u7528\u7684-url","link":"#\u7EDF\u8BA1-classloader-\u5B9E\u9645\u4F7F\u7528-url-\u548C\u672A\u4F7F\u7528\u7684-url","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/classloader.md","version":"3.7.3"}');export{l as data}; diff --git a/3.x/assets/classloader.html.d971b2e3.js b/3.x/assets/classloader.html.d971b2e3.js new file mode 100644 index 00000000000..2ac954586bd --- /dev/null +++ b/3.x/assets/classloader.html.d971b2e3.js @@ -0,0 +1,87 @@ +import{_ as n,o as l,c as i,a,b as t,e as s,d as r,r as d}from"./app.4d248835.js";const c={},o=a("h1",{id:"classloader",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#classloader","aria-hidden":"true"},"#"),s(" classloader")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=en&id=command-classloader",target:"_blank",rel:"noopener noreferrer"},p=a("code",null,"classloader",-1),m=s(" online tutorial"),v=r(`

    TIP

    View hierarchy, urls and classes-loading info for the class-loaders.

    classloader can search and print out the URLs for a specified resource from one particular classloader. It is quite handy when analyzing ResourceNotFoundException.

    Options

    NameSpecification
    [l]list all classloader instances
    [t]print classloader's hierarchy
    [a]list all the classes loaded by all the classloaders (use it with great caution since the output can be huge)
    [c:]print classloader's hashcode
    [classLoaderClass:]The class name of the ClassLoader that executes the expression.
    [c: r:]using ClassLoader to search resource
    [c: load:]using ClassLoader to load class

    Usage

    View statistics categorized by class type

    $ classloader
    + name                                       numberOfInstances  loadedCountTotal
    + com.taobao.arthas.agent.ArthasClassloader  1                  2115
    + BootstrapClassLoader                       1                  1861
    + sun.reflect.DelegatingClassLoader          5                  5
    + sun.misc.Launcher$AppClassLoader           1                  4
    + sun.misc.Launcher$ExtClassLoader           1                  1
    +Affect(row-cnt:5) cost in 3 ms.
    +

    View statistics categorized by loaded classes number

    $ classloader -l
    + name                                                loadedCount  hash      parent
    + BootstrapClassLoader                                1861         null      null
    + com.taobao.arthas.agent.ArthasClassloader@68b31f0a  2115         68b31f0a  sun.misc.Launcher$ExtClassLoader@66350f69
    + sun.misc.Launcher$AppClassLoader@3d4eac69           4            3d4eac69  sun.misc.Launcher$ExtClassLoader@66350f69
    + sun.misc.Launcher$ExtClassLoader@66350f69           1            66350f69  null
    +Affect(row-cnt:4) cost in 2 ms.
    +

    View class-loaders hierarchy

    $ classloader -t
    ++-BootstrapClassLoader
    ++-sun.misc.Launcher$ExtClassLoader@66350f69
    +  +-com.taobao.arthas.agent.ArthasClassloader@68b31f0a
    +  +-sun.misc.Launcher$AppClassLoader@3d4eac69
    +Affect(row-cnt:4) cost in 3 ms.
    +

    Show the URLs of the URLClassLoader

    $ classloader -c 3d4eac69
    +file:/private/tmp/math-game.jar
    +file:/Users/hengyunabc/.arthas/lib/3.0.5/arthas/arthas-agent.jar
    +
    +Affect(row-cnt:9) cost in 3 ms.
    +

    Note that the hashcode changes, you need to check the current ClassLoader information first, and extract the hashcode corresponding to the ClassLoader.

    For ClassLoader with only unique instance, it can be specified by class name, which is more convenient to use:

    $ classloader --classLoaderClass sun.misc.Launcher$AppClassLoader
    +file:/private/tmp/math-game.jar
    +file:/Users/hengyunabc/.arthas/lib/3.0.5/arthas/arthas-agent.jar
    +
    +Affect(row-cnt:9) cost in 3 ms.
    +

    Use the classloader to load resource

    $ classloader -c 3d4eac69  -r META-INF/MANIFEST.MF
    + jar:file:/System/Library/Java/Extensions/MRJToolkit.jar!/META-INF/MANIFEST.MF
    + jar:file:/private/tmp/math-game.jar!/META-INF/MANIFEST.MF
    + jar:file:/Users/hengyunabc/.arthas/lib/3.0.5/arthas/arthas-agent.jar!/META-INF/MANIFEST.MF
    +

    Use the classloader to load .class resource

    $ classloader -c 1b6d3586 -r java/lang/String.class
    + jar:file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/rt.jar!/java/lang/String.class
    +

    Use the classloader to load class

    $ classloader -c 3d4eac69 --load demo.MathGame
    +load class success.
    + class-info        demo.MathGame
    + code-source       /private/tmp/math-game.jar
    + name              demo.MathGame
    + isInterface       false
    + isAnnotation      false
    + isEnum            false
    + isAnonymousClass  false
    + isArray           false
    + isLocalClass      false
    + isMemberClass     false
    + isPrimitive       false
    + isSynthetic       false
    + simple-name       MathGame
    + modifier          public
    + annotation
    + interfaces
    + super-class       +-java.lang.Object
    + class-loader      +-sun.misc.Launcher$AppClassLoader@3d4eac69
    +                     +-sun.misc.Launcher$ExtClassLoader@66350f69
    + classLoaderHash   3d4eac69
    +

    Statistics ClassLoader actually used URLs and unused URLs

    WARNING

    Note that statistics are based on all classes currently loaded by the JVM. Does not mean that Unused URLs can be removed from the application. Because it may be necessary to load classes from Unused URLs in the future, or to load resources.

    $ classloader --url-stat
    + com.taobao.arthas.agent.ArthasClassloader@3c41660, hash:3c41660
    + Used URLs:
    + file:/Users/admin/.arthas/lib/3.5.6/arthas/arthas-core.jar
    + Unused URLs:
    +
    + sun.misc.Launcher$AppClassLoader@75b84c92, hash:75b84c92
    + Used URLs:
    + file:/Users/admin/code/java/arthas/math-game/target/math-game.jar
    + file:/Users/admin/.arthas/lib/3.5.6/arthas/arthas-agent.jar
    + Unused URLs:
    +
    + sun.misc.Launcher$ExtClassLoader@7f31245a, hash:7f31245a
    + Used URLs:
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/sunec.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/sunjce_provider.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/localedata.jar
    + Unused URLs:
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/nashorn.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/cldrdata.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/legacy8ujsse.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/jfxrt.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/dnsns.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/openjsse.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/sunpkcs11.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/jaccess.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/zipfs.jar
    +
    `,25);function h(b,g){const e=d("ExternalLinkIcon");return l(),i("div",null,[o,a("p",null,[a("a",u,[p,m,t(e)])]),v])}const k=n(c,[["render",h],["__file","classloader.html.vue"]]);export{k as default}; diff --git a/3.x/assets/cls.html.92ac93b9.js b/3.x/assets/cls.html.92ac93b9.js new file mode 100644 index 00000000000..70f03d11a8b --- /dev/null +++ b/3.x/assets/cls.html.92ac93b9.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-ae5eff1a","path":"/en/doc/cls.html","title":"cls","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1658120060000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/cls.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/cls.html.9332bbdf.js b/3.x/assets/cls.html.9332bbdf.js new file mode 100644 index 00000000000..e2fa4ae2391 --- /dev/null +++ b/3.x/assets/cls.html.9332bbdf.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-ad1b2b42","path":"/doc/cls.html","title":"cls","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1658120060000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/cls.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/cls.html.a6a13162.js b/3.x/assets/cls.html.a6a13162.js new file mode 100644 index 00000000000..88bfa82f101 --- /dev/null +++ b/3.x/assets/cls.html.a6a13162.js @@ -0,0 +1 @@ +import{_ as e,o as t,c,a as s,e as o}from"./app.4d248835.js";const n={},a=s("h1",{id:"cls",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#cls","aria-hidden":"true"},"#"),o(" cls")],-1),l=s("p",null,"\u6E05\u7A7A\u5F53\u524D\u5C4F\u5E55\u533A\u57DF\u3002",-1),r=s("div",{class:"custom-container tip"},[s("p",{class:"custom-container-title"},"\u63D0\u793A"),s("p",null,`\u975E\u7EC8\u7AEF\u6A21\u5F0F\u4E0B\u4F7F\u7528 cls \u6307\u4EE4\uFF0C\u4F1A\u63D0\u793A"Command 'cls' is only support tty session."\u3002`)],-1),i=[a,l,r];function _(d,h){return t(),c("div",null,i)}const m=e(n,[["render",_],["__file","cls.html.vue"]]);export{m as default}; diff --git a/3.x/assets/cls.html.aef45d21.js b/3.x/assets/cls.html.aef45d21.js new file mode 100644 index 00000000000..8ab8105e7ab --- /dev/null +++ b/3.x/assets/cls.html.aef45d21.js @@ -0,0 +1 @@ +import{_ as t,o as s,c,a as e,e as o}from"./app.4d248835.js";const n={},a=e("h1",{id:"cls",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#cls","aria-hidden":"true"},"#"),o(" cls")],-1),l=e("p",null,"clear current console.",-1),r=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"TIP"),e("p",null,`if not in tty mode,it will warn "Command 'cls' is only support tty session.".`)],-1),i=[a,l,r];function _(d,h){return s(),c("div",null,i)}const m=t(n,[["render",_],["__file","cls.html.vue"]]);export{m as default}; diff --git a/3.x/assets/commands.html.b9c3ff85.js b/3.x/assets/commands.html.b9c3ff85.js new file mode 100644 index 00000000000..7c2119d8c10 --- /dev/null +++ b/3.x/assets/commands.html.b9c3ff85.js @@ -0,0 +1 @@ +import{_ as d,o as c,c as a,a as e,b as o,w as n,e as t,d as h,r as i}from"./app.4d248835.js";const r={},_=e("h1",{id:"all-commands",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#all-commands","aria-hidden":"true"},"#"),t(" All Commands")],-1),u=e("h2",{id:"jvm-related",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#jvm-related","aria-hidden":"true"},"#"),t(" jvm - related")],-1),m=t("dashboard"),f=t(" - dashboard for the system's real-time data"),p=t("getstatic"),g=t(" - examine class's static properties"),b=t("heapdump"),y=t(" - dump java heap in hprof binary format, like "),v=e("code",null,"jmap",-1),w=t("jvm"),j=t(" - show JVM information"),k=t("logger"),x=t(" - print the logger information, update the logger level"),A=t("mbean"),V=t(" - show Mbean information"),C=t("memory"),J=t(" - show JVM memory information"),M=t("ognl"),N=t(" - execute ognl expression"),B=t("perfcounter"),I=t(" - show JVM Perf Counter information"),E=t("sysenv"),L=t(" \u2014 view system environment variables"),R=t("sysprop"),S=t(" - view/modify system properties"),q=t("thread"),G=t(" - show java thread information"),P=t("vmoption"),T=t(" - view/modify the vm diagnostic options."),z=t("vmtool"),W=t(" - jvm tool, getInstances in jvm, forceGc"),D=e("h2",{id:"class-classloader-related",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#class-classloader-related","aria-hidden":"true"},"#"),t(" class/classloader - related")],-1),F=t("classloader"),H=t(" - check the inheritance structure, urls, class loading info for the specified class; using classloader to get the url of the resource e.g. "),K=e("code",null,"java/lang/String.class",-1),O=t("dump"),Q=t(" - dump the loaded classes in byte code to the specified location"),U=t("jad"),X=t(" - decompile the specified loaded classes"),Y=t("mc"),Z=t(" - Memory compiler, compiles "),$=e("code",null,".java",-1),tt=t(" files into "),et=e("code",null,".class",-1),ot=t(" files in memory"),st=t("redefine"),nt=t(" - load external "),lt=e("code",null,"*.class",-1),it=t(" files and re-define it into JVM"),dt=t("retransform"),ct=t(" - load external "),at=e("code",null,"*.class",-1),ht=t(" files and retransform it into JVM"),rt=t("sc"),_t=t(" - check the info for the classes loaded by JVM"),ut=t("sm"),mt=t(" - check methods info for the loaded classes"),ft=e("h2",{id:"monitor-watch-trace-related",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#monitor-watch-trace-related","aria-hidden":"true"},"#"),t(" monitor/watch/trace - related")],-1),pt={class:"custom-container warning"},gt=e("p",{class:"custom-container-title"},"WARNING",-1),bt=e("strong",null,"Attention",-1),yt=t(": commands here are taking advantage of byte-code-injection, which means we are injecting some "),vt={href:"https://en.wikipedia.org/wiki/Aspect-oriented_programming",target:"_blank",rel:"noopener noreferrer"},wt=t("aspects"),jt=t(" into the current classes for monitoring and statistics purpose. Therefore, when using it for online troubleshooting in your production environment, you'd better "),kt=e("strong",null,"explicitly specify",-1),xt=t(" classes/methods/criteria, and remember to remove the injected code by "),At=e("code",null,"stop",-1),Vt=t(" or "),Ct=e("code",null,"reset",-1),Jt=t("."),Mt=t("monitor"),Nt=t(" - monitor method execution statistics"),Bt=t("stack"),It=t(" - display the stack trace for the specified class and method"),Et=t("trace"),Lt=t(" - trace the execution time of specified method invocation"),Rt=t("tt"),St=t(" - time tunnel, record the arguments and returned value for the methods and replay"),qt=t("watch"),Gt=t(" - display the input/output parameter, return object, and thrown exception of specified method invocation"),Pt=e("h2",{id:"profiler-flame-graph",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#profiler-flame-graph","aria-hidden":"true"},"#"),t(" profiler/flame graph")],-1),Tt=t("profiler"),zt=t(" - use "),Wt={href:"https://github.com/jvm-profiling-tools/async-profiler",target:"_blank",rel:"noopener noreferrer"},Dt=t("async-profiler"),Ft=t(" to generate flame graph"),Ht=t("jfr"),Kt=t(" - dynamic opening and closing of jfr recordings"),Ot=e("h2",{id:"authentication",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#authentication","aria-hidden":"true"},"#"),t(" authentication")],-1),Qt=t("auth"),Ut=t(" - authentication"),Xt=e("h2",{id:"options",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#options","aria-hidden":"true"},"#"),t(" options")],-1),Yt=t("options"),Zt=t(" - check/set Arthas global optionss"),$t=e("h2",{id:"pipe",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#pipe","aria-hidden":"true"},"#"),t(" pipe")],-1),te=e("p",null,[t("Arthas provides "),e("code",null,"pipe"),t(" to process the result returned from commands further, e.g. "),e("code",null,"sm java.lang.String * | grep 'index'"),t(". Commands supported in "),e("code",null,"pipe"),t(":")],-1),ee=t("grep"),oe=t("- filter the result with the given keyword"),se=e("li",null,"plaintext - remove the ANSI color",-1),ne=e("li",null,"wc - count lines",-1),le=e("h2",{id:"async-jobs",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#async-jobs","aria-hidden":"true"},"#"),t(" async jobs")],-1),ie=t("async"),de=t(" can be handy when a problem is hardly to reproduce in the production environment, e.g. one "),ce=e("code",null,"watch",-1),ae=t(" condition may happen only once in one single day."),he=h('
    • job control - use > to redirect result into the log file, use & to put the job to the background. Job keeps running even if the session is disconnected (the session lifecycle is 1 day by default)
    • jobs - list all jobs
    • kill - forcibly terminate the job
    • fg - bring the suspend job to the foreground
    • bg - put the job to run in the background

    Basic Arthas Commands

    ',2),re=t("base64"),_e=t(" - Encode and decode using Base64 representation."),ue=t("cat"),me=t(" - Concatenate and print files"),fe=t("cls"),pe=t(" - clear the screen"),ge=t("echo"),be=t(" - write arguments to the standard output"),ye=t("grep"),ve=t(" - Pattern searcher"),we=t("help"),je=t(" - display Arthas help"),ke=t("history"),xe=t(" - view command history"),Ae=t("keymap"),Ve=t(" - keymap for Arthas keyboard shortcut"),Ce=t("pwd"),Je=t(" - Return working directory name"),Me=t("quit/exit"),Ne=t(" - exit the current Arthas session, without effecting other sessions"),Be=t("reset"),Ie=t(" - reset all the enhanced classes. All enhanced classes will also be reset when Arthas server is closed by "),Ee=e("code",null,"stop",-1),Le=t("session"),Re=t(" - display current session information"),Se=t("stop"),qe=t(" - terminate the Arthas server, all Arthas sessions will be destroyed"),Ge=t("tee"),Pe=t(" - Copies standard input to standard output, making a copy in zero or more files."),Te=t("version"),ze=t(" - print the version for the Arthas attached to the current Java process");function We(De,Fe){const s=i("RouterLink"),l=i("ExternalLinkIcon");return c(),a("div",null,[_,u,e("ul",null,[e("li",null,[o(s,{to:"/en/doc/dashboard.html"},{default:n(()=>[m]),_:1}),f]),e("li",null,[o(s,{to:"/en/doc/getstatic.html"},{default:n(()=>[p]),_:1}),g]),e("li",null,[o(s,{to:"/en/doc/heapdump.html"},{default:n(()=>[b]),_:1}),y,v]),e("li",null,[o(s,{to:"/en/doc/jvm.html"},{default:n(()=>[w]),_:1}),j]),e("li",null,[o(s,{to:"/en/doc/logger.html"},{default:n(()=>[k]),_:1}),x]),e("li",null,[o(s,{to:"/en/doc/mbean.html"},{default:n(()=>[A]),_:1}),V]),e("li",null,[o(s,{to:"/en/doc/memory.html"},{default:n(()=>[C]),_:1}),J]),e("li",null,[o(s,{to:"/en/doc/ognl.html"},{default:n(()=>[M]),_:1}),N]),e("li",null,[o(s,{to:"/en/doc/perfcounter.html"},{default:n(()=>[B]),_:1}),I]),e("li",null,[o(s,{to:"/en/doc/sysenv.html"},{default:n(()=>[E]),_:1}),L]),e("li",null,[o(s,{to:"/en/doc/sysprop.html"},{default:n(()=>[R]),_:1}),S]),e("li",null,[o(s,{to:"/en/doc/thread.html"},{default:n(()=>[q]),_:1}),G]),e("li",null,[o(s,{to:"/en/doc/vmoption.html"},{default:n(()=>[P]),_:1}),T]),e("li",null,[o(s,{to:"/en/doc/vmtool.html"},{default:n(()=>[z]),_:1}),W])]),D,e("ul",null,[e("li",null,[o(s,{to:"/en/doc/classloader.html"},{default:n(()=>[F]),_:1}),H,K]),e("li",null,[o(s,{to:"/en/doc/dump.html"},{default:n(()=>[O]),_:1}),Q]),e("li",null,[o(s,{to:"/en/doc/jad.html"},{default:n(()=>[U]),_:1}),X]),e("li",null,[o(s,{to:"/en/doc/mc.html"},{default:n(()=>[Y]),_:1}),Z,$,tt,et,ot]),e("li",null,[o(s,{to:"/en/doc/redefine.html"},{default:n(()=>[st]),_:1}),nt,lt,it]),e("li",null,[o(s,{to:"/en/doc/retransform.html"},{default:n(()=>[dt]),_:1}),ct,at,ht]),e("li",null,[o(s,{to:"/en/doc/sc.html"},{default:n(()=>[rt]),_:1}),_t]),e("li",null,[o(s,{to:"/en/doc/sm.html"},{default:n(()=>[ut]),_:1}),mt])]),ft,e("div",pt,[gt,e("p",null,[bt,yt,e("a",vt,[wt,o(l)]),jt,kt,xt,At,Vt,Ct,Jt])]),e("ul",null,[e("li",null,[o(s,{to:"/en/doc/monitor.html"},{default:n(()=>[Mt]),_:1}),Nt]),e("li",null,[o(s,{to:"/en/doc/stack.html"},{default:n(()=>[Bt]),_:1}),It]),e("li",null,[o(s,{to:"/en/doc/trace.html"},{default:n(()=>[Et]),_:1}),Lt]),e("li",null,[o(s,{to:"/en/doc/tt.html"},{default:n(()=>[Rt]),_:1}),St]),e("li",null,[o(s,{to:"/en/doc/watch.html"},{default:n(()=>[qt]),_:1}),Gt])]),Pt,e("ul",null,[e("li",null,[o(s,{to:"/en/doc/profiler.html"},{default:n(()=>[Tt]),_:1}),zt,e("a",Wt,[Dt,o(l)]),Ft]),e("li",null,[o(s,{to:"/en/doc/jfr.html"},{default:n(()=>[Ht]),_:1}),Kt])]),Ot,e("ul",null,[e("li",null,[o(s,{to:"/en/doc/auth.html"},{default:n(()=>[Qt]),_:1}),Ut])]),Xt,e("ul",null,[e("li",null,[o(s,{to:"/en/doc/options.html"},{default:n(()=>[Yt]),_:1}),Zt])]),$t,te,e("ul",null,[e("li",null,[o(s,{to:"/en/doc/grep.html"},{default:n(()=>[ee]),_:1}),oe]),se,ne]),le,e("p",null,[o(s,{to:"/en/doc/async.html"},{default:n(()=>[ie]),_:1}),de,ce,ae]),he,e("ul",null,[e("li",null,[o(s,{to:"/en/doc/base64.html"},{default:n(()=>[re]),_:1}),_e]),e("li",null,[o(s,{to:"/en/doc/cat.html"},{default:n(()=>[ue]),_:1}),me]),e("li",null,[o(s,{to:"/en/doc/cls.html"},{default:n(()=>[fe]),_:1}),pe]),e("li",null,[o(s,{to:"/en/doc/echo.html"},{default:n(()=>[ge]),_:1}),be]),e("li",null,[o(s,{to:"/en/doc/grep.html"},{default:n(()=>[ye]),_:1}),ve]),e("li",null,[o(s,{to:"/en/doc/help.html"},{default:n(()=>[we]),_:1}),je]),e("li",null,[o(s,{to:"/en/doc/history.html"},{default:n(()=>[ke]),_:1}),xe]),e("li",null,[o(s,{to:"/en/doc/keymap.html"},{default:n(()=>[Ae]),_:1}),Ve]),e("li",null,[o(s,{to:"/en/doc/pwd.html"},{default:n(()=>[Ce]),_:1}),Je]),e("li",null,[o(s,{to:"/en/doc/quit.html"},{default:n(()=>[Me]),_:1}),Ne]),e("li",null,[o(s,{to:"/en/doc/reset.html"},{default:n(()=>[Be]),_:1}),Ie,Ee]),e("li",null,[o(s,{to:"/en/doc/session.html"},{default:n(()=>[Le]),_:1}),Re]),e("li",null,[o(s,{to:"/en/doc/stop.html"},{default:n(()=>[Se]),_:1}),qe]),e("li",null,[o(s,{to:"/en/doc/tee.html"},{default:n(()=>[Ge]),_:1}),Pe]),e("li",null,[o(s,{to:"/en/doc/version.html"},{default:n(()=>[Te]),_:1}),ze])])])}const Ke=d(r,[["render",We],["__file","commands.html.vue"]]);export{Ke as default}; diff --git a/3.x/assets/commands.html.e2567b24.js b/3.x/assets/commands.html.e2567b24.js new file mode 100644 index 00000000000..4a5278d029b --- /dev/null +++ b/3.x/assets/commands.html.e2567b24.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-5ed4d0e1","path":"/doc/commands.html","title":"\u547D\u4EE4\u5217\u8868","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"jvm \u76F8\u5173","slug":"jvm-\u76F8\u5173","link":"#jvm-\u76F8\u5173","children":[]},{"level":2,"title":"class/classloader \u76F8\u5173","slug":"class-classloader-\u76F8\u5173","link":"#class-classloader-\u76F8\u5173","children":[]},{"level":2,"title":"monitor/watch/trace \u76F8\u5173","slug":"monitor-watch-trace-\u76F8\u5173","link":"#monitor-watch-trace-\u76F8\u5173","children":[]},{"level":2,"title":"profiler/\u706B\u7130\u56FE","slug":"profiler-\u706B\u7130\u56FE","link":"#profiler-\u706B\u7130\u56FE","children":[]},{"level":2,"title":"\u9274\u6743","slug":"\u9274\u6743","link":"#\u9274\u6743","children":[]},{"level":2,"title":"options","slug":"options","link":"#options","children":[]},{"level":2,"title":"\u7BA1\u9053","slug":"\u7BA1\u9053","link":"#\u7BA1\u9053","children":[]},{"level":2,"title":"\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","slug":"\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","link":"#\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","children":[]},{"level":2,"title":"\u57FA\u7840\u547D\u4EE4","slug":"\u57FA\u7840\u547D\u4EE4","link":"#\u57FA\u7840\u547D\u4EE4","children":[]}],"git":{"updatedTime":1661412829000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1},{"name":"longxu0509","email":"108991596+longxu0509@users.noreply.github.com","commits":1}]},"filePathRelative":"doc/commands.md","version":"3.7.3"}');export{l as data}; diff --git a/3.x/assets/commands.html.e522310c.js b/3.x/assets/commands.html.e522310c.js new file mode 100644 index 00000000000..ae7a5d34ffe --- /dev/null +++ b/3.x/assets/commands.html.e522310c.js @@ -0,0 +1 @@ +import{_ as n,o as c,c as i,a as o,b as e,w as l,e as t,d as h,r as d}from"./app.4d248835.js";const a={},r=o("h1",{id:"\u547D\u4EE4\u5217\u8868",tabindex:"-1"},[o("a",{class:"header-anchor",href:"#\u547D\u4EE4\u5217\u8868","aria-hidden":"true"},"#"),t(" \u547D\u4EE4\u5217\u8868")],-1),u=o("h2",{id:"jvm-\u76F8\u5173",tabindex:"-1"},[o("a",{class:"header-anchor",href:"#jvm-\u76F8\u5173","aria-hidden":"true"},"#"),t(" jvm \u76F8\u5173")],-1),m=t("dashboard"),f=t(" - \u5F53\u524D\u7CFB\u7EDF\u7684\u5B9E\u65F6\u6570\u636E\u9762\u677F"),p=t("getstatic"),g=t(" - \u67E5\u770B\u7C7B\u7684\u9759\u6001\u5C5E\u6027"),b=t("heapdump"),x=t(" - dump java heap, \u7C7B\u4F3C jmap \u547D\u4EE4\u7684 heap dump \u529F\u80FD"),v=t("jvm"),j=t(" - \u67E5\u770B\u5F53\u524D JVM \u7684\u4FE1\u606F"),y=t("logger"),V=t(" - \u67E5\u770B\u548C\u4FEE\u6539 logger"),k=t("mbean"),w=t(" - \u67E5\u770B Mbean \u7684\u4FE1\u606F"),J=t("memory"),A=t(" - \u67E5\u770B JVM \u7684\u5185\u5B58\u4FE1\u606F"),M=t("ognl"),N=t(" - \u6267\u884C ognl \u8868\u8FBE\u5F0F"),L=t("perfcounter"),R=t(" - \u67E5\u770B\u5F53\u524D JVM \u7684 Perf Counter \u4FE1\u606F"),B=t("sysenv"),C=t(" - \u67E5\u770B JVM \u7684\u73AF\u5883\u53D8\u91CF"),E=t("sysprop"),I=t(" - \u67E5\u770B\u548C\u4FEE\u6539 JVM \u7684\u7CFB\u7EDF\u5C5E\u6027"),S=t("thread"),q=t(" - \u67E5\u770B\u5F53\u524D JVM \u7684\u7EBF\u7A0B\u5806\u6808\u4FE1\u606F"),F=t("vmoption"),G=t(" - \u67E5\u770B\u548C\u4FEE\u6539 JVM \u91CC\u8BCA\u65AD\u76F8\u5173\u7684 option"),P=t("vmtool"),T=t(" - \u4ECE jvm \u91CC\u67E5\u8BE2\u5BF9\u8C61\uFF0C\u6267\u884C forceGc"),z=o("h2",{id:"class-classloader-\u76F8\u5173",tabindex:"-1"},[o("a",{class:"header-anchor",href:"#class-classloader-\u76F8\u5173","aria-hidden":"true"},"#"),t(" class/classloader \u76F8\u5173")],-1),D=t("classloader"),H=t(" - \u67E5\u770B classloader \u7684\u7EE7\u627F\u6811\uFF0Curls\uFF0C\u7C7B\u52A0\u8F7D\u4FE1\u606F\uFF0C\u4F7F\u7528 classloader \u53BB getResource"),K=t("dump"),O=t(" - dump \u5DF2\u52A0\u8F7D\u7C7B\u7684 byte code \u5230\u7279\u5B9A\u76EE\u5F55"),Q=t("jad"),U=t(" - \u53CD\u7F16\u8BD1\u6307\u5B9A\u5DF2\u52A0\u8F7D\u7C7B\u7684\u6E90\u7801"),W=t("mc"),X=t(" - \u5185\u5B58\u7F16\u8BD1\u5668\uFF0C\u5185\u5B58\u7F16\u8BD1"),Y=o("code",null,".java",-1),Z=t("\u6587\u4EF6\u4E3A"),$=o("code",null,".class",-1),tt=t("\u6587\u4EF6"),ot=t("redefine"),et=t(" - \u52A0\u8F7D\u5916\u90E8\u7684"),st=o("code",null,".class",-1),lt=t("\u6587\u4EF6\uFF0Credefine \u5230 JVM \u91CC"),dt=t("retransform"),_t=t(" - \u52A0\u8F7D\u5916\u90E8\u7684"),nt=o("code",null,".class",-1),ct=t("\u6587\u4EF6\uFF0Cretransform \u5230 JVM \u91CC"),it=t("sc"),ht=t(" - \u67E5\u770B JVM \u5DF2\u52A0\u8F7D\u7684\u7C7B\u4FE1\u606F"),at=t("sm"),rt=t(" - \u67E5\u770B\u5DF2\u52A0\u8F7D\u7C7B\u7684\u65B9\u6CD5\u4FE1\u606F"),ut=o("h2",{id:"monitor-watch-trace-\u76F8\u5173",tabindex:"-1"},[o("a",{class:"header-anchor",href:"#monitor-watch-trace-\u76F8\u5173","aria-hidden":"true"},"#"),t(" monitor/watch/trace \u76F8\u5173")],-1),mt=o("div",{class:"custom-container warning"},[o("p",{class:"custom-container-title"},"\u6CE8\u610F"),o("p",null,[t("\u8BF7\u6CE8\u610F\uFF0C\u8FD9\u4E9B\u547D\u4EE4\uFF0C\u90FD\u901A\u8FC7\u5B57\u8282\u7801\u589E\u5F3A\u6280\u672F\u6765\u5B9E\u73B0\u7684\uFF0C\u4F1A\u5728\u6307\u5B9A\u7C7B\u7684\u65B9\u6CD5\u4E2D\u63D2\u5165\u4E00\u4E9B\u5207\u9762\u6765\u5B9E\u73B0\u6570\u636E\u7EDF\u8BA1\u548C\u89C2\u6D4B\uFF0C\u56E0\u6B64\u5728\u7EBF\u4E0A\u3001\u9884\u53D1\u4F7F\u7528\u65F6\uFF0C\u8BF7\u5C3D\u91CF\u660E\u786E\u9700\u8981\u89C2\u6D4B\u7684\u7C7B\u3001\u65B9\u6CD5\u4EE5\u53CA\u6761\u4EF6\uFF0C\u8BCA\u65AD\u7ED3\u675F\u8981\u6267\u884C "),o("code",null,"stop"),t(" \u6216\u5C06\u589E\u5F3A\u8FC7\u7684\u7C7B\u6267\u884C "),o("code",null,"reset"),t(" \u547D\u4EE4\u3002")])],-1),ft=t("monitor"),pt=t(" - \u65B9\u6CD5\u6267\u884C\u76D1\u63A7"),gt=t("stack"),bt=t(" - \u8F93\u51FA\u5F53\u524D\u65B9\u6CD5\u88AB\u8C03\u7528\u7684\u8C03\u7528\u8DEF\u5F84"),xt=t("trace"),vt=t(" - \u65B9\u6CD5\u5185\u90E8\u8C03\u7528\u8DEF\u5F84\uFF0C\u5E76\u8F93\u51FA\u65B9\u6CD5\u8DEF\u5F84\u4E0A\u7684\u6BCF\u4E2A\u8282\u70B9\u4E0A\u8017\u65F6"),jt=t("tt"),yt=t(" - \u65B9\u6CD5\u6267\u884C\u6570\u636E\u7684\u65F6\u7A7A\u96A7\u9053\uFF0C\u8BB0\u5F55\u4E0B\u6307\u5B9A\u65B9\u6CD5\u6BCF\u6B21\u8C03\u7528\u7684\u5165\u53C2\u548C\u8FD4\u56DE\u4FE1\u606F\uFF0C\u5E76\u80FD\u5BF9\u8FD9\u4E9B\u4E0D\u540C\u7684\u65F6\u95F4\u4E0B\u8C03\u7528\u8FDB\u884C\u89C2\u6D4B"),Vt=t("watch"),kt=t(" - \u65B9\u6CD5\u6267\u884C\u6570\u636E\u89C2\u6D4B"),wt=o("h2",{id:"profiler-\u706B\u7130\u56FE",tabindex:"-1"},[o("a",{class:"header-anchor",href:"#profiler-\u706B\u7130\u56FE","aria-hidden":"true"},"#"),t(" profiler/\u706B\u7130\u56FE")],-1),Jt=t("profiler"),At=t(" - \u4F7F\u7528"),Mt={href:"https://github.com/jvm-profiling-tools/async-profiler",target:"_blank",rel:"noopener noreferrer"},Nt=t("async-profiler"),Lt=t("\u5BF9\u5E94\u7528\u91C7\u6837\uFF0C\u751F\u6210\u706B\u7130\u56FE"),Rt=t("jfr"),Bt=t(" - \u52A8\u6001\u5F00\u542F\u5173\u95ED JFR \u8BB0\u5F55"),Ct=o("h2",{id:"\u9274\u6743",tabindex:"-1"},[o("a",{class:"header-anchor",href:"#\u9274\u6743","aria-hidden":"true"},"#"),t(" \u9274\u6743")],-1),Et=t("auth"),It=t(" - \u9274\u6743"),St=o("h2",{id:"options",tabindex:"-1"},[o("a",{class:"header-anchor",href:"#options","aria-hidden":"true"},"#"),t(" options")],-1),qt=t("options"),Ft=t(" - \u67E5\u770B\u6216\u8BBE\u7F6E Arthas \u5168\u5C40\u5F00\u5173"),Gt=o("h2",{id:"\u7BA1\u9053",tabindex:"-1"},[o("a",{class:"header-anchor",href:"#\u7BA1\u9053","aria-hidden":"true"},"#"),t(" \u7BA1\u9053")],-1),Pt=o("p",null,[t("Arthas \u652F\u6301\u4F7F\u7528\u7BA1\u9053\u5BF9\u4E0A\u8FF0\u547D\u4EE4\u7684\u7ED3\u679C\u8FDB\u884C\u8FDB\u4E00\u6B65\u7684\u5904\u7406\uFF0C\u5982"),o("code",null,"sm java.lang.String * | grep 'index'")],-1),Tt=t("grep"),zt=t(" - \u641C\u7D22\u6EE1\u8DB3\u6761\u4EF6\u7684\u7ED3\u679C"),Dt=o("li",null,"plaintext - \u5C06\u547D\u4EE4\u7684\u7ED3\u679C\u53BB\u9664 ANSI \u989C\u8272",-1),Ht=o("li",null,"wc - \u6309\u884C\u7EDF\u8BA1\u8F93\u51FA\u7ED3\u679C",-1),Kt=o("h2",{id:"\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1",tabindex:"-1"},[o("a",{class:"header-anchor",href:"#\u540E\u53F0\u5F02\u6B65\u4EFB\u52A1","aria-hidden":"true"},"#"),t(" \u540E\u53F0\u5F02\u6B65\u4EFB\u52A1")],-1),Ot=t("\u5F53\u7EBF\u4E0A\u51FA\u73B0\u5076\u53D1\u7684\u95EE\u9898\uFF0C\u6BD4\u5982\u9700\u8981 watch \u67D0\u4E2A\u6761\u4EF6\uFF0C\u800C\u8FD9\u4E2A\u6761\u4EF6\u4E00\u5929\u53EF\u80FD\u624D\u4F1A\u51FA\u73B0\u4E00\u6B21\u65F6\uFF0C\u5F02\u6B65\u540E\u53F0\u4EFB\u52A1\u5C31\u6D3E\u4E0A\u7528\u573A\u4E86\uFF0C\u8BE6\u60C5\u8BF7\u53C2\u8003"),Qt=t("\u8FD9\u91CC"),Ut=h('
    • \u4F7F\u7528 > \u5C06\u7ED3\u679C\u91CD\u5199\u5411\u5230\u65E5\u5FD7\u6587\u4EF6\uFF0C\u4F7F\u7528 & \u6307\u5B9A\u547D\u4EE4\u662F\u540E\u53F0\u8FD0\u884C\uFF0Csession \u65AD\u5F00\u4E0D\u5F71\u54CD\u4EFB\u52A1\u6267\u884C\uFF08\u751F\u547D\u5468\u671F\u9ED8\u8BA4\u4E3A 1 \u5929\uFF09
    • jobs - \u5217\u51FA\u6240\u6709 job
    • kill - \u5F3A\u5236\u7EC8\u6B62\u4EFB\u52A1
    • fg - \u5C06\u6682\u505C\u7684\u4EFB\u52A1\u62C9\u5230\u524D\u53F0\u6267\u884C
    • bg - \u5C06\u6682\u505C\u7684\u4EFB\u52A1\u653E\u5230\u540E\u53F0\u6267\u884C

    \u57FA\u7840\u547D\u4EE4

    ',2),Wt=t("base64"),Xt=t(" - base64 \u7F16\u7801\u8F6C\u6362\uFF0C\u548C linux \u91CC\u7684 base64 \u547D\u4EE4\u7C7B\u4F3C"),Yt=t("cat"),Zt=t(" - \u6253\u5370\u6587\u4EF6\u5185\u5BB9\uFF0C\u548C linux \u91CC\u7684 cat \u547D\u4EE4\u7C7B\u4F3C"),$t=t("cls"),to=t(" - \u6E05\u7A7A\u5F53\u524D\u5C4F\u5E55\u533A\u57DF"),oo=t("echo"),eo=t(" - \u6253\u5370\u53C2\u6570\uFF0C\u548C linux \u91CC\u7684 echo \u547D\u4EE4\u7C7B\u4F3C"),so=t("grep"),lo=t(" - \u5339\u914D\u67E5\u627E\uFF0C\u548C linux \u91CC\u7684 grep \u547D\u4EE4\u7C7B\u4F3C"),_o=t("help"),no=t(" - \u67E5\u770B\u547D\u4EE4\u5E2E\u52A9\u4FE1\u606F"),co=t("history"),io=t(" - \u6253\u5370\u547D\u4EE4\u5386\u53F2"),ho=t("keymap"),ao=t(" - Arthas \u5FEB\u6377\u952E\u5217\u8868\u53CA\u81EA\u5B9A\u4E49\u5FEB\u6377\u952E"),ro=t("pwd"),uo=t(" - \u8FD4\u56DE\u5F53\u524D\u7684\u5DE5\u4F5C\u76EE\u5F55\uFF0C\u548C linux \u547D\u4EE4\u7C7B\u4F3C"),mo=t("quit"),fo=t(" - \u9000\u51FA\u5F53\u524D Arthas \u5BA2\u6237\u7AEF\uFF0C\u5176\u4ED6 Arthas \u5BA2\u6237\u7AEF\u4E0D\u53D7\u5F71\u54CD"),po=t("reset"),go=t(" - \u91CD\u7F6E\u589E\u5F3A\u7C7B\uFF0C\u5C06\u88AB Arthas \u589E\u5F3A\u8FC7\u7684\u7C7B\u5168\u90E8\u8FD8\u539F\uFF0CArthas \u670D\u52A1\u7AEF\u5173\u95ED\u65F6\u4F1A\u91CD\u7F6E\u6240\u6709\u589E\u5F3A\u8FC7\u7684\u7C7B"),bo=t("session"),xo=t(" - \u67E5\u770B\u5F53\u524D\u4F1A\u8BDD\u7684\u4FE1\u606F"),vo=t("stop"),jo=t(" - \u5173\u95ED Arthas \u670D\u52A1\u7AEF\uFF0C\u6240\u6709 Arthas \u5BA2\u6237\u7AEF\u5168\u90E8\u9000\u51FA"),yo=t("tee"),Vo=t(" - \u590D\u5236\u6807\u51C6\u8F93\u5165\u5230\u6807\u51C6\u8F93\u51FA\u548C\u6307\u5B9A\u7684\u6587\u4EF6\uFF0C\u548C linux \u91CC\u7684 tee \u547D\u4EE4\u7C7B\u4F3C"),ko=t("version"),wo=t(" - \u8F93\u51FA\u5F53\u524D\u76EE\u6807 Java \u8FDB\u7A0B\u6240\u52A0\u8F7D\u7684 Arthas \u7248\u672C\u53F7");function Jo(Ao,Mo){const s=d("RouterLink"),_=d("ExternalLinkIcon");return c(),i("div",null,[r,u,o("ul",null,[o("li",null,[e(s,{to:"/doc/dashboard.html"},{default:l(()=>[m]),_:1}),f]),o("li",null,[e(s,{to:"/doc/getstatic.html"},{default:l(()=>[p]),_:1}),g]),o("li",null,[e(s,{to:"/doc/heapdump.html"},{default:l(()=>[b]),_:1}),x]),o("li",null,[e(s,{to:"/doc/jvm.html"},{default:l(()=>[v]),_:1}),j]),o("li",null,[e(s,{to:"/doc/logger.html"},{default:l(()=>[y]),_:1}),V]),o("li",null,[e(s,{to:"/doc/mbean.html"},{default:l(()=>[k]),_:1}),w]),o("li",null,[e(s,{to:"/doc/memory.html"},{default:l(()=>[J]),_:1}),A]),o("li",null,[e(s,{to:"/doc/ognl.html"},{default:l(()=>[M]),_:1}),N]),o("li",null,[e(s,{to:"/doc/perfcounter.html"},{default:l(()=>[L]),_:1}),R]),o("li",null,[e(s,{to:"/doc/sysenv.html"},{default:l(()=>[B]),_:1}),C]),o("li",null,[e(s,{to:"/doc/sysprop.html"},{default:l(()=>[E]),_:1}),I]),o("li",null,[e(s,{to:"/doc/thread.html"},{default:l(()=>[S]),_:1}),q]),o("li",null,[e(s,{to:"/doc/vmoption.html"},{default:l(()=>[F]),_:1}),G]),o("li",null,[e(s,{to:"/doc/vmtool.html"},{default:l(()=>[P]),_:1}),T])]),z,o("ul",null,[o("li",null,[e(s,{to:"/doc/classloader.html"},{default:l(()=>[D]),_:1}),H]),o("li",null,[e(s,{to:"/doc/dump.html"},{default:l(()=>[K]),_:1}),O]),o("li",null,[e(s,{to:"/doc/jad.html"},{default:l(()=>[Q]),_:1}),U]),o("li",null,[e(s,{to:"/doc/mc.html"},{default:l(()=>[W]),_:1}),X,Y,Z,$,tt]),o("li",null,[e(s,{to:"/doc/redefine.html"},{default:l(()=>[ot]),_:1}),et,st,lt]),o("li",null,[e(s,{to:"/doc/retransform.html"},{default:l(()=>[dt]),_:1}),_t,nt,ct]),o("li",null,[e(s,{to:"/doc/sc.html"},{default:l(()=>[it]),_:1}),ht]),o("li",null,[e(s,{to:"/doc/sm.html"},{default:l(()=>[at]),_:1}),rt])]),ut,mt,o("ul",null,[o("li",null,[e(s,{to:"/doc/monitor.html"},{default:l(()=>[ft]),_:1}),pt]),o("li",null,[e(s,{to:"/doc/stack.html"},{default:l(()=>[gt]),_:1}),bt]),o("li",null,[e(s,{to:"/doc/trace.html"},{default:l(()=>[xt]),_:1}),vt]),o("li",null,[e(s,{to:"/doc/tt.html"},{default:l(()=>[jt]),_:1}),yt]),o("li",null,[e(s,{to:"/doc/watch.html"},{default:l(()=>[Vt]),_:1}),kt])]),wt,o("ul",null,[o("li",null,[e(s,{to:"/doc/profiler.html"},{default:l(()=>[Jt]),_:1}),At,o("a",Mt,[Nt,e(_)]),Lt]),o("li",null,[e(s,{to:"/doc/jfr.html"},{default:l(()=>[Rt]),_:1}),Bt])]),Ct,o("ul",null,[o("li",null,[e(s,{to:"/doc/auth.html"},{default:l(()=>[Et]),_:1}),It])]),St,o("ul",null,[o("li",null,[e(s,{to:"/doc/options.html"},{default:l(()=>[qt]),_:1}),Ft])]),Gt,Pt,o("ul",null,[o("li",null,[e(s,{to:"/doc/grep.html"},{default:l(()=>[Tt]),_:1}),zt]),Dt,Ht]),Kt,o("p",null,[Ot,e(s,{to:"/doc/async.html"},{default:l(()=>[Qt]),_:1})]),Ut,o("ul",null,[o("li",null,[e(s,{to:"/doc/base64.html"},{default:l(()=>[Wt]),_:1}),Xt]),o("li",null,[e(s,{to:"/doc/cat.html"},{default:l(()=>[Yt]),_:1}),Zt]),o("li",null,[e(s,{to:"/doc/cls.html"},{default:l(()=>[$t]),_:1}),to]),o("li",null,[e(s,{to:"/doc/echo.html"},{default:l(()=>[oo]),_:1}),eo]),o("li",null,[e(s,{to:"/doc/grep.html"},{default:l(()=>[so]),_:1}),lo]),o("li",null,[e(s,{to:"/doc/help.html"},{default:l(()=>[_o]),_:1}),no]),o("li",null,[e(s,{to:"/doc/history.html"},{default:l(()=>[co]),_:1}),io]),o("li",null,[e(s,{to:"/doc/keymap.html"},{default:l(()=>[ho]),_:1}),ao]),o("li",null,[e(s,{to:"/doc/pwd.html"},{default:l(()=>[ro]),_:1}),uo]),o("li",null,[e(s,{to:"/doc/quit.html"},{default:l(()=>[mo]),_:1}),fo]),o("li",null,[e(s,{to:"/doc/reset.html"},{default:l(()=>[po]),_:1}),go]),o("li",null,[e(s,{to:"/doc/session.html"},{default:l(()=>[bo]),_:1}),xo]),o("li",null,[e(s,{to:"/doc/stop.html"},{default:l(()=>[vo]),_:1}),jo]),o("li",null,[e(s,{to:"/doc/tee.html"},{default:l(()=>[yo]),_:1}),Vo]),o("li",null,[e(s,{to:"/doc/version.html"},{default:l(()=>[ko]),_:1}),wo])])])}const Lo=n(a,[["render",Jo],["__file","commands.html.vue"]]);export{Lo as default}; diff --git a/3.x/assets/commands.html.ea43666c.js b/3.x/assets/commands.html.ea43666c.js new file mode 100644 index 00000000000..99f60bf2077 --- /dev/null +++ b/3.x/assets/commands.html.ea43666c.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-12153166","path":"/en/doc/commands.html","title":"All Commands","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"jvm - related","slug":"jvm-related","link":"#jvm-related","children":[]},{"level":2,"title":"class/classloader - related","slug":"class-classloader-related","link":"#class-classloader-related","children":[]},{"level":2,"title":"monitor/watch/trace - related","slug":"monitor-watch-trace-related","link":"#monitor-watch-trace-related","children":[]},{"level":2,"title":"profiler/flame graph","slug":"profiler-flame-graph","link":"#profiler-flame-graph","children":[]},{"level":2,"title":"authentication","slug":"authentication","link":"#authentication","children":[]},{"level":2,"title":"options","slug":"options","link":"#options","children":[]},{"level":2,"title":"pipe","slug":"pipe","link":"#pipe","children":[]},{"level":2,"title":"async jobs","slug":"async-jobs","link":"#async-jobs","children":[]},{"level":2,"title":"Basic Arthas Commands","slug":"basic-arthas-commands","link":"#basic-arthas-commands","children":[]}],"git":{"updatedTime":1661412829000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":2},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1},{"name":"longxu0509","email":"108991596+longxu0509@users.noreply.github.com","commits":1}]},"filePathRelative":"en/doc/commands.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/contact-us.html.6b2c4bcc.js b/3.x/assets/contact-us.html.6b2c4bcc.js new file mode 100644 index 00000000000..219d751d100 --- /dev/null +++ b/3.x/assets/contact-us.html.6b2c4bcc.js @@ -0,0 +1 @@ +import{_ as r,a as t,b as i,c,d as u}from"./qqgroup3_qr.f82e3fd0.js";import{_ as d,o as p,c as h,a as s,b as n,e as o,d as a,r as l}from"./app.4d248835.js";const _="/3.x/images/dingding_group_search.png",g={},m=s("h1",{id:"contact-us",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#contact-us","aria-hidden":"true"},"#"),o(" Contact Us")],-1),f=s("h3",{id:"issues",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#issues","aria-hidden":"true"},"#"),o(" Issues")],-1),b=o("Questions about how to use Arthas and opinions can be directly raised in issues\uFF1A "),k={href:"https://github.com/alibaba/arthas/issues",target:"_blank",rel:"noopener noreferrer"},x=o("https://github.com/alibaba/arthas/issues"),Q=a('

    DingDing Group

    • Arthas open source discussion Group\uFF1A 21965291 \uFF0CYou can join by searching for group number\u3002

    • Arthas open source discussion Group 2\uFF1A 30707824 \uFF0CYou can join by searching for group number\u3002

    • Arthas open source discussion Group 3\uFF1A 17605006847 , You can join by searching for group number\u3002

    Instructions for Installing DingTalk

    ',8),w=o("DingTalk can be downloaded from: "),A={href:"https://page.dingtalk.com/wow/dingtalk/act/en-download",target:"_blank",rel:"noopener noreferrer"},y=o("https://www.dingtalk.com/en"),G=a('

    After installing you can search for group number and join it.

    QQ Group

    Arthas open source discussion QQ group\uFF1A916328269

    Arthas open source discussion QQ group2\uFF1A854625984

    Arthas open source discussion QQ group 3\uFF1A 672077388

    ',8);function I(j,q){const e=l("ExternalLinkIcon");return p(),h("div",null,[m,f,s("p",null,[b,s("a",k,[x,n(e)])]),Q,s("p",null,[w,s("a",A,[y,n(e)])]),G])}const V=d(g,[["render",I],["__file","contact-us.html.vue"]]);export{V as default}; diff --git a/3.x/assets/contact-us.html.6d0fe4e6.js b/3.x/assets/contact-us.html.6d0fe4e6.js new file mode 100644 index 00000000000..f5fa882990d --- /dev/null +++ b/3.x/assets/contact-us.html.6d0fe4e6.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-3992adde","path":"/doc/contact-us.html","title":"\u8054\u7CFB\u6211\u4EEC","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"\u62DB\u8058","slug":"\u62DB\u8058","link":"#\u62DB\u8058","children":[]},{"level":3,"title":"Issues","slug":"issues","link":"#issues","children":[]},{"level":3,"title":"\u5FAE\u4FE1\u516C\u4F17\u53F7","slug":"\u5FAE\u4FE1\u516C\u4F17\u53F7","link":"#\u5FAE\u4FE1\u516C\u4F17\u53F7","children":[]},{"level":3,"title":"\u9489\u9489\u7FA4","slug":"\u9489\u9489\u7FA4","link":"#\u9489\u9489\u7FA4","children":[]},{"level":3,"title":"QQ \u7FA4","slug":"qq-\u7FA4","link":"#qq-\u7FA4","children":[]}],"git":{"updatedTime":1669871708000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":3},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":2},{"name":"Fatpandac","email":"i@fatpandac.com","commits":1}]},"filePathRelative":"doc/contact-us.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/contact-us.html.77c0699c.js b/3.x/assets/contact-us.html.77c0699c.js new file mode 100644 index 00000000000..73f5c865023 --- /dev/null +++ b/3.x/assets/contact-us.html.77c0699c.js @@ -0,0 +1 @@ +const n=JSON.parse('{"key":"v-4be7594a","path":"/en/doc/contact-us.html","title":"Contact Us","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"Issues","slug":"issues","link":"#issues","children":[]},{"level":3,"title":"DingDing Group","slug":"dingding-group","link":"#dingding-group","children":[]},{"level":3,"title":"Instructions for Installing DingTalk","slug":"instructions-for-installing-dingtalk","link":"#instructions-for-installing-dingtalk","children":[]},{"level":3,"title":"QQ Group","slug":"qq-group","link":"#qq-group","children":[]}],"git":{"updatedTime":1669871708000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":3},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1}]},"filePathRelative":"en/doc/contact-us.md","version":"3.7.3"}');export{n as data}; diff --git a/3.x/assets/contact-us.html.c4d19d8e.js b/3.x/assets/contact-us.html.c4d19d8e.js new file mode 100644 index 00000000000..183ae35ffea --- /dev/null +++ b/3.x/assets/contact-us.html.c4d19d8e.js @@ -0,0 +1 @@ +import{_ as r,a as i,b as o,c as n,d as h}from"./qqgroup3_qr.f82e3fd0.js";import{_ as c,o as l,c as _,a as e,b as t,e as a,d,r as p}from"./app.4d248835.js";const u="/3.x/images/qrcode_gongzhonghao.jpg",m="/3.x/images/qqgroup2_qr.jpg",g={},f=e("h1",{id:"\u8054\u7CFB\u6211\u4EEC",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u8054\u7CFB\u6211\u4EEC","aria-hidden":"true"},"#"),a(" \u8054\u7CFB\u6211\u4EEC")],-1),b=e("h3",{id:"\u62DB\u8058",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u62DB\u8058","aria-hidden":"true"},"#"),a(" \u62DB\u8058")],-1),x={href:"https://mp.weixin.qq.com/s/XQv8GnqGT3pzceVwzeiy-A",target:"_blank",rel:"noopener noreferrer"},q=a("\u671F\u5F85\u4F60\u7684\u52A0\u5165"),Q=e("h3",{id:"issues",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#issues","aria-hidden":"true"},"#"),a(" Issues")],-1),A=a("\u4F7F\u7528\u7591\u95EE\uFF0C\u610F\u89C1\u53EF\u4EE5\u76F4\u63A5\u5728 Issues \u91CC\u63D0\u51FA\uFF1A "),k={href:"https://github.com/alibaba/arthas/issues",target:"_blank",rel:"noopener noreferrer"},V=a("https://github.com/alibaba/arthas/issues"),v=d('

    \u5FAE\u4FE1\u516C\u4F17\u53F7

    \u6B22\u8FCE\u5173\u6CE8\u516C\u4F17\u53F7\uFF0C\u83B7\u53D6 Arthas \u9879\u76EE\u7684\u4FE1\u606F\u3001\u6E90\u7801\u5206\u6790\u3001\u6848\u4F8B\u5B9E\u8DF5\u3002

    \u9489\u9489\u7FA4

    • Arthas \u5F00\u6E90\u4EA4\u6D41\u9489\u9489\u7FA4\uFF1A 21965291 \uFF0C\u641C\u7D22\u7FA4\u53F7\u5373\u53EF\u52A0\u5165\u3002\uFF08\u5982\u679C\u6EE1\u4E86\u65E0\u6CD5\u52A0\u5165\uFF0C\u8BF7\u52A0 3 \u7FA4\uFF09

    • Arthas \u5F00\u6E90\u4EA4\u6D41\u9489\u9489\u7FA4 2\uFF1A 30707824 \uFF0C\u641C\u7D22\u7FA4\u53F7\u5373\u53EF\u52A0\u5165\u3002\uFF08\u5982\u679C\u6EE1\u4E86\u65E0\u6CD5\u52A0\u5165\uFF0C\u8BF7\u52A0 3 \u7FA4\uFF09

    • Arthas \u5F00\u6E90\u4EA4\u6D41\u9489\u9489\u7FA4 3\uFF1A 17605006847 \uFF0C\u641C\u7D22\u7FA4\u53F7\u5373\u53EF\u52A0\u5165\u3002

    QQ \u7FA4

    Arthas \u5F00\u6E90\u4EA4\u6D41 QQ \u7FA4\uFF1A 916328269 \uFF08\u5982\u679C\u6EE1\u4E86\u65E0\u6CD5\u52A0\u5165\uFF0C\u8BF7\u52A0 3 \u7FA4\uFF09

    Arthas \u5F00\u6E90\u4EA4\u6D41 QQ \u7FA4 2\uFF1A 854625984

    Arthas \u5F00\u6E90\u4EA4\u6D41 QQ \u7FA4 3\uFF1A 672077388

    ',17);function I(N,z){const s=p("ExternalLinkIcon");return l(),_("div",null,[f,b,e("ul",null,[e("li",null,[e("a",x,[q,t(s)])])]),Q,e("p",null,[A,e("a",k,[V,t(s)])]),v])}const j=c(g,[["render",I],["__file","contact-us.html.vue"]]);export{j as default}; diff --git a/3.x/assets/dashboard.eb1e1fee.js b/3.x/assets/dashboard.eb1e1fee.js new file mode 100644 index 00000000000..6bddc7d2e9e --- /dev/null +++ b/3.x/assets/dashboard.eb1e1fee.js @@ -0,0 +1 @@ +const s="/3.x/images/dashboard.png";export{s as _}; diff --git a/3.x/assets/dashboard.html.79bd7e0f.js b/3.x/assets/dashboard.html.79bd7e0f.js new file mode 100644 index 00000000000..12d3eb20fec --- /dev/null +++ b/3.x/assets/dashboard.html.79bd7e0f.js @@ -0,0 +1,33 @@ +import{_ as n}from"./dashboard.eb1e1fee.js";import{_ as s,o as r,c as d,a as e,b as i,e as a,d as l,r as o}from"./app.4d248835.js";const c={},h=e("h1",{id:"dashboard",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#dashboard","aria-hidden":"true"},"#"),a(" dashboard")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-dashboard",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"dashboard",-1),v=a(" online tutorial"),p=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"TIP"),e("p",null,[a("This is the real time statistics dashboard for the current system, press "),e("code",null,"Ctrl+C"),a(" to exit.")])],-1),b=a("When running in Apache Tomcat Alibaba edition, the dashboard will also present the real time statistics of the tomcat, including "),f={href:"https://en.wikipedia.org/wiki/Queries_per_second",target:"_blank",rel:"noopener noreferrer"},g=a("QPS"),_=a(", RT, error counts, and thread pool, etc."),T=l(`

    Options

    NameSpecification
    [i:]The interval (in ms) between two executions, default is 5000 ms.
    [n:]The number of times this command will be executed.

    Usage

    $ dashboard
    +ID   NAME                           GROUP           PRIORITY   STATE     %CPU      DELTA_TIME TIME      INTERRUPTE DAEMON
    +-1   C2 CompilerThread0             -               -1         -         1.55      0.077      0:8.684   false      true
    +53   Timer-for-arthas-dashboard-07b system          5          RUNNABLE  0.08      0.004      0:0.004   false      true
    +22   scheduling-1                   main            5          TIMED_WAI 0.06      0.003      0:0.287   false      false
    +-1   C1 CompilerThread0             -               -1         -         0.06      0.003      0:2.171   false      true
    +-1   VM Periodic Task Thread        -               -1         -         0.03      0.001      0:0.092   false      true
    +49   arthas-NettyHttpTelnetBootstra system          5          RUNNABLE  0.02      0.001      0:0.156   false      true
    +16   Catalina-utility-1             main            1          TIMED_WAI 0.0       0.000      0:0.029   false      false
    +-1   G1 Young RemSet Sampling       -               -1         -         0.0       0.000      0:0.019   false      true
    +17   Catalina-utility-2             main            1          WAITING   0.0       0.000      0:0.025   false      false
    +34   http-nio-8080-ClientPoller     main            5          RUNNABLE  0.0       0.000      0:0.016   false      true
    +23   http-nio-8080-BlockPoller      main            5          RUNNABLE  0.0       0.000      0:0.011   false      true
    +-1   VM Thread                      -               -1         -         0.0       0.000      0:0.032   false      true
    +-1   Service Thread                 -               -1         -         0.0       0.000      0:0.006   false      true
    +-1   GC Thread#5                    -               -1         -         0.0       0.000      0:0.043   false      true
    +Memory                     used     total    max      usage    GC
    +heap                       36M      70M      4096M    0.90%    gc.g1_young_generation.count   12
    +g1_eden_space              6M       18M      -1       33.33%                                  86
    +g1_old_gen                 30M      50M      4096M    0.74%    gc.g1_old_generation.count     0
    +g1_survivor_space          491K     2048K    -1       24.01%   gc.g1_old_generation.time(ms)  0
    +nonheap                    66M      69M      -1       96.56%
    +codeheap_'non-nmethods'    1M       2M       5M       22.39%
    +metaspace                  46M      47M      -1       98.01%
    +Runtime
    +os.name                                                        Mac OS X
    +os.version                                                     10.15.4
    +java.version                                                   15
    +java.home                                                      /Library/Java/JavaVirtualMachines/jdk-15.jdk/Contents/Home
    +systemload.average                                             10.68
    +processors                                                     8
    +uptime                                                         272s
    +

    Notes on column headers

    • ID: JVM thread ID, pls. note this ID is different from the nativeID in jstack
    • NAME: thread name
    • GROUP: thread group name
    • PRIORITY: thread priority, ranged from 1 to 10. The greater number, the higher priority
    • STATE: thread state
    • CPU%: the ratio of CPU usage for the thread. For example, the sampling interval is 1000ms, and the incremental cpu time of a thread is 100ms, then the cpu usage rate=100/1000=10%
    • DELTA_TIME: incremental CPU time of thread running after the last sampling in second format
    • TIME: total CPU time of the thread in minute:second format
    • INTERRUPTED: the thread interruption state
    • DAEMON: daemon thread or not

    JVM internal threads

    After Java 8, it is supported to obtain the CPU time of JVM internal threads. These threads only have the name and CPU time, without ID and status information (display ID is -1).

    JVM activities can be observed through internal threads, such as GC, JIT compilation, etc., to perceive the overall status of JVM.

    • When the JVM heap/metaspace space is insufficient or OOM, it can be seen that the CPU usage of the GC threads is significantly higher than other threads.
    • After executing commands such as trace/watch/tt/redefine, you can see that JIT threads activities become more frequent. Because the JIT compilation data related to this class is cleared when the JVM hot update the class bytecode, it needs to be recompiled.

    JVM internal threads include the following:

    • JIT compilation thread: such as C1 CompilerThread0, C2 CompilerThread0
    • GC thread: such as GC Thread0, G1 Young RemSet Sampling
    • Other internal threads: such asVM Periodic Task Thread, VM Thread, Service Thread

    Screenshot

    ',14);function M(I,x){const t=o("ExternalLinkIcon");return r(),d("div",null,[h,e("p",null,[e("a",u,[m,v,i(t)])]),p,e("p",null,[b,e("a",f,[g,i(t)]),_]),T])}const E=s(c,[["render",M],["__file","dashboard.html.vue"]]);export{E as default}; diff --git a/3.x/assets/dashboard.html.88ef26c5.js b/3.x/assets/dashboard.html.88ef26c5.js new file mode 100644 index 00000000000..55afcf597f3 --- /dev/null +++ b/3.x/assets/dashboard.html.88ef26c5.js @@ -0,0 +1,33 @@ +import{_ as n}from"./dashboard.eb1e1fee.js";import{_ as d,o as l,c as s,a as e,b as t,e as a,d as r,r as c}from"./app.4d248835.js";const o={},h=e("h1",{id:"dashboard",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#dashboard","aria-hidden":"true"},"#"),a(" dashboard")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-dashboard",target:"_blank",rel:"noopener noreferrer"},u=e("code",null,"dashboard",-1),v=a("\u5728\u7EBF\u6559\u7A0B"),b=r(`

    \u63D0\u793A

    \u5F53\u524D\u7CFB\u7EDF\u7684\u5B9E\u65F6\u6570\u636E\u9762\u677F\uFF0C\u6309 ctrl+c \u9000\u51FA\u3002

    \u5F53\u8FD0\u884C\u5728 Ali-tomcat \u65F6\uFF0C\u4F1A\u663E\u793A\u5F53\u524D tomcat \u7684\u5B9E\u65F6\u4FE1\u606F\uFF0C\u5982 HTTP \u8BF7\u6C42\u7684 qps, rt, \u9519\u8BEF\u6570, \u7EBF\u7A0B\u6C60\u4FE1\u606F\u7B49\u7B49\u3002

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    [i:]\u5237\u65B0\u5B9E\u65F6\u6570\u636E\u7684\u65F6\u95F4\u95F4\u9694 (ms)\uFF0C\u9ED8\u8BA4 5000ms
    [n:]\u5237\u65B0\u5B9E\u65F6\u6570\u636E\u7684\u6B21\u6570

    \u4F7F\u7528\u53C2\u8003

    $ dashboard
    +ID   NAME                           GROUP           PRIORITY   STATE     %CPU      DELTA_TIME TIME      INTERRUPTE DAEMON
    +-1   C2 CompilerThread0             -               -1         -         1.55      0.077      0:8.684   false      true
    +53   Timer-for-arthas-dashboard-07b system          5          RUNNABLE  0.08      0.004      0:0.004   false      true
    +22   scheduling-1                   main            5          TIMED_WAI 0.06      0.003      0:0.287   false      false
    +-1   C1 CompilerThread0             -               -1         -         0.06      0.003      0:2.171   false      true
    +-1   VM Periodic Task Thread        -               -1         -         0.03      0.001      0:0.092   false      true
    +49   arthas-NettyHttpTelnetBootstra system          5          RUNNABLE  0.02      0.001      0:0.156   false      true
    +16   Catalina-utility-1             main            1          TIMED_WAI 0.0       0.000      0:0.029   false      false
    +-1   G1 Young RemSet Sampling       -               -1         -         0.0       0.000      0:0.019   false      true
    +17   Catalina-utility-2             main            1          WAITING   0.0       0.000      0:0.025   false      false
    +34   http-nio-8080-ClientPoller     main            5          RUNNABLE  0.0       0.000      0:0.016   false      true
    +23   http-nio-8080-BlockPoller      main            5          RUNNABLE  0.0       0.000      0:0.011   false      true
    +-1   VM Thread                      -               -1         -         0.0       0.000      0:0.032   false      true
    +-1   Service Thread                 -               -1         -         0.0       0.000      0:0.006   false      true
    +-1   GC Thread#5                    -               -1         -         0.0       0.000      0:0.043   false      true
    +Memory                     used     total    max      usage    GC
    +heap                       36M      70M      4096M    0.90%    gc.g1_young_generation.count   12
    +g1_eden_space              6M       18M      -1       33.33%                                  86
    +g1_old_gen                 30M      50M      4096M    0.74%    gc.g1_old_generation.count     0
    +g1_survivor_space          491K     2048K    -1       24.01%   gc.g1_old_generation.time(ms)  0
    +nonheap                    66M      69M      -1       96.56%
    +codeheap_'non-nmethods'    1M       2M       5M       22.39%
    +metaspace                  46M      47M      -1       98.01%
    +Runtime
    +os.name                                                        Mac OS X
    +os.version                                                     10.15.4
    +java.version                                                   15
    +java.home                                                      /Library/Java/JavaVirtualMachines/jdk-15.jdk/Contents/Home
    +systemload.average                                             10.68
    +processors                                                     8
    +uptime                                                         272s
    +

    \u6570\u636E\u8BF4\u660E

    • ID: Java \u7EA7\u522B\u7684\u7EBF\u7A0B ID\uFF0C\u6CE8\u610F\u8FD9\u4E2A ID \u4E0D\u80FD\u8DDF jstack \u4E2D\u7684 nativeID \u4E00\u4E00\u5BF9\u5E94\u3002
    • NAME: \u7EBF\u7A0B\u540D
    • GROUP: \u7EBF\u7A0B\u7EC4\u540D
    • PRIORITY: \u7EBF\u7A0B\u4F18\u5148\u7EA7, 1~10 \u4E4B\u95F4\u7684\u6570\u5B57\uFF0C\u8D8A\u5927\u8868\u793A\u4F18\u5148\u7EA7\u8D8A\u9AD8
    • STATE: \u7EBF\u7A0B\u7684\u72B6\u6001
    • CPU%: \u7EBF\u7A0B\u7684 cpu \u4F7F\u7528\u7387\u3002\u6BD4\u5982\u91C7\u6837\u95F4\u9694 1000ms\uFF0C\u67D0\u4E2A\u7EBF\u7A0B\u7684\u589E\u91CF cpu \u65F6\u95F4\u4E3A 100ms\uFF0C\u5219 cpu \u4F7F\u7528\u7387=100/1000=10%
    • DELTA_TIME: \u4E0A\u6B21\u91C7\u6837\u4E4B\u540E\u7EBF\u7A0B\u8FD0\u884C\u589E\u91CF CPU \u65F6\u95F4\uFF0C\u6570\u636E\u683C\u5F0F\u4E3A\u79D2
    • TIME: \u7EBF\u7A0B\u8FD0\u884C\u603B CPU \u65F6\u95F4\uFF0C\u6570\u636E\u683C\u5F0F\u4E3A\u5206:\u79D2
    • INTERRUPTED: \u7EBF\u7A0B\u5F53\u524D\u7684\u4E2D\u65AD\u4F4D\u72B6\u6001
    • DAEMON: \u662F\u5426\u662F daemon \u7EBF\u7A0B

    JVM \u5185\u90E8\u7EBF\u7A0B

    Java 8 \u4E4B\u540E\u652F\u6301\u83B7\u53D6 JVM \u5185\u90E8\u7EBF\u7A0B CPU \u65F6\u95F4\uFF0C\u8FD9\u4E9B\u7EBF\u7A0B\u53EA\u6709\u540D\u79F0\u548C CPU \u65F6\u95F4\uFF0C\u6CA1\u6709 ID \u53CA\u72B6\u6001\u7B49\u4FE1\u606F\uFF08\u663E\u793A ID \u4E3A-1\uFF09\u3002 \u901A\u8FC7\u5185\u90E8\u7EBF\u7A0B\u53EF\u4EE5\u89C2\u6D4B\u5230 JVM \u6D3B\u52A8\uFF0C\u5982 GC\u3001JIT \u7F16\u8BD1\u7B49\u5360\u7528 CPU \u60C5\u51B5\uFF0C\u65B9\u4FBF\u4E86\u89E3 JVM \u6574\u4F53\u8FD0\u884C\u72B6\u51B5\u3002

    • \u5F53 JVM \u5806(heap)/\u5143\u6570\u636E(metaspace)\u7A7A\u95F4\u4E0D\u8DB3\u6216 OOM \u65F6\uFF0C\u53EF\u4EE5\u770B\u5230 GC \u7EBF\u7A0B\u7684 CPU \u5360\u7528\u7387\u660E\u663E\u9AD8\u4E8E\u5176\u4ED6\u7684\u7EBF\u7A0B\u3002
    • \u5F53\u6267\u884Ctrace/watch/tt/redefine\u7B49\u547D\u4EE4\u540E\uFF0C\u53EF\u4EE5\u770B\u5230 JIT \u7EBF\u7A0B\u6D3B\u52A8\u53D8\u5F97\u66F4\u9891\u7E41\u3002\u56E0\u4E3A JVM \u70ED\u66F4\u65B0 class \u5B57\u8282\u7801\u65F6\u6E05\u9664\u4E86\u6B64 class \u76F8\u5173\u7684 JIT \u7F16\u8BD1\u7ED3\u679C\uFF0C\u9700\u8981\u91CD\u65B0\u7F16\u8BD1\u3002

    JVM \u5185\u90E8\u7EBF\u7A0B\u5305\u62EC\u4E0B\u9762\u51E0\u79CD\uFF1A

    • JIT \u7F16\u8BD1\u7EBF\u7A0B: \u5982 C1 CompilerThread0, C2 CompilerThread0
    • GC \u7EBF\u7A0B: \u5982GC Thread0, G1 Young RemSet Sampling
    • \u5176\u5B83\u5185\u90E8\u7EBF\u7A0B: \u5982VM Periodic Task Thread, VM Thread, Service Thread

    \u622A\u56FE\u5C55\u793A

    ',15);function p(_,T){const i=c("ExternalLinkIcon");return l(),s("div",null,[h,e("p",null,[e("a",m,[u,v,t(i)])]),b])}const g=d(o,[["render",p],["__file","dashboard.html.vue"]]);export{g as default}; diff --git a/3.x/assets/dashboard.html.c7a97553.js b/3.x/assets/dashboard.html.c7a97553.js new file mode 100644 index 00000000000..4ccda42599c --- /dev/null +++ b/3.x/assets/dashboard.html.c7a97553.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-0d1e3f35","path":"/doc/dashboard.html","title":"dashboard","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]},{"level":2,"title":"\u6570\u636E\u8BF4\u660E","slug":"\u6570\u636E\u8BF4\u660E","link":"#\u6570\u636E\u8BF4\u660E","children":[{"level":3,"title":"JVM \u5185\u90E8\u7EBF\u7A0B","slug":"jvm-\u5185\u90E8\u7EBF\u7A0B","link":"#jvm-\u5185\u90E8\u7EBF\u7A0B","children":[]}]},{"level":2,"title":"\u622A\u56FE\u5C55\u793A","slug":"\u622A\u56FE\u5C55\u793A","link":"#\u622A\u56FE\u5C55\u793A","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/dashboard.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/dashboard.html.f56e6c96.js b/3.x/assets/dashboard.html.f56e6c96.js new file mode 100644 index 00000000000..36baf89528d --- /dev/null +++ b/3.x/assets/dashboard.html.f56e6c96.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-79107649","path":"/en/doc/dashboard.html","title":"dashboard","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]},{"level":2,"title":"Notes on column headers","slug":"notes-on-column-headers","link":"#notes-on-column-headers","children":[{"level":3,"title":"JVM internal threads","slug":"jvm-internal-threads","link":"#jvm-internal-threads","children":[]}]},{"level":2,"title":"Screenshot","slug":"screenshot","link":"#screenshot","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/dashboard.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/docker.html.030cca04.js b/3.x/assets/docker.html.030cca04.js new file mode 100644 index 00000000000..d1c37ec1397 --- /dev/null +++ b/3.x/assets/docker.html.030cca04.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-02361049","path":"/doc/docker.html","title":"Docker","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u5728 Docker \u91CC\u4F7F\u7528 JDK","slug":"\u5728-docker-\u91CC\u4F7F\u7528-jdk","link":"#\u5728-docker-\u91CC\u4F7F\u7528-jdk","children":[{"level":3,"title":"\u4F7F\u7528\u516C\u5F00\u7684 JDK \u955C\u50CF","slug":"\u4F7F\u7528\u516C\u5F00\u7684-jdk-\u955C\u50CF","link":"#\u4F7F\u7528\u516C\u5F00\u7684-jdk-\u955C\u50CF","children":[]},{"level":3,"title":"\u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5","slug":"\u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5","link":"#\u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5","children":[]}]},{"level":2,"title":"\u901A\u8FC7 Docker \u5FEB\u901F\u5165\u95E8","slug":"\u901A\u8FC7-docker-\u5FEB\u901F\u5165\u95E8","link":"#\u901A\u8FC7-docker-\u5FEB\u901F\u5165\u95E8","children":[]},{"level":2,"title":"\u8BCA\u65AD Docker \u91CC\u7684 Java \u8FDB\u7A0B","slug":"\u8BCA\u65AD-docker-\u91CC\u7684-java-\u8FDB\u7A0B","link":"#\u8BCA\u65AD-docker-\u91CC\u7684-java-\u8FDB\u7A0B","children":[]},{"level":2,"title":"\u8BCA\u65AD k8s \u91CC\u5BB9\u5668\u91CC\u7684 Java \u8FDB\u7A0B","slug":"\u8BCA\u65AD-k8s-\u91CC\u5BB9\u5668\u91CC\u7684-java-\u8FDB\u7A0B","link":"#\u8BCA\u65AD-k8s-\u91CC\u5BB9\u5668\u91CC\u7684-java-\u8FDB\u7A0B","children":[]},{"level":2,"title":"\u628A Arthas \u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC","slug":"\u628A-arthas-\u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC","link":"#\u628A-arthas-\u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/docker.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/docker.html.77dd787e.js b/3.x/assets/docker.html.77dd787e.js new file mode 100644 index 00000000000..e467b1ff82a --- /dev/null +++ b/3.x/assets/docker.html.77dd787e.js @@ -0,0 +1,50 @@ +import{_ as n,o as e,c as t,a,b as i,d as o,e as p,r as l}from"./app.4d248835.js";const r={},c=o(`

    Docker

    Use JDK in Docker

    Many times, the problem that arthas can't work with the application in docker is because the docker does not install JDK, but installs JRE. If only JRE is installed, many JAVA command line tools and class libraries will be missing, and Arthas will not work properly. Here are two common ways to use JDK in Docker.

    Use public JDK image

    • https://hub.docker.com/_/openjdk/

    such as:

    FROM openjdk:8-jdk
    +

    or:

    FROM openjdk:8-jdk-alpine
    +

    Install via package management software

    such as:

    # Install OpenJDK-8
    +RUN apt-get update && \\
    +    apt-get install -y openjdk-8-jdk && \\
    +    apt-get install -y ant && \\
    +    apt-get clean;
    +
    +# Fix certificate issues
    +RUN apt-get update && \\
    +    apt-get install ca-certificates-java && \\
    +    apt-get clean && \\
    +    update-ca-certificates -f;
    +
    +# Setup JAVA_HOME - useful for docker commandline
    +ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
    +RUN export JAVA_HOME
    +

    or:

    RUN yum install -y \\
    +   java-1.8.0-openjdk \\
    +   java-1.8.0-openjdk-devel
    +
    +ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/
    +RUN export JAVA_HOME
    +

    Quick start with Docker

    1. Delete the existing math-game docker container (not necessary)

      $ docker stop math-game || true && docker rm math-game || true
      +
    2. Start math-game

      $ docker run --name math-game -it hengyunabc/arthas:latest /bin/sh -c "java -jar /opt/arthas/math-game.jar"
      +
    3. Start arthas-boot3 for diagnosis

      $ docker exec -it math-game /bin/sh -c "java -jar /opt/arthas/arthas-boot3.jar"
      +* [1]: 9 jar
      +
      +[INFO] arthas home: /opt/arthas
      +[INFO] Try to attach process 9
      +[INFO] Attach process 9 success.
      +[INFO] arthas-client connect 127.0.0.1 3658
      +,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
      +/  O  \\ |  .--. ''--.  .--'|  '--'  | /  O  \\ '   .-'
      +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |\`.  \`-.
      +|  | |  ||  |\\  \\    |  |   |  |  |  ||  | |  |.-'    |
      +\`--' \`--'\`--' '--'   \`--'   \`--'  \`--'\`--' \`--'\`-----'
      +
      +
      +wiki: https://arthas.aliyun.com/3.x/doc
      +version: 3.0.5
      +pid: 9
      +time: 2018-12-18 11:30:36
      +

    Diagnose the Java process in Docker

    docker exec -it  \${containerId} /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot3.jar && java -jar arthas-boot3.jar"
    +

    Diagnose the Java process in the container in k8s

    kubectl exec -it \${pod} --container \${containerId} -- /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot3.jar && java -jar arthas-boot3.jar"
    +

    Install Arthas into the base Docker image

    It's easy to install Arthas into your Docker image.

    FROM openjdk:8-jdk-alpine
    +
    +# copy arthas
    +COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
    +

    If you want to specify a version, you can view all the tags:

    `,24),d={href:"https://hub.docker.com/r/hengyunabc/arthas/tags",target:"_blank",rel:"noopener noreferrer"},u=p("https://hub.docker.com/r/hengyunabc/arthas/tags");function k(v,m){const s=l("ExternalLinkIcon");return e(),t("div",null,[c,a("p",null,[a("a",d,[u,i(s)])])])}const h=n(r,[["render",k],["__file","docker.html.vue"]]);export{h as default}; diff --git a/3.x/assets/docker.html.8430667f.js b/3.x/assets/docker.html.8430667f.js new file mode 100644 index 00000000000..3f138b861c3 --- /dev/null +++ b/3.x/assets/docker.html.8430667f.js @@ -0,0 +1,50 @@ +import{_ as n,o as e,c as t,a,b as p,d as i,e as l,r as o}from"./app.4d248835.js";const r={},c=i(`

    Docker

    \u5728 Docker \u91CC\u4F7F\u7528 JDK

    \u5F88\u591A\u65F6\u5019\uFF0C\u5E94\u7528\u5728 docker \u91CC\u51FA\u73B0 arthas \u65E0\u6CD5\u5DE5\u4F5C\u7684\u95EE\u9898\uFF0C\u662F\u56E0\u4E3A\u5E94\u7528\u6CA1\u6709\u5B89\u88C5 JDK \uFF0C\u800C\u662F\u5B89\u88C5\u4E86 JRE \u3002\u5982\u679C\u53EA\u5B89\u88C5\u4E86 JRE\uFF0C\u5219\u4F1A\u7F3A\u5C11\u5F88\u591A JAVA \u7684\u547D\u4EE4\u884C\u5DE5\u5177\u548C\u7C7B\u5E93\uFF0CArthas \u4E5F\u6CA1\u529E\u6CD5\u6B63\u5E38\u5DE5\u4F5C\u3002\u4E0B\u9762\u4ECB\u7ECD\u4E24\u79CD\u5E38\u89C1\u7684\u5728 Docker \u91CC\u4F7F\u7528 JDK \u7684\u65B9\u5F0F\u3002

    \u4F7F\u7528\u516C\u5F00\u7684 JDK \u955C\u50CF

    • https://hub.docker.com/_/openjdk/

    \u6BD4\u5982\uFF1A

    FROM openjdk:8-jdk
    +

    \u6216\u8005\uFF1A

    FROM openjdk:8-jdk-alpine
    +

    \u901A\u8FC7\u5305\u7BA1\u7406\u8F6F\u4EF6\u6765\u5B89\u88C5

    \u6BD4\u5982\uFF1A

    # Install OpenJDK-8
    +RUN apt-get update && \\
    +    apt-get install -y openjdk-8-jdk && \\
    +    apt-get install -y ant && \\
    +    apt-get clean;
    +
    +# Fix certificate issues
    +RUN apt-get update && \\
    +    apt-get install ca-certificates-java && \\
    +    apt-get clean && \\
    +    update-ca-certificates -f;
    +
    +# Setup JAVA_HOME -- useful for docker commandline
    +ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
    +RUN export JAVA_HOME
    +

    \u6216\u8005\uFF1A

    RUN yum install -y \\
    +   java-1.8.0-openjdk \\
    +   java-1.8.0-openjdk-devel
    +
    +ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/
    +RUN export JAVA_HOME
    +

    \u901A\u8FC7 Docker \u5FEB\u901F\u5165\u95E8

    1. \u5220\u9664\u672C\u5730\u5DF2\u6709\u7684math-game docker container\uFF08\u975E\u5FC5\u8981\uFF09

      $ docker stop math-game || true && docker rm math-game || true
      +
    2. \u542F\u52A8math-game

      $ docker run --name math-game -it hengyunabc/arthas:latest /bin/sh -c "java -jar /opt/arthas/math-game.jar"
      +
    3. \u542F\u52A8arthas-boot3\u6765\u8FDB\u884C\u8BCA\u65AD

      $ docker exec -it math-game /bin/sh -c "java -jar /opt/arthas/arthas-boot3.jar"
      +* [1]: 9 jar
      +
      +[INFO] arthas home: /opt/arthas
      +[INFO] Try to attach process 9
      +[INFO] Attach process 9 success.
      +[INFO] arthas-client connect 127.0.0.1 3658
      +,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
      +/  O  \\ |  .--. ''--.  .--'|  '--'  | /  O  \\ '   .-'
      +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |\`.  \`-.
      +|  | |  ||  |\\  \\    |  |   |  |  |  ||  | |  |.-'    |
      +\`--' \`--'\`--' '--'   \`--'   \`--'  \`--'\`--' \`--'\`-----'
      +
      +
      +wiki: https://arthas.aliyun.com/3.x/doc
      +version: 3.0.5
      +pid: 9
      +time: 2018-12-18 11:30:36
      +

    \u8BCA\u65AD Docker \u91CC\u7684 Java \u8FDB\u7A0B

    docker exec -it  \${containerId} /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot3.jar && java -jar arthas-boot3.jar"
    +

    \u8BCA\u65AD k8s \u91CC\u5BB9\u5668\u91CC\u7684 Java \u8FDB\u7A0B

    kubectl exec -it \${pod} --container \${containerId} -- /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot3.jar && java -jar arthas-boot3.jar"
    +

    \u628A Arthas \u5B89\u88C5\u5230\u57FA\u7840\u955C\u50CF\u91CC

    \u53EF\u4EE5\u5F88\u7B80\u5355\u628A Arthas \u5B89\u88C5\u5230\u4F60\u7684 Docker \u955C\u50CF\u91CC\u3002

    FROM openjdk:8-jdk-alpine
    +
    +# copy arthas
    +COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
    +

    \u5982\u679C\u60F3\u6307\u5B9A\u7248\u672C\uFF0C\u53EF\u4EE5\u67E5\u770B\u5177\u4F53\u7684 tags\uFF1A

    `,24),d={href:"https://hub.docker.com/r/hengyunabc/arthas/tags",target:"_blank",rel:"noopener noreferrer"},u=l("https://hub.docker.com/r/hengyunabc/arthas/tags");function v(k,m){const s=o("ExternalLinkIcon");return e(),t("div",null,[c,a("p",null,[a("a",d,[u,p(s)])])])}const h=n(r,[["render",v],["__file","docker.html.vue"]]);export{h as default}; diff --git a/3.x/assets/docker.html.a7fd435f.js b/3.x/assets/docker.html.a7fd435f.js new file mode 100644 index 00000000000..ec704405048 --- /dev/null +++ b/3.x/assets/docker.html.a7fd435f.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-682151b5","path":"/en/doc/docker.html","title":"Docker","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Use JDK in Docker","slug":"use-jdk-in-docker","link":"#use-jdk-in-docker","children":[{"level":3,"title":"Use public JDK image","slug":"use-public-jdk-image","link":"#use-public-jdk-image","children":[]},{"level":3,"title":"Install via package management software","slug":"install-via-package-management-software","link":"#install-via-package-management-software","children":[]}]},{"level":2,"title":"Quick start with Docker","slug":"quick-start-with-docker","link":"#quick-start-with-docker","children":[]},{"level":2,"title":"Diagnose the Java process in Docker","slug":"diagnose-the-java-process-in-docker","link":"#diagnose-the-java-process-in-docker","children":[]},{"level":2,"title":"Diagnose the Java process in the container in k8s","slug":"diagnose-the-java-process-in-the-container-in-k8s","link":"#diagnose-the-java-process-in-the-container-in-k8s","children":[]},{"level":2,"title":"Install Arthas into the base Docker image","slug":"install-arthas-into-the-base-docker-image","link":"#install-arthas-into-the-base-docker-image","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/docker.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/download.html.0aec292a.js b/3.x/assets/download.html.0aec292a.js new file mode 100644 index 00000000000..311f3810e42 --- /dev/null +++ b/3.x/assets/download.html.0aec292a.js @@ -0,0 +1,5 @@ +import{_ as n,o as r,c as d,a,b as o,d as e,e as i,r as t}from"./app.4d248835.js";const l={},c=e('

    Download

    Download full package

    Download from Github Releases

    ',3),h={href:"https://github.com/alibaba/arthas/releases",target:"_blank",rel:"noopener noreferrer"},u=i("https://github.com/alibaba/arthas/releases"),b=e(`

    Use as3.sh

    Download and unzip, find as3.sh in the directory. Start it in bash:

    ./as3.sh
    +

    Print usage:

    ./as3.sh -h
    +

    Use arthas-boot3.jar

    Download and unzip, find arthas-boot3.jar in the directory. Start with java command:

    java -jar arthas-boot3.jar
    +

    Print usage:

    java -jar arthas-boot3.jar -h
    +
    `,10);function p(m,v){const s=t("ExternalLinkIcon");return r(),d("div",null,[c,a("p",null,[a("a",h,[u,o(s)])]),b])}const f=n(l,[["render",p],["__file","download.html.vue"]]);export{f as default}; diff --git a/3.x/assets/download.html.127d6cde.js b/3.x/assets/download.html.127d6cde.js new file mode 100644 index 00000000000..113fc542768 --- /dev/null +++ b/3.x/assets/download.html.127d6cde.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-8d912d66","path":"/en/doc/download.html","title":"Download","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Download full package","slug":"download-full-package","link":"#download-full-package","children":[{"level":3,"title":"Download from Github Releases","slug":"download-from-github-releases","link":"#download-from-github-releases","children":[]},{"level":3,"title":"Use as3.sh","slug":"use-as3-sh","link":"#use-as3-sh","children":[]},{"level":3,"title":"Use arthas-boot3.jar","slug":"use-arthas-boot3-jar","link":"#use-arthas-boot3-jar","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/download.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/download.html.5cdfc6bd.js b/3.x/assets/download.html.5cdfc6bd.js new file mode 100644 index 00000000000..879313c7287 --- /dev/null +++ b/3.x/assets/download.html.5cdfc6bd.js @@ -0,0 +1,5 @@ +import{_ as n,o as r,c as d,a,b as i,d as e,e as t,r as o}from"./app.4d248835.js";const c={},h=e('

    \u4E0B\u8F7D

    \u4E0B\u8F7D\u5168\u91CF\u5305

    \u4ECE Github Releases \u9875\u4E0B\u8F7D

    ',3),l={href:"https://github.com/alibaba/arthas/releases",target:"_blank",rel:"noopener noreferrer"},b=t("https://github.com/alibaba/arthas/releases"),p=e(`

    \u7528 as3.sh \u542F\u52A8

    \u89E3\u538B\u540E\uFF0C\u5728\u6587\u4EF6\u5939\u91CC\u6709as3.sh\uFF0C\u76F4\u63A5\u7528./as3.sh\u7684\u65B9\u5F0F\u542F\u52A8\uFF1A

    ./as3.sh
    +

    \u6253\u5370\u5E2E\u52A9\u4FE1\u606F\uFF1A

    ./as3.sh -h
    +

    \u7528 arthas-boot3 \u542F\u52A8

    \u6216\u8005\u5728\u89E3\u538B\u540E\uFF0C\u5728\u6587\u4EF6\u5939\u91CC\u6709arthas-boot3.jar\uFF0C\u76F4\u63A5\u7528java -jar\u7684\u65B9\u5F0F\u542F\u52A8\uFF1A

    java -jar arthas-boot3.jar
    +

    \u6253\u5370\u5E2E\u52A9\u4FE1\u606F\uFF1A

    java -jar arthas-boot3.jar -h
    +
    `,10);function u(v,m){const s=o("ExternalLinkIcon");return r(),d("div",null,[h,a("p",null,[a("a",l,[b,i(s)])]),p])}const g=n(c,[["render",u],["__file","download.html.vue"]]);export{g as default}; diff --git a/3.x/assets/download.html.b853bfd7.js b/3.x/assets/download.html.b853bfd7.js new file mode 100644 index 00000000000..9586e833c8d --- /dev/null +++ b/3.x/assets/download.html.b853bfd7.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-2116d2e1","path":"/doc/download.html","title":"\u4E0B\u8F7D","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4E0B\u8F7D\u5168\u91CF\u5305","slug":"\u4E0B\u8F7D\u5168\u91CF\u5305","link":"#\u4E0B\u8F7D\u5168\u91CF\u5305","children":[{"level":3,"title":"\u4ECE Github Releases \u9875\u4E0B\u8F7D","slug":"\u4ECE-github-releases-\u9875\u4E0B\u8F7D","link":"#\u4ECE-github-releases-\u9875\u4E0B\u8F7D","children":[]},{"level":3,"title":"\u7528 as3.sh \u542F\u52A8","slug":"\u7528-as3-sh-\u542F\u52A8","link":"#\u7528-as3-sh-\u542F\u52A8","children":[]},{"level":3,"title":"\u7528 arthas-boot3 \u542F\u52A8","slug":"\u7528-arthas-boot3-\u542F\u52A8","link":"#\u7528-arthas-boot3-\u542F\u52A8","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/download.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/dump.html.148d41dc.js b/3.x/assets/dump.html.148d41dc.js new file mode 100644 index 00000000000..01940f66790 --- /dev/null +++ b/3.x/assets/dump.html.148d41dc.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-471b4d3e","path":"/en/doc/dump.html","title":"dump","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":3},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/dump.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/dump.html.3f441711.js b/3.x/assets/dump.html.3f441711.js new file mode 100644 index 00000000000..c5dab8ec10a --- /dev/null +++ b/3.x/assets/dump.html.3f441711.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-1fe4a616","path":"/doc/dump.html","title":"dump","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":3},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/dump.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/dump.html.a9afcd2b.js b/3.x/assets/dump.html.a9afcd2b.js new file mode 100644 index 00000000000..aaa111bd36e --- /dev/null +++ b/3.x/assets/dump.html.a9afcd2b.js @@ -0,0 +1,20 @@ +import{_ as c,o,c as d,a as e,b as a,w as t,e as s,d as r,r as l}from"./app.4d248835.js";const u={},p=e("h1",{id:"dump",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#dump","aria-hidden":"true"},"#"),s(" dump")],-1),h={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=en&id=command-dump",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"dump",-1),v=s(" online tutorial"),b=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"TIP"),e("p",null,"Dump the bytecode for the particular classes to the specified directory.")],-1),g=s("The dump command is used to dump the bytecode of classes actually running in the JVM to a specified directory. It is suitable for bulk downloading the bytecode of classes in a specific package directory. If you need to decompile a single class or view class information in real-time, you can refer to "),_=s("jad"),f=s("."),k=e("h2",{id:"options",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#options","aria-hidden":"true"},"#"),s(" Options")],-1),L=e("thead",null,[e("tr",null,[e("th",{style:{"text-align":"right"}},"Name"),e("th",{style:{"text-align":"left"}},"Specification")])],-1),y=e("tr",null,[e("td",{style:{"text-align":"right"}},[e("em",null,"class-pattern")]),e("td",{style:{"text-align":"left"}},"class name pattern")],-1),x=e("td",{style:{"text-align":"right"}},[e("code",null,"[c:]")],-1),C={style:{"text-align":"left"}},A=s("hashcode of the "),S=s("class loader"),w=s(" that loaded the target class"),O=e("tr",null,[e("td",{style:{"text-align":"right"}},[e("code",null,"[classLoaderClass:]")]),e("td",{style:{"text-align":"left"}},"The class name of the ClassLoader that executes the expression.")],-1),E=e("tr",null,[e("td",{style:{"text-align":"right"}},[e("code",null,"[d:]")]),e("td",{style:{"text-align":"left"}},"set the destination directory for class files")],-1),$=e("tr",null,[e("td",{style:{"text-align":"right"}},[e("code",null,"[E]")]),e("td",{style:{"text-align":"left"}},"turn on regex match, the default behavior is wild card match")],-1),j=r(`

    Usage

    $ dump java.lang.String
    + HASHCODE  CLASSLOADER  LOCATION
    + null                   /Users/admin/logs/arthas/classdump/java/lang/String.class
    +Affect(row-cnt:1) cost in 119 ms.
    +
    $ dump demo.*
    + HASHCODE  CLASSLOADER                                    LOCATION
    + 3d4eac69  +-sun.misc.Launcher$AppClassLoader@3d4eac69    /Users/admin/logs/arthas/classdump/sun.misc.Launcher$AppClassLoader-3d4eac69/demo/MathGame.class
    +             +-sun.misc.Launcher$ExtClassLoader@66350f69
    +Affect(row-cnt:1) cost in 39 ms.
    +
    $ dump -d /tmp/output java.lang.String
    + HASHCODE  CLASSLOADER  LOCATION
    + null                   /tmp/output/java/lang/String.class
    +Affect(row-cnt:1) cost in 138 ms.
    +
    • Specify classLoader

    Note that the hashcode changes, you need to check the current ClassLoader information first, and extract the hashcode corresponding to the ClassLoader.

    if you use-c, you have to manually type hashcode by -c <hashcode>.

    $ dump -c 3d4eac69 demo.*
    +

    For classloader with only one instance, it can be specified by --classLoaderClass using class name, which is more convenient to use.

    $ dump --classLoaderClass sun.misc.Launcher$AppClassLoader demo.*
    + HASHCODE  CLASSLOADER                                    LOCATION
    + 3d4eac69  +-sun.misc.Launcher$AppClassLoader@3d4eac69    /Users/admin/logs/arthas/classdump/sun.misc.Launcher$AppClassLoader-3d4eac69/demo/MathGame.class
    +             +-sun.misc.Launcher$ExtClassLoader@66350f69
    +Affect(row-cnt:1) cost in 39 ms.
    +
    • PS: Here the classLoaderClass in java 8 is sun.misc.Launcher$AppClassLoader, while in java 11 it's jdk.internal.loader.ClassLoaders$AppClassLoader. Currently killercoda using java 11.

    The value of --classloaderclass is the class name of classloader. It can only work when it matches a unique classloader instance. The purpose is to facilitate the input of general commands. However, -c <hashcode> is dynamic.

    `,12);function H(I,N){const i=l("ExternalLinkIcon"),n=l("RouterLink");return o(),d("div",null,[p,e("p",null,[e("a",h,[m,v,a(i)])]),b,e("p",null,[g,a(n,{to:"/en/doc/jad.html"},{default:t(()=>[_]),_:1}),f]),k,e("table",null,[L,e("tbody",null,[y,e("tr",null,[x,e("td",C,[A,a(n,{to:"/en/doc/classloader.html"},{default:t(()=>[S]),_:1}),w])]),O,E,$])]),j])}const D=c(u,[["render",H],["__file","dump.html.vue"]]);export{D as default}; diff --git a/3.x/assets/dump.html.aa1d0523.js b/3.x/assets/dump.html.aa1d0523.js new file mode 100644 index 00000000000..cc85c1e4c72 --- /dev/null +++ b/3.x/assets/dump.html.aa1d0523.js @@ -0,0 +1,20 @@ +import{_ as d,o as c,c as i,a,b as e,w as r,e as s,d as o,r as n}from"./app.4d248835.js";const p={},u=a("h1",{id:"dump",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#dump","aria-hidden":"true"},"#"),s(" dump")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=cn&id=command-dump",target:"_blank",rel:"noopener noreferrer"},h=a("code",null,"dump",-1),v=s("\u5728\u7EBF\u6559\u7A0B"),b=a("div",{class:"custom-container tip"},[a("p",{class:"custom-container-title"},"\u63D0\u793A"),a("p",null,"dump \u5DF2\u52A0\u8F7D\u7C7B\u7684 bytecode \u5230\u7279\u5B9A\u76EE\u5F55")],-1),g=s("dump \u547D\u4EE4\u5C06 JVM \u4E2D\u5B9E\u9645\u8FD0\u884C\u7684 class \u7684 byte code dump \u5230\u6307\u5B9A\u76EE\u5F55\uFF0C\u9002\u7528\u573A\u666F\u6279\u91CF\u4E0B\u8F7D\u6307\u5B9A\u5305\u76EE\u5F55\u7684 class \u5B57\u8282\u7801\uFF1B\u5982\u9700\u53CD\u7F16\u8BD1\u5355\u4E00\u7C7B\u3001\u5B9E\u65F6\u67E5\u770B\u7C7B\u4FE1\u606F\uFF0C\u53EF\u53C2\u8003 "),L=s("jad"),k=s("\u3002"),C=o(`

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    class-pattern\u7C7B\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    [c:]\u7C7B\u6240\u5C5E ClassLoader \u7684 hashcode
    [classLoaderClass:]\u6307\u5B9A\u6267\u884C\u8868\u8FBE\u5F0F\u7684 ClassLoader \u7684 class name
    [d:]\u8BBE\u7F6E\u7C7B\u6587\u4EF6\u7684\u76EE\u6807\u76EE\u5F55
    [E]\u5F00\u542F\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\uFF0C\u9ED8\u8BA4\u4E3A\u901A\u914D\u7B26\u5339\u914D

    \u4F7F\u7528\u53C2\u8003

    $ dump java.lang.String
    + HASHCODE  CLASSLOADER  LOCATION
    + null                   /Users/admin/logs/arthas/classdump/java/lang/String.class
    +Affect(row-cnt:1) cost in 119 ms.
    +
    $ dump demo.*
    + HASHCODE  CLASSLOADER                                    LOCATION
    + 3d4eac69  +-sun.misc.Launcher$AppClassLoader@3d4eac69    /Users/admin/logs/arthas/classdump/sun.misc.Launcher$AppClassLoader-3d4eac69/demo/MathGame.class
    +             +-sun.misc.Launcher$ExtClassLoader@66350f69
    +Affect(row-cnt:1) cost in 39 ms.
    +
    $ dump -d /tmp/output java.lang.String
    + HASHCODE  CLASSLOADER  LOCATION
    + null                   /tmp/output/java/lang/String.class
    +Affect(row-cnt:1) cost in 138 ms.
    +
    • \u6307\u5B9A classLoader

    \u6CE8\u610F hashcode \u662F\u53D8\u5316\u7684\uFF0C\u9700\u8981\u5148\u67E5\u770B\u5F53\u524D\u7684 ClassLoader \u4FE1\u606F\uFF0C\u63D0\u53D6\u5BF9\u5E94 ClassLoader \u7684 hashcode\u3002

    \u5982\u679C\u4F60\u4F7F\u7528-c\uFF0C\u4F60\u9700\u8981\u624B\u52A8\u8F93\u5165 hashcode\uFF1A-c <hashcode>

    $ dump -c 3d4eac69 demo.*
    +

    \u5BF9\u4E8E\u53EA\u6709\u552F\u4E00\u5B9E\u4F8B\u7684 ClassLoader \u53EF\u4EE5\u901A\u8FC7--classLoaderClass\u6307\u5B9A class name\uFF0C\u4F7F\u7528\u8D77\u6765\u66F4\u52A0\u65B9\u4FBF\uFF1A

    $ dump --classLoaderClass sun.misc.Launcher$AppClassLoader demo.*
    + HASHCODE  CLASSLOADER                                    LOCATION
    + 3d4eac69  +-sun.misc.Launcher$AppClassLoader@3d4eac69    /Users/admin/logs/arthas/classdump/sun.misc.Launcher$AppClassLoader-3d4eac69/demo/MathGame.class
    +             +-sun.misc.Launcher$ExtClassLoader@66350f69
    +Affect(row-cnt:1) cost in 39 ms.
    +
    • \u6CE8\uFF1A\u8FD9\u91CC classLoaderClass \u5728 java 8 \u662F sun.misc.Launcher$AppClassLoader\uFF0C\u800C java 11 \u7684 classloader \u662F jdk.internal.loader.ClassLoaders$AppClassLoader\uFF0Ckillercoda \u76EE\u524D\u73AF\u5883\u662F java11\u3002

    --classLoaderClass \u7684\u503C\u662F ClassLoader \u7684\u7C7B\u540D\uFF0C\u53EA\u6709\u5339\u914D\u5230\u552F\u4E00\u7684 ClassLoader \u5B9E\u4F8B\u65F6\u624D\u80FD\u5DE5\u4F5C\uFF0C\u76EE\u7684\u662F\u65B9\u4FBF\u8F93\u5165\u901A\u7528\u547D\u4EE4\uFF0C\u800C-c <hashcode>\u662F\u52A8\u6001\u53D8\u5316\u7684\u3002

    `,14);function _(x,f){const t=n("ExternalLinkIcon"),l=n("RouterLink");return c(),i("div",null,[u,a("p",null,[a("a",m,[h,v,e(t)])]),b,a("p",null,[g,e(l,{to:"/doc/jad.html"},{default:r(()=>[L]),_:1}),k]),C])}const y=d(p,[["render",_],["__file","dump.html.vue"]]);export{y as default}; diff --git a/3.x/assets/echo.html.239528da.js b/3.x/assets/echo.html.239528da.js new file mode 100644 index 00000000000..8eb0ced9db5 --- /dev/null +++ b/3.x/assets/echo.html.239528da.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-2c48f364","path":"/doc/echo.html","title":"echo","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/echo.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/echo.html.8619670c.js b/3.x/assets/echo.html.8619670c.js new file mode 100644 index 00000000000..b3de38c83ca --- /dev/null +++ b/3.x/assets/echo.html.8619670c.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-18ad9fd0","path":"/en/doc/echo.html","title":"echo","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/echo.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/echo.html.c9564b4c.js b/3.x/assets/echo.html.c9564b4c.js new file mode 100644 index 00000000000..ad71ee4a9df --- /dev/null +++ b/3.x/assets/echo.html.c9564b4c.js @@ -0,0 +1,2 @@ +import{_ as s,o as t,c as o,a as e,b as c,e as a,d as r,r as i}from"./app.4d248835.js";const l={},d=e("h1",{id:"echo",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#echo","aria-hidden":"true"},"#"),a(" echo")],-1),h={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-echo",target:"_blank",rel:"noopener noreferrer"},u=e("code",null,"echo",-1),_=a(" online tutorial"),p=r(`

    TIP

    write arguments to the standard output.

    Usage

    $ echo 'hello'
    +
    `,3);function m(g,f){const n=i("ExternalLinkIcon");return t(),o("div",null,[d,e("p",null,[e("a",h,[u,_,c(n)])]),p])}const b=s(l,[["render",m],["__file","echo.html.vue"]]);export{b as default}; diff --git a/3.x/assets/echo.html.f45a06cc.js b/3.x/assets/echo.html.f45a06cc.js new file mode 100644 index 00000000000..22f1d37edd7 --- /dev/null +++ b/3.x/assets/echo.html.f45a06cc.js @@ -0,0 +1,2 @@ +import{_ as s,o,c as t,a as e,b as c,e as a,d as r,r as i}from"./app.4d248835.js";const l={},d=e("h1",{id:"echo",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#echo","aria-hidden":"true"},"#"),a(" echo")],-1),h={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-echo",target:"_blank",rel:"noopener noreferrer"},_=e("code",null,"echo",-1),u=a("\u5728\u7EBF\u6559\u7A0B"),p=r(`

    \u63D0\u793A

    \u6253\u5370\u53C2\u6570\uFF0C\u548C linux \u91CC\u7684 echo \u547D\u4EE4\u7C7B\u4F3C\u3002

    \u4F7F\u7528\u53C2\u8003

    $ echo 'hello'
    +
    `,3);function m(f,v){const n=i("ExternalLinkIcon");return o(),t("div",null,[d,e("p",null,[e("a",h,[_,u,c(n)])]),p])}const b=s(l,[["render",m],["__file","echo.html.vue"]]);export{b as default}; diff --git a/3.x/assets/faq.html.18da055d.js b/3.x/assets/faq.html.18da055d.js new file mode 100644 index 00000000000..2272d81860b --- /dev/null +++ b/3.x/assets/faq.html.18da055d.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-d1b46bf2","path":"/en/doc/faq.html","title":"FAQ","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"Where is the log file?","slug":"where-is-the-log-file","link":"#where-is-the-log-file","children":[]},{"level":3,"title":"How much impact does Arthas attach have on the performance of the original process?","slug":"how-much-impact-does-arthas-attach-have-on-the-performance-of-the-original-process","link":"#how-much-impact-does-arthas-attach-have-on-the-performance-of-the-original-process","children":[]},{"level":3,"title":"target process not responding or HotSpot VM not loaded","slug":"target-process-not-responding-or-hotspot-vm-not-loaded","link":"#target-process-not-responding-or-hotspot-vm-not-loaded","children":[]},{"level":3,"title":"Can commands such as trace/watch enhance the classes in jdk?","slug":"can-commands-such-as-trace-watch-enhance-the-classes-in-jdk","link":"#can-commands-such-as-trace-watch-enhance-the-classes-in-jdk","children":[]},{"level":3,"title":"How to view the result in json format","slug":"how-to-view-the-result-in-json-format","link":"#how-to-view-the-result-in-json-format","children":[]},{"level":3,"title":"Can arthas trace native methods","slug":"can-arthas-trace-native-methods","link":"#can-arthas-trace-native-methods","children":[]},{"level":3,"title":"Can arthas view the value of a variable in memory?","slug":"can-arthas-view-the-value-of-a-variable-in-memory","link":"#can-arthas-view-the-value-of-a-variable-in-memory","children":[]},{"level":3,"title":"How to filter method with the same name?","slug":"how-to-filter-method-with-the-same-name","link":"#how-to-filter-method-with-the-same-name","children":[]},{"level":3,"title":"How to watch or trace constructor?","slug":"how-to-watch-or-trace-constructor","link":"#how-to-watch-or-trace-constructor","children":[]},{"level":3,"title":"How to watch or trace inner classes?","slug":"how-to-watch-or-trace-inner-classes","link":"#how-to-watch-or-trace-inner-classes","children":[]},{"level":3,"title":"Enter Unicode characters","slug":"enter-unicode-characters","link":"#enter-unicode-characters","children":[]},{"level":3,"title":"java.lang.ClassFormatError: null, skywalking arthas compatible use","slug":"java-lang-classformaterror-null-skywalking-arthas-compatible-use","link":"#java-lang-classformaterror-null-skywalking-arthas-compatible-use","children":[]},{"level":3,"title":"Can I use arthas offline?","slug":"can-i-use-arthas-offline","link":"#can-i-use-arthas-offline","children":[]},{"level":3,"title":"Attach the process with pid 1 in docker/k8s failed","slug":"attach-the-process-with-pid-1-in-docker-k8s-failed","link":"#attach-the-process-with-pid-1-in-docker-k8s-failed","children":[]},{"level":3,"title":"Why is the new version of Arthas downloaded, but the old version is connected?","slug":"why-is-the-new-version-of-arthas-downloaded-but-the-old-version-is-connected","link":"#why-is-the-new-version-of-arthas-downloaded-but-the-old-version-is-connected","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/faq.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/faq.html.39698152.js b/3.x/assets/faq.html.39698152.js new file mode 100644 index 00000000000..9b1f10f6fe7 --- /dev/null +++ b/3.x/assets/faq.html.39698152.js @@ -0,0 +1,7 @@ +import{_ as h,o as c,c as d,a as e,b as a,w as n,e as t,d as r,r as i}from"./app.4d248835.js";const l={},u=e("h1",{id:"faq",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#faq","aria-hidden":"true"},"#"),t(" FAQ")],-1),p={class:"custom-container tip"},m=e("p",{class:"custom-container-title"},"TIP",-1),_=t("For questions that are not in this list, please search in issues. "),b={href:"https://github.com/alibaba/arthas/issues",target:"_blank",rel:"noopener noreferrer"},f=t("https://github.com/alibaba/arthas/issues"),g=e("h3",{id:"where-is-the-log-file",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#where-is-the-log-file","aria-hidden":"true"},"#"),t(" Where is the log file?")],-1),v=e("p",null,[t("Log file path: "),e("code",null,"~/logs/arthas/arthas.log")],-1),w=e("h3",{id:"how-much-impact-does-arthas-attach-have-on-the-performance-of-the-original-process",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#how-much-impact-does-arthas-attach-have-on-the-performance-of-the-original-process","aria-hidden":"true"},"#"),t(" How much impact does Arthas attach have on the performance of the original process?")],-1),k={href:"https://github.com/alibaba/arthas/issues/44",target:"_blank",rel:"noopener noreferrer"},x=t("https://github.com/alibaba/arthas/issues/44"),y=e("h3",{id:"target-process-not-responding-or-hotspot-vm-not-loaded",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#target-process-not-responding-or-hotspot-vm-not-loaded","aria-hidden":"true"},"#"),t(" target process not responding or HotSpot VM not loaded")],-1),j=e("p",null,"com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded",-1),C=e("li",null,"Check whether the current user and the target java process are consistent. If they are inconsistent, switch to the same user. JVM can only attach java processes under the same user.",-1),I=e("li",null,[t("Try to use "),e("code",null,"jstack -l $pid"),t(". If the process does not respond, it means that the process may freeze and fail to respond to the JVM attach signal. So Arthas based on the attach mechanism cannot work. Try to use "),e("code",null,"jmap"),t(" heapdump to analyze.")],-1),V=t("Try to attach math-game in "),q=t("quick-start"),E=t("."),F=t("For more information: "),L={href:"https://github.com/alibaba/arthas/issues/347",target:"_blank",rel:"noopener noreferrer"},S=t("https://github.com/alibaba/arthas/issues/347"),H=r(`

    Can commands such as trace/watch enhance the classes in jdk?

    By default, classes beginning with java. or the classes loaded by the Bootstrap ClassLoader are filtered out, but they can be turned on:

    options unsafe true
    +
    `,3),T=t("See more at "),A=t("options"),M=r(`

    TIP

    To support the jars appended by java.lang.instrument.Instrumentation#appendToBootstrapClassLoaderSearch need to enable unsafe.

    How to view the result in json format

    options json-format true
    +
    `,3),B=t("See more at "),N=t("options"),O=e("h3",{id:"can-arthas-trace-native-methods",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#can-arthas-trace-native-methods","aria-hidden":"true"},"#"),t(" Can arthas trace native methods")],-1),Y=e("p",null,"No.",-1),z=e("h3",{id:"can-arthas-view-the-value-of-a-variable-in-memory",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#can-arthas-view-the-value-of-a-variable-in-memory","aria-hidden":"true"},"#"),t(" Can arthas view the value of a variable in memory?")],-1),J=t("You can use "),R=e("code",null,"vmtool",-1),U=t(" command."),W=t("You can use some tricks to intercept the object with the "),$=e("code",null,"tt",-1),G=t(" command, or fetch it from a static method."),P=e("h3",{id:"how-to-filter-method-with-the-same-name",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#how-to-filter-method-with-the-same-name","aria-hidden":"true"},"#"),t(" How to filter method with the same name?")],-1),Q=t("You can used all variables in "),D=t("fundamental fields in expressions"),K=t(" for the condition express to filter method with the same name, you can use the number of parameters "),X=e("code",null,"params.length ==1",-1),Z=t(",parameter type "),ee=e("code",null,"params[0] instanceof java.lang.Integer",-1),te=t(",return value type "),ae=e("code",null,"returnObj instanceof java.util.List",-1),se=t(" and so on in one or more combinations as condition express."),oe=t("You can use "),ne=e("code",null,"-v",-1),re=t(" to view the condition express result "),ie={href:"https://github.com/alibaba/arthas/issues/1348",target:"_blank",rel:"noopener noreferrer"},he=t("https://github.com/alibaba/arthas/issues/1348"),ce=t("example "),de=t("math-game"),le=r(`
    watch demo.MathGame primeFactors '{params,returnObj,throwExp}' 'params.length >0 && returnObj instanceof java.util.List' -v
    +

    How to watch or trace constructor?

    watch demo.MathGame <init> '{params,returnObj,throwExp}' -v
    +

    How to watch or trace inner classes?

    In the JVM specification the name of inner classes is OuterClass$InnerClass.

    watch OuterClass$InnerClass
    +

    Enter Unicode characters

    Convert Unicode characters to \\u representation:

    ognl '@java.lang.System@out.println("Hello \\u4e2d\\u6587")'
    +

    java.lang.ClassFormatError: null, skywalking arthas compatible use

    When error log appear java.lang.ClassFormatError: null, it is usually modified by other bytecode tools that are not compatible with arthas modified bytecode.

    `,11),ue=t("For example: use skywalking V8.1.0 below "),pe={href:"https://github.com/alibaba/arthas/issues/1141",target:"_blank",rel:"noopener noreferrer"},me=t("cannot trace, watch classes enhanced by skywalking agent"),_e=t(", V8.1.0 or above is compatible, refer to skywalking configuration for more details. "),be={href:"https://github.com/apache/skywalking/blob/master/docs/en/FAQ/Compatible-with-other-javaagent-bytecode-processing.md#",target:"_blank",rel:"noopener noreferrer"},fe=t("skywalking compatible with other javaagent bytecode processing"),ge=t("."),ve=e("h4",{id:"class-redefinition-failed-attempted-to-change-the-schema-add-remove-fields",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#class-redefinition-failed-attempted-to-change-the-schema-add-remove-fields","aria-hidden":"true"},"#"),t(" class redefinition failed: attempted to change the schema (add/remove fields)")],-1),we=t("Reference: "),ke={href:"https://github.com/alibaba/arthas/issues/2165",target:"_blank",rel:"noopener noreferrer"},xe=t("https://github.com/alibaba/arthas/issues/2165"),ye=e("h3",{id:"can-i-use-arthas-offline",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#can-i-use-arthas-offline","aria-hidden":"true"},"#"),t(" Can I use arthas offline?")],-1),je=t("Yes. Just download the full size package and unzip it, refer to: "),Ce=t("Download"),Ie=t("."),Ve=e("h3",{id:"attach-the-process-with-pid-1-in-docker-k8s-failed",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#attach-the-process-with-pid-1-in-docker-k8s-failed","aria-hidden":"true"},"#"),t(" Attach the process with pid 1 in docker/k8s failed")],-1),qe=t("Reference: "),Ee={href:"https://github.com/alibaba/arthas/issues/362#issuecomment-448185416",target:"_blank",rel:"noopener noreferrer"},Fe=t("https://github.com/alibaba/arthas/issues/362#issuecomment-448185416"),Le=e("h3",{id:"why-is-the-new-version-of-arthas-downloaded-but-the-old-version-is-connected",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#why-is-the-new-version-of-arthas-downloaded-but-the-old-version-is-connected","aria-hidden":"true"},"#"),t(" Why is the new version of Arthas downloaded, but the old version is connected?")],-1),Se=e("p",null,[t("For example, the started version of "),e("code",null,"as3.sh/arthas-boot3.jar"),t(" is 3.5."),e("em",null,", but after connecting, the printed arthas version is 3.4."),t(".")],-1),He=e("p",null,[t("It may be that the target process has been diagnosed with the old version of arthas before. You can execute "),e("code",null,"stop"),t(" to stop the old version of arthas, and then reuse the new version to attach.")],-1);function Te(Ae,Me){const s=i("ExternalLinkIcon"),o=i("RouterLink");return c(),d("div",null,[u,e("div",p,[m,e("p",null,[_,e("a",b,[f,a(s)])])]),g,v,w,e("p",null,[e("a",k,[x,a(s)])]),y,j,e("ol",null,[C,I,e("li",null,[V,a(o,{to:"/en/doc/quick-start.html"},{default:n(()=>[q]),_:1}),E]),e("li",null,[F,e("a",L,[S,a(s)])])]),H,e("p",null,[T,a(o,{to:"/en/doc/options.html"},{default:n(()=>[A]),_:1})]),M,e("p",null,[B,a(o,{to:"/en/doc/options.html"},{default:n(()=>[N]),_:1})]),O,Y,z,e("ol",null,[e("li",null,[J,a(o,{to:"/en/doc/vmtool.html"},{default:n(()=>[R]),_:1}),U]),e("li",null,[W,a(o,{to:"/en/doc/tt.html"},{default:n(()=>[$]),_:1}),G])]),P,e("p",null,[Q,a(o,{to:"/en/doc/advice-class.html"},{default:n(()=>[D]),_:1}),K,X,Z,ee,te,ae,se]),e("p",null,[oe,ne,re,e("a",ie,[he,a(s)])]),e("p",null,[ce,a(o,{to:"/en/doc/quick-start.html"},{default:n(()=>[de]),_:1})]),le,e("p",null,[ue,e("a",pe,[me,a(s)]),_e,e("a",be,[fe,a(s)]),ge]),ve,e("p",null,[we,e("a",ke,[xe,a(s)])]),ye,e("p",null,[je,a(o,{to:"/en/doc/download.html"},{default:n(()=>[Ce]),_:1}),Ie]),Ve,e("p",null,[qe,e("a",Ee,[Fe,a(s)])]),Le,Se,He])}const Ne=h(l,[["render",Te],["__file","faq.html.vue"]]);export{Ne as default}; diff --git a/3.x/assets/faq.html.abd28b1f.js b/3.x/assets/faq.html.abd28b1f.js new file mode 100644 index 00000000000..aaf7a058dfb --- /dev/null +++ b/3.x/assets/faq.html.abd28b1f.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-d070981a","path":"/doc/faq.html","title":"FAQ","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"\u65E5\u5FD7\u6587\u4EF6\u5728\u54EA\u91CC\uFF1F","slug":"\u65E5\u5FD7\u6587\u4EF6\u5728\u54EA\u91CC","link":"#\u65E5\u5FD7\u6587\u4EF6\u5728\u54EA\u91CC","children":[]},{"level":3,"title":"Arthas attach \u4E4B\u540E\u5BF9\u539F\u8FDB\u7A0B\u6027\u80FD\u6709\u591A\u5927\u7684\u5F71\u54CD","slug":"arthas-attach-\u4E4B\u540E\u5BF9\u539F\u8FDB\u7A0B\u6027\u80FD\u6709\u591A\u5927\u7684\u5F71\u54CD","link":"#arthas-attach-\u4E4B\u540E\u5BF9\u539F\u8FDB\u7A0B\u6027\u80FD\u6709\u591A\u5927\u7684\u5F71\u54CD","children":[]},{"level":3,"title":"target process not responding or HotSpot VM not loaded","slug":"target-process-not-responding-or-hotspot-vm-not-loaded","link":"#target-process-not-responding-or-hotspot-vm-not-loaded","children":[]},{"level":3,"title":"trace/watch \u7B49\u547D\u4EE4\u80FD\u5426\u589E\u5F3A jdk \u91CC\u7684\u7C7B\uFF1F","slug":"trace-watch-\u7B49\u547D\u4EE4\u80FD\u5426\u589E\u5F3A-jdk-\u91CC\u7684\u7C7B","link":"#trace-watch-\u7B49\u547D\u4EE4\u80FD\u5426\u589E\u5F3A-jdk-\u91CC\u7684\u7C7B","children":[]},{"level":3,"title":"\u600E\u4E48\u4EE5json\u683C\u5F0F\u67E5\u770B\u7ED3\u679C","slug":"\u600E\u4E48\u4EE5json\u683C\u5F0F\u67E5\u770B\u7ED3\u679C","link":"#\u600E\u4E48\u4EE5json\u683C\u5F0F\u67E5\u770B\u7ED3\u679C","children":[]},{"level":3,"title":"Arthas \u80FD\u5426\u8DDF\u8E2A native \u51FD\u6570","slug":"arthas-\u80FD\u5426\u8DDF\u8E2A-native-\u51FD\u6570","link":"#arthas-\u80FD\u5426\u8DDF\u8E2A-native-\u51FD\u6570","children":[]},{"level":3,"title":"\u80FD\u4E0D\u80FD\u67E5\u770B\u5185\u5B58\u91CC\u67D0\u4E2A\u53D8\u91CF\u7684\u503C","slug":"\u80FD\u4E0D\u80FD\u67E5\u770B\u5185\u5B58\u91CC\u67D0\u4E2A\u53D8\u91CF\u7684\u503C","link":"#\u80FD\u4E0D\u80FD\u67E5\u770B\u5185\u5B58\u91CC\u67D0\u4E2A\u53D8\u91CF\u7684\u503C","children":[]},{"level":3,"title":"\u65B9\u6CD5\u540C\u540D\u8FC7\u6EE4","slug":"\u65B9\u6CD5\u540C\u540D\u8FC7\u6EE4","link":"#\u65B9\u6CD5\u540C\u540D\u8FC7\u6EE4","children":[]},{"level":3,"title":"\u600E\u4E48 watch\u3001trace \u6784\u9020\u51FD\u6570 \uFF1F","slug":"\u600E\u4E48-watch\u3001trace-\u6784\u9020\u51FD\u6570","link":"#\u600E\u4E48-watch\u3001trace-\u6784\u9020\u51FD\u6570","children":[]},{"level":3,"title":"\u600E\u6837 watch\u3001trace \u5185\u90E8\u7C7B\uFF1F","slug":"\u600E\u6837-watch\u3001trace-\u5185\u90E8\u7C7B","link":"#\u600E\u6837-watch\u3001trace-\u5185\u90E8\u7C7B","children":[]},{"level":3,"title":"\u8F93\u5165\u4E2D\u6587/Unicode \u5B57\u7B26","slug":"\u8F93\u5165\u4E2D\u6587-unicode-\u5B57\u7B26","link":"#\u8F93\u5165\u4E2D\u6587-unicode-\u5B57\u7B26","children":[]},{"level":3,"title":"java.lang.ClassFormatError: null\u3001skywalking arthas \u517C\u5BB9\u4F7F\u7528","slug":"java-lang-classformaterror-null\u3001skywalking-arthas-\u517C\u5BB9\u4F7F\u7528","link":"#java-lang-classformaterror-null\u3001skywalking-arthas-\u517C\u5BB9\u4F7F\u7528","children":[]},{"level":3,"title":"Arthas \u80FD\u4E0D\u80FD\u79BB\u7EBF\u4F7F\u7528","slug":"arthas-\u80FD\u4E0D\u80FD\u79BB\u7EBF\u4F7F\u7528","link":"#arthas-\u80FD\u4E0D\u80FD\u79BB\u7EBF\u4F7F\u7528","children":[]},{"level":3,"title":"Attach docker/k8s \u91CC\u7684 pid \u4E3A 1 \u7684\u8FDB\u7A0B\u5931\u8D25","slug":"attach-docker-k8s-\u91CC\u7684-pid-\u4E3A-1-\u7684\u8FDB\u7A0B\u5931\u8D25","link":"#attach-docker-k8s-\u91CC\u7684-pid-\u4E3A-1-\u7684\u8FDB\u7A0B\u5931\u8D25","children":[]},{"level":3,"title":"\u4E3A\u4EC0\u4E48\u4E0B\u8F7D\u4E86\u65B0\u7248\u672C\u7684 Arthas\uFF0C\u8FDE\u63A5\u7684\u5374\u662F\u65E7\u7248\u672C\uFF1F","slug":"\u4E3A\u4EC0\u4E48\u4E0B\u8F7D\u4E86\u65B0\u7248\u672C\u7684-arthas-\u8FDE\u63A5\u7684\u5374\u662F\u65E7\u7248\u672C","link":"#\u4E3A\u4EC0\u4E48\u4E0B\u8F7D\u4E86\u65B0\u7248\u672C\u7684-arthas-\u8FDE\u63A5\u7684\u5374\u662F\u65E7\u7248\u672C","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/faq.md","version":"3.7.3"}');export{t as data}; diff --git a/3.x/assets/faq.html.b9626740.js b/3.x/assets/faq.html.b9626740.js new file mode 100644 index 00000000000..aaff6ef9b45 --- /dev/null +++ b/3.x/assets/faq.html.b9626740.js @@ -0,0 +1,7 @@ +import{_ as d,o as h,c,a,b as t,w as n,e,d as r,r as i}from"./app.4d248835.js";const l={},_=a("h1",{id:"faq",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#faq","aria-hidden":"true"},"#"),e(" FAQ")],-1),u={class:"custom-container tip"},p=a("p",{class:"custom-container-title"},"\u63D0\u793A",-1),b=e("\u4E0D\u5728\u672C\u5217\u8868\u91CC\u7684\u95EE\u9898\uFF0C\u8BF7\u5230 issue \u91CC\u641C\u7D22\u3002 "),m={href:"https://github.com/alibaba/arthas/issues",target:"_blank",rel:"noopener noreferrer"},g=e("https://github.com/alibaba/arthas/issues"),f=a("h3",{id:"\u65E5\u5FD7\u6587\u4EF6\u5728\u54EA\u91CC",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u65E5\u5FD7\u6587\u4EF6\u5728\u54EA\u91CC","aria-hidden":"true"},"#"),e(" \u65E5\u5FD7\u6587\u4EF6\u5728\u54EA\u91CC\uFF1F")],-1),v=a("p",null,[e("\u65E5\u5FD7\u6587\u4EF6\u8DEF\u5F84\uFF1A "),a("code",null,"~/logs/arthas/arthas.log")],-1),k=a("h3",{id:"arthas-attach-\u4E4B\u540E\u5BF9\u539F\u8FDB\u7A0B\u6027\u80FD\u6709\u591A\u5927\u7684\u5F71\u54CD",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-attach-\u4E4B\u540E\u5BF9\u539F\u8FDB\u7A0B\u6027\u80FD\u6709\u591A\u5927\u7684\u5F71\u54CD","aria-hidden":"true"},"#"),e(" Arthas attach \u4E4B\u540E\u5BF9\u539F\u8FDB\u7A0B\u6027\u80FD\u6709\u591A\u5927\u7684\u5F71\u54CD")],-1),x={href:"https://github.com/alibaba/arthas/issues/44",target:"_blank",rel:"noopener noreferrer"},j=e("https://github.com/alibaba/arthas/issues/44"),w=a("h3",{id:"target-process-not-responding-or-hotspot-vm-not-loaded",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#target-process-not-responding-or-hotspot-vm-not-loaded","aria-hidden":"true"},"#"),e(" target process not responding or HotSpot VM not loaded")],-1),C=a("p",null,"com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded",-1),y=a("li",null,"\u68C0\u67E5\u5F53\u524D\u7528\u6237\u548C\u76EE\u6807 java \u8FDB\u7A0B\u662F\u5426\u4E00\u81F4\u3002\u5982\u679C\u4E0D\u4E00\u81F4\uFF0C\u5219\u5207\u6362\u5230\u540C\u4E00\u7528\u6237\u3002JVM \u53EA\u80FD attach \u540C\u6837\u7528\u6237\u4E0B\u7684 java \u8FDB\u7A0B\u3002",-1),V=a("li",null,[e("\u5C1D\u8BD5\u4F7F\u7528 "),a("code",null,"jstack -l $pid"),e("\uFF0C\u5982\u679C\u8FDB\u7A0B\u6CA1\u6709\u53CD\u5E94\uFF0C\u5219\u8BF4\u660E\u8FDB\u7A0B\u53EF\u80FD\u5047\u6B7B\uFF0C\u65E0\u6CD5\u54CD\u5E94 JVM attach \u4FE1\u53F7\u3002\u6240\u4EE5\u540C\u6837\u57FA\u4E8E attach \u673A\u5236\u7684 Arthas \u65E0\u6CD5\u5DE5\u4F5C\u3002\u5C1D\u8BD5\u4F7F\u7528"),a("code",null,"jmap"),e(" heapdump \u540E\u5206\u6790\u3002")],-1),q=e("\u5C1D\u8BD5\u6309"),A=e("quick-start"),L=e("\u91CC\u7684\u65B9\u5F0F attach math-game\u3002"),E=e("\u66F4\u591A\u60C5\u51B5\u53C2\u8003\uFF1A "),M={href:"https://github.com/alibaba/arthas/issues/347",target:"_blank",rel:"noopener noreferrer"},S=e("https://github.com/alibaba/arthas/issues/347"),B=r(`

    trace/watch \u7B49\u547D\u4EE4\u80FD\u5426\u589E\u5F3A jdk \u91CC\u7684\u7C7B\uFF1F

    \u9ED8\u8BA4\u60C5\u51B5\u4E0B\u4F1A\u8FC7\u6EE4\u6389java.\u5F00\u5934\u7684\u7C7B\u548C\u88ABBootStrap ClassLoader\u52A0\u8F7D\u7684\u7C7B\u3002\u53EF\u4EE5\u901A\u8FC7\u53C2\u6570\u5F00\u542F\u3002

    options unsafe true
    +
    `,3),I=e("\u66F4\u591A\u53C2\u8003 "),O=e("options"),F=r(`

    \u63D0\u793A

    \u901A\u8FC7 java.lang.instrument.Instrumentation#appendToBootstrapClassLoaderSearch append \u5230Bootstrap ClassLoader\u7684 jar \u5305\u9700\u8981\u5F00\u542F unsafe\u3002

    \u600E\u4E48\u4EE5json\u683C\u5F0F\u67E5\u770B\u7ED3\u679C

    options json-format true
    +
    `,3),N=e("\u66F4\u591A\u53C2\u8003 "),H=e("options"),J=a("h3",{id:"arthas-\u80FD\u5426\u8DDF\u8E2A-native-\u51FD\u6570",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-\u80FD\u5426\u8DDF\u8E2A-native-\u51FD\u6570","aria-hidden":"true"},"#"),e(" Arthas \u80FD\u5426\u8DDF\u8E2A native \u51FD\u6570")],-1),U=a("p",null,"\u4E0D\u80FD\u3002",-1),$=a("h3",{id:"\u80FD\u4E0D\u80FD\u67E5\u770B\u5185\u5B58\u91CC\u67D0\u4E2A\u53D8\u91CF\u7684\u503C",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u80FD\u4E0D\u80FD\u67E5\u770B\u5185\u5B58\u91CC\u67D0\u4E2A\u53D8\u91CF\u7684\u503C","aria-hidden":"true"},"#"),e(" \u80FD\u4E0D\u80FD\u67E5\u770B\u5185\u5B58\u91CC\u67D0\u4E2A\u53D8\u91CF\u7684\u503C")],-1),G=e("\u53EF\u4EE5\u4F7F\u7528"),Q=a("code",null,"vmtool",-1),R=e("\u547D\u4EE4\u3002"),T=e("\u53EF\u4EE5\u7528\u4E00\u4E9B\u6280\u5DE7\uFF0C\u7528"),z=a("code",null,"tt",-1),D=e("\u547D\u4EE4\u62E6\u622A\u5230\u5BF9\u8C61\uFF0C\u6216\u8005\u4ECE\u9759\u6001\u51FD\u6570\u91CC\u53D6\u5230\u5BF9\u8C61\u3002"),K=a("h3",{id:"\u65B9\u6CD5\u540C\u540D\u8FC7\u6EE4",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u65B9\u6CD5\u540C\u540D\u8FC7\u6EE4","aria-hidden":"true"},"#"),e(" \u65B9\u6CD5\u540C\u540D\u8FC7\u6EE4")],-1),P=e("\u540C\u540D\u65B9\u6CD5\u8FC7\u6EE4\u53EF\u4EE5\u901A\u8FC7\u5339\u914D\u8868\u8FBE\u5F0F,\u53EF\u4EE5\u4F7F\u7528"),W=e("\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF"),X=e("\u4E2D\u6240\u6709\u53D8\u91CF\u4F5C\u4E3A\u5DF2\u77E5\u6761\u4EF6,\u53EF\u4EE5\u901A\u8FC7\u5224\u65AD\u53C2\u6570\u4E2A\u6570"),Y=a("code",null,"params.length ==1",-1),Z=e(", \u53C2\u6570\u7C7B\u578B"),aa=a("code",null,"params[0] instanceof java.lang.Integer",-1),ea=e("\u3001\u8FD4\u56DE\u503C\u7C7B\u578B "),ta=a("code",null,"returnObj instanceof java.util.List",-1),sa=e(" \u7B49\u7B49\u4E00\u79CD\u6216\u8005\u591A\u79CD\u7EC4\u5408\u8FDB\u884C\u8FC7\u6EE4\u3002"),oa=e("\u53EF\u4EE5\u4F7F\u7528 "),na=a("code",null,"-v",-1),ra=e(" \u67E5\u770B\u89C2\u5BDF\u5339\u914D\u8868\u8FBE\u5F0F\u7684\u6267\u884C\u7ED3\u679C "),ia={href:"https://github.com/alibaba/arthas/issues/1348",target:"_blank",rel:"noopener noreferrer"},da=e("https://github.com/alibaba/arthas/issues/1348"),ha=e("\u4F8B\u5B50"),ca=e("math-game"),la=r(`
    watch demo.MathGame primeFactors '{params,returnObj,throwExp}' 'params.length >0 && returnObj instanceof java.util.List' -v
    +

    \u600E\u4E48 watch\u3001trace \u6784\u9020\u51FD\u6570 \uFF1F

    watch demo.MathGame <init> '{params,returnObj,throwExp}' -v
    +

    \u600E\u6837 watch\u3001trace \u5185\u90E8\u7C7B\uFF1F

    \u5728 JVM \u89C4\u8303\u91CC\u5185\u90E8\u7C7B\u7684\u683C\u5F0F\u662FOuterClass$InnerClass\u3002

    watch OuterClass$InnerClass
    +

    \u8F93\u5165\u4E2D\u6587/Unicode \u5B57\u7B26

    \u628A\u4E2D\u6587/Unicode \u5B57\u7B26\u8F6C\u4E3A\\u\u8868\u793A\u65B9\u6CD5\uFF1A

    ognl '@java.lang.System@out.println("Hello \\u4e2d\\u6587")'
    +

    java.lang.ClassFormatError: null\u3001skywalking arthas \u517C\u5BB9\u4F7F\u7528

    \u5F53\u51FA\u73B0\u8FD9\u4E2A\u9519\u8BEF\u65E5\u5FD7java.lang.ClassFormatError: null,\u901A\u5E38\u60C5\u51B5\u4E0B\u90FD\u662F\u88AB\u5176\u4ED6\u5B57\u8282\u7801\u5DE5\u5177\u4FEE\u6539\u8FC7\u4E0E arthas \u4FEE\u6539\u5B57\u8282\u7801\u4E0D\u517C\u5BB9\u3002

    `,11),_a=e("\u6BD4\u5982: \u4F7F\u7528 skywalking V8.1.0 \u4EE5\u4E0B\u7248\u672C "),ua={href:"https://github.com/alibaba/arthas/issues/1141",target:"_blank",rel:"noopener noreferrer"},pa=e("\u65E0\u6CD5 trace\u3001watch \u88AB skywalking agent \u589E\u5F3A\u8FC7\u7684\u7C7B"),ba=e(", V8.1.0 \u4EE5\u4E0A\u7248\u672C\u53EF\u4EE5\u517C\u5BB9\u4F7F\u7528,\u66F4\u591A\u53C2\u8003 skywalking \u914D\u7F6E "),ma={href:"https://github.com/apache/skywalking/blob/master/docs/en/FAQ/Compatible-with-other-javaagent-bytecode-processing.md#",target:"_blank",rel:"noopener noreferrer"},ga=e("skywalking compatible with other javaagent bytecode processing"),fa=e("\u3002"),va=a("h4",{id:"class-redefinition-failed-attempted-to-change-the-schema-add-remove-fields",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#class-redefinition-failed-attempted-to-change-the-schema-add-remove-fields","aria-hidden":"true"},"#"),e(" class redefinition failed: attempted to change the schema (add/remove fields)")],-1),ka=e("\u53C2\u8003\uFF1A "),xa={href:"https://github.com/alibaba/arthas/issues/2165",target:"_blank",rel:"noopener noreferrer"},ja=e("https://github.com/alibaba/arthas/issues/2165"),wa=a("h3",{id:"arthas-\u80FD\u4E0D\u80FD\u79BB\u7EBF\u4F7F\u7528",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#arthas-\u80FD\u4E0D\u80FD\u79BB\u7EBF\u4F7F\u7528","aria-hidden":"true"},"#"),e(" Arthas \u80FD\u4E0D\u80FD\u79BB\u7EBF\u4F7F\u7528")],-1),Ca=e("\u53EF\u4EE5\u3002\u4E0B\u8F7D\u5168\u91CF\u5305\u89E3\u538B\u5373\u53EF\uFF0C\u53C2\u8003: "),ya=e("\u4E0B\u8F7D"),Va=e("\u3002"),qa=a("h3",{id:"attach-docker-k8s-\u91CC\u7684-pid-\u4E3A-1-\u7684\u8FDB\u7A0B\u5931\u8D25",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#attach-docker-k8s-\u91CC\u7684-pid-\u4E3A-1-\u7684\u8FDB\u7A0B\u5931\u8D25","aria-hidden":"true"},"#"),e(" Attach docker/k8s \u91CC\u7684 pid \u4E3A 1 \u7684\u8FDB\u7A0B\u5931\u8D25")],-1),Aa=e("\u53C2\u8003\uFF1A "),La={href:"https://github.com/alibaba/arthas/issues/362#issuecomment-448185416",target:"_blank",rel:"noopener noreferrer"},Ea=e("https://github.com/alibaba/arthas/issues/362#issuecomment-448185416"),Ma=a("h3",{id:"\u4E3A\u4EC0\u4E48\u4E0B\u8F7D\u4E86\u65B0\u7248\u672C\u7684-arthas-\u8FDE\u63A5\u7684\u5374\u662F\u65E7\u7248\u672C",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u4E3A\u4EC0\u4E48\u4E0B\u8F7D\u4E86\u65B0\u7248\u672C\u7684-arthas-\u8FDE\u63A5\u7684\u5374\u662F\u65E7\u7248\u672C","aria-hidden":"true"},"#"),e(" \u4E3A\u4EC0\u4E48\u4E0B\u8F7D\u4E86\u65B0\u7248\u672C\u7684 Arthas\uFF0C\u8FDE\u63A5\u7684\u5374\u662F\u65E7\u7248\u672C\uFF1F")],-1),Sa=a("p",null,[e("\u6BD4\u5982\u542F\u52A8\u7684 "),a("code",null,"as3.sh/arthas-boot3.jar"),e(" \u7248\u672C\u662F 3.5._ \u7684\uFF0C\u4F46\u662F\u8FDE\u63A5\u4E0A\u4E4B\u540E\uFF0C\u6253\u5370\u7684 arthas \u7248\u672C\u662F 3.4._ \u7684\u3002")],-1),Ba=a("p",null,[e("\u53EF\u80FD\u662F\u4E4B\u524D\u4F7F\u7528\u65E7\u7248\u672C\u7684 arthas \u8BCA\u65AD\u8FC7\u76EE\u6807\u8FDB\u7A0B\u3002\u53EF\u4EE5\u5148\u6267\u884C"),a("code",null,"stop"),e("\u505C\u6B62\u6389\u65E7\u7248\u672C\u7684 arthas\uFF0C\u518D\u91CD\u65B0\u4F7F\u7528\u65B0\u7248\u672C attach\u3002")],-1);function Ia(Oa,Fa){const s=i("ExternalLinkIcon"),o=i("RouterLink");return h(),c("div",null,[_,a("div",u,[p,a("p",null,[b,a("a",m,[g,t(s)])])]),f,v,k,a("p",null,[a("a",x,[j,t(s)])]),w,C,a("ol",null,[y,V,a("li",null,[q,t(o,{to:"/doc/quick-start.html"},{default:n(()=>[A]),_:1}),L]),a("li",null,[E,a("a",M,[S,t(s)])])]),B,a("p",null,[I,t(o,{to:"/doc/options.html"},{default:n(()=>[O]),_:1})]),F,a("p",null,[N,t(o,{to:"/doc/options.html"},{default:n(()=>[H]),_:1})]),J,U,$,a("ol",null,[a("li",null,[G,t(o,{to:"/doc/vmtool.html"},{default:n(()=>[Q]),_:1}),R]),a("li",null,[T,t(o,{to:"/doc/tt.html"},{default:n(()=>[z]),_:1}),D])]),K,a("p",null,[P,t(o,{to:"/doc/advice-class.html"},{default:n(()=>[W]),_:1}),X,Y,Z,aa,ea,ta,sa]),a("p",null,[oa,na,ra,a("a",ia,[da,t(s)])]),a("p",null,[ha,t(o,{to:"/doc/quick-start.html"},{default:n(()=>[ca]),_:1})]),la,a("p",null,[_a,a("a",ua,[pa,t(s)]),ba,a("a",ma,[ga,t(s)]),fa]),va,a("p",null,[ka,a("a",xa,[ja,t(s)])]),wa,a("p",null,[Ca,t(o,{to:"/doc/download.html"},{default:n(()=>[ya]),_:1}),Va]),qa,a("p",null,[Aa,a("a",La,[Ea,t(s)])]),Ma,Sa,Ba])}const Ha=d(l,[["render",Ia],["__file","faq.html.vue"]]);export{Ha as default}; diff --git a/3.x/assets/getstatic.html.194e97dd.js b/3.x/assets/getstatic.html.194e97dd.js new file mode 100644 index 00000000000..9ee3a14d17c --- /dev/null +++ b/3.x/assets/getstatic.html.194e97dd.js @@ -0,0 +1,34 @@ +import{_ as i,o as c,c as p,a as s,b as n,w as r,e as a,d as o,r as t}from"./app.4d248835.js";const d={},u=s("h1",{id:"getstatic",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#getstatic","aria-hidden":"true"},"#"),a(" getstatic")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-getstatic",target:"_blank",rel:"noopener noreferrer"},v=s("code",null,"getstatic",-1),b=a("\u5728\u7EBF\u6559\u7A0B"),k=s("h3",{id:"\u4F7F\u7528\u53C2\u8003",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#\u4F7F\u7528\u53C2\u8003","aria-hidden":"true"},"#"),a(" \u4F7F\u7528\u53C2\u8003")],-1),h=a("\u63A8\u8350\u76F4\u63A5\u4F7F\u7528"),g=a("ognl"),_=a("\u547D\u4EE4\uFF0C\u66F4\u52A0\u7075\u6D3B\u3002"),f=o(`

    \u901A\u8FC7 getstatic \u547D\u4EE4\u53EF\u4EE5\u65B9\u4FBF\u7684\u67E5\u770B\u7C7B\u7684\u9759\u6001\u5C5E\u6027\u3002\u4F7F\u7528\u65B9\u6CD5\u4E3Agetstatic class_name field_name

    $ getstatic demo.MathGame random
    +field: random
    +@Random[
    +    serialVersionUID=@Long[3905348978240129619],
    +    seed=@AtomicLong[120955813885284],
    +    multiplier=@Long[25214903917],
    +    addend=@Long[11],
    +    mask=@Long[281474976710655],
    +    DOUBLE_UNIT=@Double[1.1102230246251565E-16],
    +    BadBound=@String[bound must be positive],
    +    BadRange=@String[bound must be greater than origin],
    +    BadSize=@String[size must be non-negative],
    +    seedUniquifier=@AtomicLong[-3282039941672302964],
    +    nextNextGaussian=@Double[0.0],
    +    haveNextNextGaussian=@Boolean[false],
    +    serialPersistentFields=@ObjectStreamField[][isEmpty=false;size=3],
    +    unsafe=@Unsafe[sun.misc.Unsafe@2eaa1027],
    +    seedOffset=@Long[24],
    +]
    +
    • \u6307\u5B9A classLoader

    \u6CE8\u610F hashcode \u662F\u53D8\u5316\u7684\uFF0C\u9700\u8981\u5148\u67E5\u770B\u5F53\u524D\u7684 ClassLoader \u4FE1\u606F\uFF0C\u4F7F\u7528sc -d <ClassName>\u63D0\u53D6\u5BF9\u5E94 ClassLoader \u7684 hashcode\u3002

    \u5982\u679C\u4F60\u4F7F\u7528-c\uFF0C\u4F60\u9700\u8981\u624B\u52A8\u8F93\u5165 hashcode\uFF1A-c <hashcode>

    $ getstatic -c 3d4eac69 demo.MathGame random
    +

    \u5BF9\u4E8E\u53EA\u6709\u552F\u4E00\u5B9E\u4F8B\u7684 ClassLoader \u53EF\u4EE5\u901A\u8FC7--classLoaderClass\u6307\u5B9A class name\uFF0C\u4F7F\u7528\u8D77\u6765\u66F4\u52A0\u65B9\u4FBF\uFF1A

    getstatic --classLoaderClass sun.misc.Launcher$AppClassLoader demo.MathGame random

    • \u6CE8: \u8FD9\u91CC classLoaderClass \u5728 java 8 \u662F sun.misc.Launcher$AppClassLoader\uFF0C\u800Cjava 11\u7684classloader\u662Fjdk.internal.loader.ClassLoaders$AppClassLoader\uFF0Ckillercoda \u76EE\u524D\u73AF\u5883\u662F java11\u3002

    --classLoaderClass \u7684\u503C\u662F ClassLoader \u7684\u7C7B\u540D\uFF0C\u53EA\u6709\u5339\u914D\u5230\u552F\u4E00\u7684 ClassLoader \u5B9E\u4F8B\u65F6\u624D\u80FD\u5DE5\u4F5C\uFF0C\u76EE\u7684\u662F\u65B9\u4FBF\u8F93\u5165\u901A\u7528\u547D\u4EE4\uFF0C\u800C-c <hashcode>\u662F\u52A8\u6001\u53D8\u5316\u7684\u3002

    \u5982\u679C\u8BE5\u9759\u6001\u5C5E\u6027\u662F\u4E00\u4E2A\u590D\u6742\u5BF9\u8C61\uFF0C\u8FD8\u53EF\u4EE5\u652F\u6301\u5728\u8BE5\u5C5E\u6027\u4E0A\u901A\u8FC7 ognl \u8868\u793A\u8FDB\u884C\u904D\u5386\uFF0C\u8FC7\u6EE4\uFF0C\u8BBF\u95EE\u5BF9\u8C61\u7684\u5185\u90E8\u5C5E\u6027\u7B49\u64CD\u4F5C\u3002

    `,11),L=a("OGNL \u7279\u6B8A\u7528\u6CD5\u8BF7\u53C2\u8003\uFF1A"),x={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},C=a("https://github.com/alibaba/arthas/issues/71"),N=a("OGNL \u8868\u8FBE\u5F0F\u5B98\u65B9\u6307\u5357\uFF1A"),y={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},S=a("https://commons.apache.org/proper/commons-ognl/language-guide.html"),B=o(`

    \u4F8B\u5982\uFF0C\u5047\u8BBE n \u662F\u4E00\u4E2A Map\uFF0CMap \u7684 Key \u662F\u4E00\u4E2A Enum\uFF0C\u6211\u4EEC\u60F3\u8FC7\u6EE4\u51FA Map \u4E2D Key \u4E3A\u67D0\u4E2A Enum \u7684\u503C\uFF0C\u53EF\u4EE5\u5199\u5982\u4E0B\u547D\u4EE4

    $ getstatic com.alibaba.arthas.Test n 'entrySet().iterator.{? #this.key.name()=="STOP"}'
    +field: n
    +@ArrayList[
    +    @Node[STOP=bbb],
    +]
    +Affect(row-cnt:1) cost in 68 ms.
    +
    +
    +$ getstatic com.alibaba.arthas.Test m 'entrySet().iterator.{? #this.key=="a"}'
    +field: m
    +@ArrayList[
    +    @Node[a=aaa],
    +]
    +
    `,2);function A(E,G){const e=t("ExternalLinkIcon"),l=t("RouterLink");return c(),p("div",null,[u,s("p",null,[s("a",m,[v,b,n(e)])]),k,s("ul",null,[s("li",null,[h,n(l,{to:"/doc/ognl.html"},{default:r(()=>[g]),_:1}),_])]),f,s("ul",null,[s("li",null,[L,s("a",x,[C,n(e)])]),s("li",null,[N,s("a",y,[S,n(e)])])]),B])}const $=i(d,[["render",A],["__file","getstatic.html.vue"]]);export{$ as default}; diff --git a/3.x/assets/getstatic.html.2229049b.js b/3.x/assets/getstatic.html.2229049b.js new file mode 100644 index 00000000000..56f9b2a97cd --- /dev/null +++ b/3.x/assets/getstatic.html.2229049b.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-78c35af6","path":"/doc/getstatic.html","title":"getstatic","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":2},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/getstatic.md","version":"3.7.3"}');export{t as data}; diff --git a/3.x/assets/getstatic.html.d81e76f2.js b/3.x/assets/getstatic.html.d81e76f2.js new file mode 100644 index 00000000000..b4ecfbc2b53 --- /dev/null +++ b/3.x/assets/getstatic.html.d81e76f2.js @@ -0,0 +1,34 @@ +import{_ as o,o as i,c as l,a as s,b as e,e as a,d as t,r as c}from"./app.4d248835.js";const p={},r=s("h1",{id:"getstatic",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#getstatic","aria-hidden":"true"},"#"),a(" getstatic")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-getstatic",target:"_blank",rel:"noopener noreferrer"},d=s("code",null,"getstatic",-1),m=a(" online tutorial"),k=t(`

    Usage

    • It is recommended to use the [OGNL] (ognl.md) command, which will be more flexible.

    Check the static fields of classes conveniently, the usage is getstatic class_name field_name.

    $ getstatic demo.MathGame random
    +field: random
    +@Random[
    +    serialVersionUID=@Long[3905348978240129619],
    +    seed=@AtomicLong[120955813885284],
    +    multiplier=@Long[25214903917],
    +    addend=@Long[11],
    +    mask=@Long[281474976710655],
    +    DOUBLE_UNIT=@Double[1.1102230246251565E-16],
    +    BadBound=@String[bound must be positive],
    +    BadRange=@String[bound must be greater than origin],
    +    BadSize=@String[size must be non-negative],
    +    seedUniquifier=@AtomicLong[-3282039941672302964],
    +    nextNextGaussian=@Double[0.0],
    +    haveNextNextGaussian=@Boolean[false],
    +    serialPersistentFields=@ObjectStreamField[][isEmpty=false;size=3],
    +    unsafe=@Unsafe[sun.misc.Unsafe@2eaa1027],
    +    seedOffset=@Long[24],
    +]
    +
    • Specify classLoader

    Note that the hashcode changes, you need to check the current ClassLoader information first, and extract the hashcode corresponding to the ClassLoader using sc -d <ClassName>.

    if you use-c, you have to manually type hashcode by -c <hashcode>.

    $ getstatic -c 3d4eac69 demo.MathGame random
    +

    For classloader with only one instance, it can be specified by --classLoaderClass using class name, which is more convenient to use.

    getstatic --classLoaderClass demo.MathGame random

    • PS: Here the classLoaderClass in java 8 is sun.misc.Launcher$AppClassLoader, while in java 11 it's jdk.internal.loader.ClassLoaders$AppClassLoader. Currently killercoda using java 11.

    The value of --classloaderclass is the class name of classloader. It can only work when it matches a unique classloader instance. The purpose is to facilitate the input of general commands. However, -c <hashcode> is dynamic.

    `,12),v=a("Tip: if the static field is a complex class, you can even use "),h={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},b=s("code",null,"OGNL",-1),g=a(" to traverse, filter and access the inner properties of this class."),f={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},_=a("OGNL official guide"),y={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},L=a("Special usages"),x=t(`

    E.g. suppose n is a Map and its key is a Enum, then you can achieve this if you want to pick the key with a specific Enum value:

    $ getstatic com.alibaba.arthas.Test n 'entrySet().iterator.{? #this.key.name()=="STOP"}'
    +field: n
    +@ArrayList[
    +    @Node[STOP=bbb],
    +]
    +Affect(row-cnt:1) cost in 68 ms.
    +
    +
    +$ getstatic com.alibaba.arthas.Test m 'entrySet().iterator.{? #this.key=="a"}'
    +field: m
    +@ArrayList[
    +    @Node[a=aaa],
    +]
    +
    `,2);function N(S,w){const n=c("ExternalLinkIcon");return i(),l("div",null,[r,s("p",null,[s("a",u,[d,m,e(n)])]),k,s("p",null,[v,s("a",h,[b,e(n)]),g]),s("ul",null,[s("li",null,[s("a",f,[_,e(n)])]),s("li",null,[s("a",y,[L,e(n)])])]),x])}const B=o(p,[["render",N],["__file","getstatic.html.vue"]]);export{B as default}; diff --git a/3.x/assets/getstatic.html.e01bd744.js b/3.x/assets/getstatic.html.e01bd744.js new file mode 100644 index 00000000000..67af66b15ff --- /dev/null +++ b/3.x/assets/getstatic.html.e01bd744.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-2f908999","path":"/en/doc/getstatic.html","title":"getstatic","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":2},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/getstatic.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/grep.html.1c2ee274.js b/3.x/assets/grep.html.1c2ee274.js new file mode 100644 index 00000000000..dac9e080608 --- /dev/null +++ b/3.x/assets/grep.html.1c2ee274.js @@ -0,0 +1,30 @@ +import{_ as s,o as t,c as a,a as e,b as l,e as n,d as r,r as d}from"./app.4d248835.js";const c={},o=e("h1",{id:"grep",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#grep","aria-hidden":"true"},"#"),n(" grep")],-1),v={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-grep",target:"_blank",rel:"noopener noreferrer"},u=e("code",null,"grep",-1),m=n(" online tutorial"),p=r(`

    TIP

    Similar to the traditional grep command.

    Usage

     USAGE:
    +   grep [-A <value>] [-B <value>] [-C <value>] [-h] [-i] [-v] [-n] [-m <value>] [-e] [--trim-end] pattern
    +
    + SUMMARY:
    +   grep command for pipes.
    +
    + EXAMPLES:
    +  sysprop | grep java
    +  sysprop | grep java -n
    +  sysenv | grep -v JAVA
    +  sysenv | grep -e "(?i)(JAVA|sun)" -m 3  -C 2
    +  sysenv | grep JAVA -A2 -B3
    +  thread | grep -m 10 -e  "TIMED_WAITING|WAITING"
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/grep
    +
    + OPTIONS:
    + -A, --after-context <value>                                                    Print NUM lines of trailing context)
    + -B, --before-context <value>                                                   Print NUM lines of leading context)
    + -C, --context <value>                                                          Print NUM lines of output context)
    + -h, --help                                                                     this help
    + -i, --ignore-case                                                              Perform case insensitive matching.  By default, grep is case sensitive.
    + -v, --invert-match                                                             Select non-matching lines
    + -n, --line-number                                                              Print line number with output lines
    + -m, --max-count <value>                                                        stop after NUM selected lines)
    + -e, --regex                                                                    Enable regular expression to match
    +     --trim-end                                                                 Remove whitespaces at the end of the line
    + <pattern>                                                                      Pattern
    +
    `,3);function g(h,b){const i=d("ExternalLinkIcon");return t(),a("div",null,[o,e("p",null,[e("a",v,[u,m,l(i)])]),p])}const x=s(c,[["render",g],["__file","grep.html.vue"]]);export{x as default}; diff --git a/3.x/assets/grep.html.4aa91236.js b/3.x/assets/grep.html.4aa91236.js new file mode 100644 index 00000000000..a6ef052eac5 --- /dev/null +++ b/3.x/assets/grep.html.4aa91236.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-63f4cd5a","path":"/doc/grep.html","title":"grep","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/grep.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/grep.html.8e0aee31.js b/3.x/assets/grep.html.8e0aee31.js new file mode 100644 index 00000000000..2f02fd64613 --- /dev/null +++ b/3.x/assets/grep.html.8e0aee31.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-8b2b7482","path":"/en/doc/grep.html","title":"grep","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/grep.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/grep.html.c753d37b.js b/3.x/assets/grep.html.c753d37b.js new file mode 100644 index 00000000000..b7c7152114e --- /dev/null +++ b/3.x/assets/grep.html.c753d37b.js @@ -0,0 +1,30 @@ +import{_ as s,o as t,c as a,a as e,b as l,e as n,d as r,r as d}from"./app.4d248835.js";const c={},v=e("h1",{id:"grep",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#grep","aria-hidden":"true"},"#"),n(" grep")],-1),o={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-grep",target:"_blank",rel:"noopener noreferrer"},u=e("code",null,"grep",-1),m=n("\u5728\u7EBF\u6559\u7A0B"),p=r(`

    \u63D0\u793A

    \u7C7B\u4F3C\u4F20\u7EDF\u7684grep\u547D\u4EE4\u3002

    \u4F7F\u7528\u53C2\u8003

     USAGE:
    +   grep [-A <value>] [-B <value>] [-C <value>] [-h] [-i] [-v] [-n] [-m <value>] [-e] [--trim-end] pattern
    +
    + SUMMARY:
    +   grep command for pipes.
    +
    + EXAMPLES:
    +  sysprop | grep java
    +  sysprop | grep java -n
    +  sysenv | grep -v JAVA
    +  sysenv | grep -e "(?i)(JAVA|sun)" -m 3  -C 2
    +  sysenv | grep JAVA -A2 -B3
    +  thread | grep -m 10 -e  "TIMED_WAITING|WAITING"
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/grep
    +
    + OPTIONS:
    + -A, --after-context <value>                                                    Print NUM lines of trailing context)
    + -B, --before-context <value>                                                   Print NUM lines of leading context)
    + -C, --context <value>                                                          Print NUM lines of output context)
    + -h, --help                                                                     this help
    + -i, --ignore-case                                                              Perform case insensitive matching.  By default, grep is case sensitive.
    + -v, --invert-match                                                             Select non-matching lines
    + -n, --line-number                                                              Print line number with output lines
    + -m, --max-count <value>                                                        stop after NUM selected lines)
    + -e, --regex                                                                    Enable regular expression to match
    +     --trim-end                                                                 Remove whitespaces at the end of the line
    + <pattern>                                                                      Pattern
    +
    `,3);function g(h,b){const i=d("ExternalLinkIcon");return t(),a("div",null,[v,e("p",null,[e("a",o,[u,m,l(i)])]),p])}const x=s(c,[["render",g],["__file","grep.html.vue"]]);export{x as default}; diff --git a/3.x/assets/groovy.html.21de60b6.js b/3.x/assets/groovy.html.21de60b6.js new file mode 100644 index 00000000000..d4fe26d3183 --- /dev/null +++ b/3.x/assets/groovy.html.21de60b6.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-809381ca","path":"/doc/groovy.html","title":"groovy","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"\u9650\u5236\u5185\u5BB9","slug":"\u9650\u5236\u5185\u5BB9","link":"#\u9650\u5236\u5185\u5BB9","children":[]},{"level":3,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":3,"title":"\u4E94\u4E2A\u5173\u952E\u51FD\u6570\u58F0\u660E","slug":"\u4E94\u4E2A\u5173\u952E\u51FD\u6570\u58F0\u660E","link":"#\u4E94\u4E2A\u5173\u952E\u51FD\u6570\u58F0\u660E","children":[]},{"level":3,"title":"\u53C2\u6570 Advice \u8BF4\u660E","slug":"\u53C2\u6570-advice-\u8BF4\u660E","link":"#\u53C2\u6570-advice-\u8BF4\u660E","children":[]},{"level":3,"title":"\u53C2\u6570 Output \u8BF4\u660E","slug":"\u53C2\u6570-output-\u8BF4\u660E","link":"#\u53C2\u6570-output-\u8BF4\u660E","children":[]},{"level":3,"title":"\u4E00\u4E2A\u8F93\u51FA\u65E5\u5FD7\u7684 groovy \u811A\u672C\u793A\u4F8B","slug":"\u4E00\u4E2A\u8F93\u51FA\u65E5\u5FD7\u7684-groovy-\u811A\u672C\u793A\u4F8B","link":"#\u4E00\u4E2A\u8F93\u51FA\u65E5\u5FD7\u7684-groovy-\u811A\u672C\u793A\u4F8B","children":[]}],"git":{"updatedTime":1658120060000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/groovy.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/groovy.html.292661c1.js b/3.x/assets/groovy.html.292661c1.js new file mode 100644 index 00000000000..d38f92014b7 --- /dev/null +++ b/3.x/assets/groovy.html.292661c1.js @@ -0,0 +1,124 @@ +import{_ as e,o as p,c,a as s,b as i,w as o,d as a,e as n,r as l}from"./app.4d248835.js";const u={},d=a(`

    groovy

    \u63D0\u793A

    Arthas \u652F\u6301 groovy \u811A\u672C\u589E\u5F3A\uFF0C\u5141\u8BB8\u50CF BTrace \u4E00\u6837\u7F16\u5199\u811A\u672C\u6765\u89E3\u51B3\u95EE\u9898\uFF0C\u53EF\u4EE5\u5728 groovy \u811A\u672C\u4E2D\u8FDB\u884C if/for/switch/while \u7B49\u63A7\u5236\u8BED\u53E5\uFF0C\u4E0D\u53D7\u9650\u5236\uFF0C\u4F46\u76F8\u6BD4 BTrace \u800C\u8A00\u62E5\u6709\u66F4\u591A\u7684\u9650\u5236\u8303\u56F4\u3002

    \u9650\u5236\u5185\u5BB9

    1. \u7981\u6B62\u6539\u53D8\u539F\u6709\u903B\u8F91\uFF0C\u4E0E watch \u7B49\u547D\u4EE4\u4E00\u6837\uFF0C\u91CD\u70B9\u4FDD\u8BC1\u7684\u662F\u76D1\u542C\u548C\u89C2\u5BDF\u3002
    2. \u53EA\u5141\u8BB8\u5728\u65B9\u6CD5\u7684 before/success/exception/finish \u56DB\u4E2A\u73AF\u8282\u8FDB\u884C\u76D1\u542C\u3002

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    class-pattern\u7C7B\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    method-pattern\u65B9\u6CD5\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    script-filepathgroovy \u811A\u672C\u7684\u7EDD\u5BF9\u8DEF\u5F84
    [S]\u5339\u914D\u6240\u6709\u7684\u5B50\u7C7B
    [E]\u5F00\u542F\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\uFF0C\u9ED8\u8BA4\u4E3A\u901A\u914D\u7B26\u5339\u914D

    \u9700\u8981\u8BF4\u660E\u7684\u662F\uFF0C\u7B2C\u4E09\u4E2A\u8F93\u5165\u53C2\u6570\u662F\u811A\u672C\u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u6BD4\u5982 /tmp/test.groovy\uFF0C\u4E0D\u5EFA\u8BAE\u8F93\u5165\u76F8\u5BF9\u8DEF\u5F84\uFF0C\u6BD4\u5982 ./test.groovy

    \u4E94\u4E2A\u5173\u952E\u51FD\u6570\u58F0\u660E

    /**
    + * \u589E\u5F3A\u811A\u672C\u76D1\u542C\u5668
    + */
    +interface ScriptListener {
    +
    +    /**
    +     * \u811A\u672C\u521B\u5EFA
    +     *
    +     * @param output \u8F93\u51FA\u5668
    +     */
    +    void create(Output output);
    +
    +    /**
    +     * \u811A\u672C\u9500\u6BC1
    +     *
    +     * @param output \u8F93\u51FA\u5668
    +     */
    +    void destroy(Output output);
    +
    +    /**
    +     * \u65B9\u6CD5\u6267\u884C\u524D
    +     *
    +     * @param output \u8F93\u51FA\u5668
    +     * @param advice \u901A\u77E5\u70B9
    +     */
    +    void before(Output output, Advice advice);
    +
    +    /**
    +     * \u65B9\u6CD5\u6B63\u5E38\u8FD4\u56DE
    +     *
    +     * @param output \u8F93\u51FA\u5668
    +     * @param advice \u901A\u77E5\u70B9
    +     */
    +    void afterReturning(Output output, Advice advice);
    +
    +    /**
    +     * \u65B9\u6CD5\u5F02\u5E38\u8FD4\u56DE
    +     *
    +     * @param output \u8F93\u51FA\u5668
    +     * @param advice \u901A\u77E5\u70B9
    +     */
    +    void afterThrowing(Output output, Advice advice);
    +
    +}
    +

    \u53C2\u6570 Advice \u8BF4\u660E

    `,10),r=s("code",null,"Advice",-1),v=n(" \u53C2\u6570\u6700\u4E3B\u8981\u662F\u5C01\u88C5\u4E86\u901A\u77E5\u8282\u70B9\u7684\u6240\u6709\u4FE1\u606F\u3002\u53C2\u8003"),k=n("\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF"),m=n("\u4E2D\u5173\u4E8E\u8BE5\u8282\u70B9\u7684\u63CF\u8FF0\u3002"),b=a(`

    \u53C2\u6570 Output \u8BF4\u660E

    Output \u53C2\u6570\u53EA\u62E5\u6709\u4E09\u4E2A\u65B9\u6CD5\uFF0C\u4E3B\u8981\u7684\u5DE5\u4F5C\u8FD8\u662F\u8F93\u51FA\u5BF9\u5E94\u7684\u6587\u672C\u4FE1\u606F

    /**
    + * \u8F93\u51FA\u5668
    + */
    +interface Output {
    +
    +    /**
    +     * \u8F93\u51FA\u5B57\u7B26\u4E32(\u4E0D\u6362\u884C)
    +     *
    +     * @param string \u5F85\u8F93\u51FA\u5B57\u7B26\u4E32
    +     * @return this
    +     */
    +    Output print(String string);
    +
    +    /**
    +     * \u8F93\u51FA\u5B57\u7B26\u4E32(\u6362\u884C)
    +     *
    +     * @param string \u5F85\u8F93\u51FA\u5B57\u7B26\u4E32
    +     * @return this
    +     */
    +    Output println(String string);
    +
    +    /**
    +     * \u7ED3\u675F\u5F53\u524D\u811A\u672C
    +     *
    +     * @return this
    +     */
    +    Output finish();
    +
    +}
    +

    \u4E00\u4E2A\u8F93\u51FA\u65E5\u5FD7\u7684 groovy \u811A\u672C\u793A\u4F8B

    import com.taobao.arthas.core.command.ScriptSupportCommand
    +import com.taobao.arthas.core.util.Advice
    +
    +import static java.lang.String.format
    +
    +/**
    + * \u8F93\u51FA\u65B9\u6CD5\u65E5\u5FD7
    + */
    +public class Logger implements ScriptSupportCommand.ScriptListener {
    +
    +    @Override
    +    void create(ScriptSupportCommand.Output output) {
    +        output.println("script create.");
    +    }
    +
    +    @Override
    +    void destroy(ScriptSupportCommand.Output output) {
    +        output.println("script destroy.");
    +    }
    +
    +    @Override
    +    void before(ScriptSupportCommand.Output output, Advice advice) {
    +        output.println(format("before:class=%s;method=%s;paramslen=%d;%s;",
    +                advice.getClazz().getSimpleName(),
    +                advice.getMethod().getName(),
    +                advice.getParams().length, advice.getParams()))
    +    }
    +
    +    @Override
    +    void afterReturning(ScriptSupportCommand.Output output, Advice advice) {
    +        output.println(format("returning:class=%s;method=%s;",
    +                advice.getClazz().getSimpleName(),
    +                advice.getMethod().getName()))
    +    }
    +
    +    @Override
    +    void afterThrowing(ScriptSupportCommand.Output output, Advice advice) {
    +        output.println(format("throwing:class=%s;method=%s;",
    +                advice.getClazz().getSimpleName(),
    +                advice.getMethod().getName()))
    +    }
    +}
    +

    \u4F7F\u7528\u793A\u4F8B\uFF1A

    $ groovy com.alibaba.sample.petstore.dal.dao.ProductDao getProductById /Users/zhuyong/middleware/arthas/scripts/Logger.groovy -S
    +script create.
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 102 ms.
    +before:class=IbatisProductDao;method=getProductById;paramslen=1;[Ljava.lang.Object;@45df64fc;
    +returning:class=IbatisProductDao;method=getProductById;
    +before:class=IbatisProductDao;method=getProductById;paramslen=1;[Ljava.lang.Object;@5b0e2d00;
    +returning:class=IbatisProductDao;method=getProductById;
    +
    `,7);function g(h,f){const t=l("RouterLink");return p(),c("div",null,[d,s("p",null,[r,v,i(t,{to:"/doc/advice-class.html"},{default:o(()=>[k]),_:1}),m]),b])}const w=e(u,[["render",g],["__file","groovy.html.vue"]]);export{w as default}; diff --git a/3.x/assets/groovy.html.2ef01485.js b/3.x/assets/groovy.html.2ef01485.js new file mode 100644 index 00000000000..25cb14f0fdc --- /dev/null +++ b/3.x/assets/groovy.html.2ef01485.js @@ -0,0 +1,124 @@ +import{_ as e,o as p,c as o,a as s,b as i,w as c,d as a,e as n,r as l}from"./app.4d248835.js";const u={},r=a(`

    groovy

    TIP

    Arthas support groovy scripting to allow user to use script like BTrace. It is possible to use if/for/switch/while in groovy scripting, but has more limitations compared to BTrace.

    Limitations

    1. Prohibit from alternating the original logic. Like watch command, The major purpose of scripting is monitoring and observing.
    2. Only allow to monitor at the stages of before/success/exception/finish on one method.

    Parameters

    ParameterExplanation
    class-patternclass name pattern
    method-patternmethod name pattern
    script-filepaththe absolute path of the groovy script
    [S]match all sub classes
    [E]enable regex match, the default is wildcard match

    Note: the third parameter script-filepath must be the absolute path of the groovy script, for example /tmp/test.groovy. It is not recommended to use relative path, e.g. ./test.groovy.

    Explanation on the important callbacks

    /**
    + * Listeners for script to enhance the class
    + */
    +interface ScriptListener {
    +
    +    /**
    +     * When the script is created
    +     *
    +     * @param output Output
    +     */
    +    void create(Output output);
    +
    +    /**
    +     * When the script is destroyed
    +     *
    +     * @param output Output
    +     */
    +    void destroy(Output output);
    +
    +    /**
    +     * Before the method executes
    +     *
    +     * @param output Output
    +     * @param advice Advice
    +     */
    +    void before(Output output, Advice advice);
    +
    +    /**
    +     * After the method returns
    +     *
    +     * @param output Output
    +     * @param advice Advice
    +     */
    +    void afterReturning(Output output, Advice advice);
    +
    +    /**
    +     * After the method throws exceptions
    +     *
    +     * @param output Output
    +     * @param advice Advice
    +     */
    +    void afterThrowing(Output output, Advice advice);
    +
    +}
    +

    Advice parameter

    `,10),d=s("code",null,"Advice",-1),k=n(" contains all information necessary for notification. Refer to "),v=n("expression core parameters"),m=n(" for more details."),b=a(`

    Output parameter

    There are three methods in Output, used for outputting the corresponding text.

    /**
    + * Output
    + */
    +interface Output {
    +
    +    /**
    +     * Output text without line break
    +     *
    +     * @param string Text to output
    +     * @return this
    +     */
    +    Output print(String string);
    +
    +    /**
    +     * Output text with line break
    +     *
    +     * @param string Text to output
    +     * @return this
    +     */
    +    Output println(String string);
    +
    +    /**
    +     * Finish outputting from the script
    +     *
    +     * @return this
    +     */
    +    Output finish();
    +
    +}
    +

    A groovy sample script to output logs

    import com.taobao.arthas.core.command.ScriptSupportCommand
    +import com.taobao.arthas.core.util.Advice
    +
    +import static java.lang.String.format
    +
    +/**
    + * Output method logs
    + */
    +public class Logger implements ScriptSupportCommand.ScriptListener {
    +
    +    @Override
    +    void create(ScriptSupportCommand.Output output) {
    +        output.println("script create.");
    +    }
    +
    +    @Override
    +    void destroy(ScriptSupportCommand.Output output) {
    +        output.println("script destroy.");
    +    }
    +
    +    @Override
    +    void before(ScriptSupportCommand.Output output, Advice advice) {
    +        output.println(format("before:class=%s;method=%s;paramslen=%d;%s;",
    +                advice.getClazz().getSimpleName(),
    +                advice.getMethod().getName(),
    +                advice.getParams().length, advice.getParams()))
    +    }
    +
    +    @Override
    +    void afterReturning(ScriptSupportCommand.Output output, Advice advice) {
    +        output.println(format("returning:class=%s;method=%s;",
    +                advice.getClazz().getSimpleName(),
    +                advice.getMethod().getName()))
    +    }
    +
    +    @Override
    +    void afterThrowing(ScriptSupportCommand.Output output, Advice advice) {
    +        output.println(format("throwing:class=%s;method=%s;",
    +                advice.getClazz().getSimpleName(),
    +                advice.getMethod().getName()))
    +    }
    +}
    +

    Run the script like this:

    $ groovy com.alibaba.sample.petstore.dal.dao.ProductDao getProductById /Users/zhuyong/middleware/arthas/scripts/Logger.groovy -S
    +script create.
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 102 ms.
    +before:class=IbatisProductDao;method=getProductById;paramslen=1;[Ljava.lang.Object;@45df64fc;
    +returning:class=IbatisProductDao;method=getProductById;
    +before:class=IbatisProductDao;method=getProductById;paramslen=1;[Ljava.lang.Object;@5b0e2d00;
    +returning:class=IbatisProductDao;method=getProductById;
    +
    `,7);function h(g,f){const t=l("RouterLink");return p(),o("div",null,[r,s("p",null,[d,k,i(t,{to:"/en/doc/advice-class.html"},{default:c(()=>[v]),_:1}),m]),b])}const w=e(u,[["render",h],["__file","groovy.html.vue"]]);export{w as default}; diff --git a/3.x/assets/groovy.html.92f5e844.js b/3.x/assets/groovy.html.92f5e844.js new file mode 100644 index 00000000000..694d420eb21 --- /dev/null +++ b/3.x/assets/groovy.html.92f5e844.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-25a18087","path":"/en/doc/groovy.html","title":"groovy","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"Limitations","slug":"limitations","link":"#limitations","children":[]},{"level":3,"title":"Parameters","slug":"parameters","link":"#parameters","children":[]},{"level":3,"title":"Explanation on the important callbacks","slug":"explanation-on-the-important-callbacks","link":"#explanation-on-the-important-callbacks","children":[]},{"level":3,"title":"Advice parameter","slug":"advice-parameter","link":"#advice-parameter","children":[]},{"level":3,"title":"Output parameter","slug":"output-parameter","link":"#output-parameter","children":[]},{"level":3,"title":"A groovy sample script to output logs","slug":"a-groovy-sample-script-to-output-logs","link":"#a-groovy-sample-script-to-output-logs","children":[]}],"git":{"updatedTime":1658120060000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/groovy.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/heapdump.html.19f5486f.js b/3.x/assets/heapdump.html.19f5486f.js new file mode 100644 index 00000000000..2e4d6cc95ba --- /dev/null +++ b/3.x/assets/heapdump.html.19f5486f.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-c0b1d216","path":"/en/doc/heapdump.html","title":"heapdump","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"Dump to file","slug":"dump-to-file","link":"#dump-to-file","children":[]},{"level":3,"title":"Dump only live objects","slug":"dump-only-live-objects","link":"#dump-only-live-objects","children":[]},{"level":3,"title":"Dump to tmp file","slug":"dump-to-tmp-file","link":"#dump-to-tmp-file","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":2},{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1}]},"filePathRelative":"en/doc/heapdump.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/heapdump.html.2d73c547.js b/3.x/assets/heapdump.html.2d73c547.js new file mode 100644 index 00000000000..5193f1f5aea --- /dev/null +++ b/3.x/assets/heapdump.html.2d73c547.js @@ -0,0 +1,10 @@ +import{_ as s,o as t,c as d,a,b as p,e,d as i,r as c}from"./app.4d248835.js";const r={},o=a("h1",{id:"heapdump",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#heapdump","aria-hidden":"true"},"#"),e(" heapdump")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-heapdump",target:"_blank",rel:"noopener noreferrer"},l=a("code",null,"heapdump",-1),h=e("\u5728\u7EBF\u6559\u7A0B"),m=i(`

    \u63D0\u793A

    dump java heap, \u7C7B\u4F3C jmap \u547D\u4EE4\u7684 heap dump \u529F\u80FD\u3002

    \u4F7F\u7528\u53C2\u8003

    dump \u5230\u6307\u5B9A\u6587\u4EF6

    [arthas@58205]$ heapdump arthas-output/dump.hprof
    +Dumping heap to arthas-output/dump.hprof ...
    +Heap dump file created
    +

    \u63D0\u793A

    \u751F\u6210\u6587\u4EF6\u5728arthas-output\u76EE\u5F55\uFF0C\u53EF\u4EE5\u901A\u8FC7\u6D4F\u89C8\u5668\u4E0B\u8F7D\uFF1A http://localhost:8563/arthas-output/

    \u53EA dump live \u5BF9\u8C61

    [arthas@58205]$ heapdump --live /tmp/dump.hprof
    +Dumping heap to /tmp/dump.hprof ...
    +Heap dump file created
    +

    dump \u5230\u4E34\u65F6\u6587\u4EF6

    [arthas@58205]$ heapdump
    +Dumping heap to /var/folders/my/wy7c9w9j5732xbkcyt1mb4g40000gp/T/heapdump2019-09-03-16-385121018449645518991.hprof...
    +Heap dump file created
    +
    `,9);function v(b,f){const n=c("ExternalLinkIcon");return t(),d("div",null,[o,a("p",null,[a("a",u,[l,h,p(n)])]),m])}const g=s(r,[["render",v],["__file","heapdump.html.vue"]]);export{g as default}; diff --git a/3.x/assets/heapdump.html.3fe356b2.js b/3.x/assets/heapdump.html.3fe356b2.js new file mode 100644 index 00000000000..04dfe286aee --- /dev/null +++ b/3.x/assets/heapdump.html.3fe356b2.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-07868089","path":"/doc/heapdump.html","title":"heapdump","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"dump \u5230\u6307\u5B9A\u6587\u4EF6","slug":"dump-\u5230\u6307\u5B9A\u6587\u4EF6","link":"#dump-\u5230\u6307\u5B9A\u6587\u4EF6","children":[]},{"level":3,"title":"\u53EA dump live \u5BF9\u8C61","slug":"\u53EA-dump-live-\u5BF9\u8C61","link":"#\u53EA-dump-live-\u5BF9\u8C61","children":[]}]},{"level":2,"title":"dump \u5230\u4E34\u65F6\u6587\u4EF6","slug":"dump-\u5230\u4E34\u65F6\u6587\u4EF6","link":"#dump-\u5230\u4E34\u65F6\u6587\u4EF6","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":2},{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"cao","email":"caojinsheng123@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1}]},"filePathRelative":"doc/heapdump.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/heapdump.html.51c1271f.js b/3.x/assets/heapdump.html.51c1271f.js new file mode 100644 index 00000000000..7627b32a4e4 --- /dev/null +++ b/3.x/assets/heapdump.html.51c1271f.js @@ -0,0 +1,10 @@ +import{_ as s,o as t,c as i,a,b as d,e,d as p,r as o}from"./app.4d248835.js";const c={},r=a("h1",{id:"heapdump",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#heapdump","aria-hidden":"true"},"#"),e(" heapdump")],-1),l={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-heapdump",target:"_blank",rel:"noopener noreferrer"},u=a("code",null,"heapdump",-1),h=e(" online tutorial"),m=p(`

    TIP

    dump java heap in hprof binary format, like jmap.

    Usage

    Dump to file

    [arthas@58205]$ heapdump arthas-output/dump.hprof
    +Dumping heap to arthas-output/dump.hprof ...
    +Heap dump file created
    +

    TIP

    The generated file is located in the arthas-output directory and can be downloaded through the browser at http://localhost:8563/arthas-output/

    Dump only live objects

    [arthas@58205]$ heapdump --live /tmp/dump.hprof
    +Dumping heap to /tmp/dump.hprof ...
    +Heap dump file created
    +

    Dump to tmp file

    [arthas@58205]$ heapdump
    +Dumping heap to /var/folders/my/wy7c9w9j5732xbkcyt1mb4g40000gp/T/heapdump2019-09-03-16-385121018449645518991.hprof...
    +Heap dump file created
    +
    `,9);function v(b,f){const n=o("ExternalLinkIcon");return t(),i("div",null,[r,a("p",null,[a("a",l,[u,h,d(n)])]),m])}const _=s(c,[["render",v],["__file","heapdump.html.vue"]]);export{_ as default}; diff --git a/3.x/assets/help.html.3d260e86.js b/3.x/assets/help.html.3d260e86.js new file mode 100644 index 00000000000..45432b11172 --- /dev/null +++ b/3.x/assets/help.html.3d260e86.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-7a8b0c34","path":"/en/doc/help.html","title":"help","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/help.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/help.html.5a1d36ec.js b/3.x/assets/help.html.5a1d36ec.js new file mode 100644 index 00000000000..57c2fce2a52 --- /dev/null +++ b/3.x/assets/help.html.5a1d36ec.js @@ -0,0 +1,66 @@ +import{_ as e,o as i,c as n,d as s}from"./app.4d248835.js";const a={},l=s(`

    help

    \u67E5\u770B\u547D\u4EE4\u5E2E\u52A9\u4FE1\u606F\uFF0C\u53EF\u4EE5\u67E5\u770B\u5F53\u524D arthas \u7248\u672C\u652F\u6301\u7684\u6307\u4EE4\uFF0C\u6216\u8005\u67E5\u770B\u5177\u4F53\u6307\u4EE4\u7684\u4F7F\u7528\u8BF4\u660E\u3002

    \u63D0\u793A

    [help \u6307\u4EE4]\u7684\u7B49\u540C\u4E8E[\u6307\u4EE4 -help]\uFF0C\u90FD\u662F\u67E5\u770B\u5177\u4F53\u6307\u4EE4\u7684\u4F7F\u7528\u8BF4\u660E\u3002

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    \u4E0D\u63A5\u53C2\u6570\u67E5\u8BE2\u5F53\u524D arthas \u7248\u672C\u652F\u6301\u7684\u6307\u4EE4\u4EE5\u53CA\u6307\u4EE4\u63CF\u8FF0
    [name:]\u67E5\u8BE2\u5177\u4F53\u6307\u4EE4\u7684\u4F7F\u7528\u8BF4\u660E

    \u4F7F\u7528\u53C2\u8003

    $ help
    + NAME         DESCRIPTION
    + help         Display Arthas Help
    + auth         Authenticates the current session
    + keymap       Display all the available keymap for the specified connection.
    + sc           Search all the classes loaded by JVM
    + sm           Search the method of classes loaded by JVM
    + classloader  Show classloader info
    + jad          Decompile class
    + getstatic    Show the static field of a class
    + monitor      Monitor method execution statistics, e.g. total/success/failure count, average rt, fail rate, etc.
    + stack        Display the stack trace for the specified class and method
    + thread       Display thread info, thread stack
    + trace        Trace the execution time of specified method invocation.
    + watch        Display the input/output parameter, return object, and thrown exception of specified method invocation
    + tt           Time Tunnel
    + jvm          Display the target JVM information
    + perfcounter  Display the perf counter information.
    + ognl         Execute ognl expression.
    + mc           Memory compiler, compiles java files into bytecode and class files in memory.
    + redefine     Redefine classes. @see Instrumentation#redefineClasses(ClassDefinition...)
    + retransform  Retransform classes. @see Instrumentation#retransformClasses(Class...)
    + dashboard    Overview of target jvm's thread, memory, gc, vm, tomcat info.
    + dump         Dump class byte array from JVM
    + heapdump     Heap dump
    + options      View and change various Arthas options
    + cls          Clear the screen
    + reset        Reset all the enhanced classes
    + version      Display Arthas version
    + session      Display current session information
    + sysprop      Display, and change the system properties.
    + sysenv       Display the system env.
    + vmoption     Display, and update the vm diagnostic options.
    + logger       Print logger info, and update the logger level
    + history      Display command history
    + cat          Concatenate and print files
    + base64       Encode and decode using Base64 representation
    + echo         write arguments to the standard output
    + pwd          Return working directory name
    + mbean        Display the mbean information
    + grep         grep command for pipes.
    + tee          tee command for pipes.
    + profiler     Async Profiler. https://github.com/jvm-profiling-tools/async-profiler
    + stop         Stop/Shutdown Arthas server and exit the console.
    +
    +
    +
     $ help dashboard
    +  USAGE:
    +   dashboard [-h] [-i <value>] [-n <value>]
    +
    + SUMMARY:
    +   Overview of target jvm's thread, memory, gc, vm, tomcat info.
    +
    + EXAMPLES:
    +   dashboard
    +   dashboard -n 10
    +   dashboard -i 2000
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/dashboard
    +
    + OPTIONS:
    + -h, --help                              this help
    + -i, --interval <value>                  The interval (in ms) between two executions, default is 5000 ms.
    + -n, --number-of-execution <value>       The number of times this command will be executed.
    +
    `,8),t=[l];function d(r,c){return i(),n("div",null,t)}const o=e(a,[["render",d],["__file","help.html.vue"]]);export{o as default}; diff --git a/3.x/assets/help.html.67ffadca.js b/3.x/assets/help.html.67ffadca.js new file mode 100644 index 00000000000..5704764ac34 --- /dev/null +++ b/3.x/assets/help.html.67ffadca.js @@ -0,0 +1,66 @@ +import{_ as n,o as s,c as e,d as a}from"./app.4d248835.js";const i={},t=a(`

    help

    show help message, the command can show all the commands that current Arthas server supports,or you can use the command to show the detail usage of another command.

    TIP

    [help command] equals [command -help],both is to show the detail usage of one command.

    Options

    NameSpecification
    show all the commands that current Arthas server supports
    [name:]show the detail usage of one command

    Usage

    $ help
    + NAME         DESCRIPTION
    + help         Display Arthas Help
    + auth         Authenticates the current session
    + keymap       Display all the available keymap for the specified connection.
    + sc           Search all the classes loaded by JVM
    + sm           Search the method of classes loaded by JVM
    + classloader  Show classloader info
    + jad          Decompile class
    + getstatic    Show the static field of a class
    + monitor      Monitor method execution statistics, e.g. total/success/failure count, average rt, fail rate, etc.
    + stack        Display the stack trace for the specified class and method
    + thread       Display thread info, thread stack
    + trace        Trace the execution time of specified method invocation.
    + watch        Display the input/output parameter, return object, and thrown exception of specified method invocation
    + tt           Time Tunnel
    + jvm          Display the target JVM information
    + perfcounter  Display the perf counter information.
    + ognl         Execute ognl expression.
    + mc           Memory compiler, compiles java files into bytecode and class files in memory.
    + redefine     Redefine classes. @see Instrumentation#redefineClasses(ClassDefinition...)
    + retransform  Retransform classes. @see Instrumentation#retransformClasses(Class...)
    + dashboard    Overview of target jvm's thread, memory, gc, vm, tomcat info.
    + dump         Dump class byte array from JVM
    + heapdump     Heap dump
    + options      View and change various Arthas options
    + cls          Clear the screen
    + reset        Reset all the enhanced classes
    + version      Display Arthas version
    + session      Display current session information
    + sysprop      Display, and change the system properties.
    + sysenv       Display the system env.
    + vmoption     Display, and update the vm diagnostic options.
    + logger       Print logger info, and update the logger level
    + history      Display command history
    + cat          Concatenate and print files
    + base64       Encode and decode using Base64 representation
    + echo         write arguments to the standard output
    + pwd          Return working directory name
    + mbean        Display the mbean information
    + grep         grep command for pipes.
    + tee          tee command for pipes.
    + profiler     Async Profiler. https://github.com/jvm-profiling-tools/async-profiler
    + stop         Stop/Shutdown Arthas server and exit the console.
    +
    +
    +
     $ help dashboard
    +  USAGE:
    +   dashboard [-h] [-i <value>] [-n <value>]
    +
    + SUMMARY:
    +   Overview of target jvm's thread, memory, gc, vm, tomcat info.
    +
    + EXAMPLES:
    +   dashboard
    +   dashboard -n 10
    +   dashboard -i 2000
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/dashboard
    +
    + OPTIONS:
    + -h, --help                              this help
    + -i, --interval <value>                  The interval (in ms) between two executions, default is 5000 ms.
    + -n, --number-of-execution <value>       The number of times this command will be executed.
    +
    `,8),l=[t];function o(c,r){return s(),e("div",null,l)}const p=n(i,[["render",o],["__file","help.html.vue"]]);export{p as default}; diff --git a/3.x/assets/help.html.7ba26453.js b/3.x/assets/help.html.7ba26453.js new file mode 100644 index 00000000000..cf3058ef098 --- /dev/null +++ b/3.x/assets/help.html.7ba26453.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-e3b34070","path":"/doc/help.html","title":"help","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/help.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/history.html.006cedb1.js b/3.x/assets/history.html.006cedb1.js new file mode 100644 index 00000000000..00ed9b65f57 --- /dev/null +++ b/3.x/assets/history.html.006cedb1.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-4402cd49","path":"/en/doc/history.html","title":"history","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/history.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/history.html.3f90631d.js b/3.x/assets/history.html.3f90631d.js new file mode 100644 index 00000000000..04b2b2e0d9b --- /dev/null +++ b/3.x/assets/history.html.3f90631d.js @@ -0,0 +1,10 @@ +import{_ as e,o as t,c as i,d as s}from"./app.4d248835.js";const a={},n=s(`

    history

    \u6253\u5370\u547D\u4EE4\u5386\u53F2\u3002

    \u63D0\u793A

    \u5386\u53F2\u6307\u4EE4\u4F1A\u901A\u8FC7\u4E00\u4E2A\u540D\u53EB history \u7684\u6587\u4EF6\u6301\u4E45\u5316\uFF0C\u6240\u4EE5 history \u6307\u4EE4\u53EF\u4EE5\u67E5\u770B\u5F53\u524D arthas \u670D\u52A1\u5668\u7684\u6240\u6709\u5386\u53F2\u547D\u4EE4\uFF0C\u800C\u4E0D\u4EC5\u53EA\u662F\u5F53\u524D\u6B21\u4F1A\u8BDD\u4F7F\u7528\u8FC7\u7684\u547D\u4EE4\u3002

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    [c:]\u6E05\u7A7A\u5386\u53F2\u6307\u4EE4
    [n:]\u663E\u793A\u6700\u8FD1\u6267\u884C\u7684 n \u6761\u6307\u4EE4

    \u4F7F\u7528\u53C2\u8003

    #\u67E5\u770B\u6700\u8FD1\u6267\u884C\u76843\u6761\u6307\u4EE4
    +$ history 3
    +  269  thread
    +  270  cls
    +  271  history 3
    +
     #\u6E05\u7A7A\u6307\u4EE4
    + $ history -c
    + $ history 3
    +  1  history 3
    +
    `,8),d=[n];function r(l,c){return t(),i("div",null,d)}const o=e(a,[["render",r],["__file","history.html.vue"]]);export{o as default}; diff --git a/3.x/assets/history.html.5c8da1d4.js b/3.x/assets/history.html.5c8da1d4.js new file mode 100644 index 00000000000..e77468a7e5d --- /dev/null +++ b/3.x/assets/history.html.5c8da1d4.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-26f43d96","path":"/doc/history.html","title":"history","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/history.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/history.html.72971f6a.js b/3.x/assets/history.html.72971f6a.js new file mode 100644 index 00000000000..9736c9e40d4 --- /dev/null +++ b/3.x/assets/history.html.72971f6a.js @@ -0,0 +1,10 @@ +import{_ as s,o as e,c as n,d as a}from"./app.4d248835.js";const t={},i=a(`

    history

    view command history.

    TIP

    history of commands will persisted in a file named history, so the history command can show all the history commands of current Arthas server ,but not only history in current session.

    Options

    NameSpecification
    [c:]clear all the history commands
    [n:]view the nearest 5 commands

    Usage

    #view the nearest 3 commands
    +$ history 3
    +  269  thread
    +  270  cls
    +  271  history 3
    +
     #clear all the history commands
    + $ history -c
    + $ history 3
    +  1  history 3
    +
    `,8),r=[i];function l(o,c){return e(),n("div",null,r)}const h=s(t,[["render",l],["__file","history.html.vue"]]);export{h as default}; diff --git a/3.x/assets/http-api.html.1bd8ba57.js b/3.x/assets/http-api.html.1bd8ba57.js new file mode 100644 index 00000000000..0db1b4664db --- /dev/null +++ b/3.x/assets/http-api.html.1bd8ba57.js @@ -0,0 +1,344 @@ +import{_ as i}from"./arthas-web-ui.89f4fc6d.js";import{_ as c,o as l,c as u,a as s,b as a,w as r,e as n,d as t,r as o}from"./app.4d248835.js";const d={},m=s("h1",{id:"http-api",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#http-api","aria-hidden":"true"},"#"),n(" Http API")],-1),v={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=case-http-api",target:"_blank",rel:"noopener noreferrer"},k=s("code",null,"Http API",-1),b=n(" online tutorial"),h=t(`

    Overview

    Http API provides a RESTful-like interactive interface, and both requests and responses data in JSON format. Compared with Telnet/WebConsole's output unstructured text data, Http API can provide structured data and support more complex interactive functions, such as a series of diagnostic operations in specific application scenarios.

    Access address

    The Http API address is: http://ip:port/api, the request parameters must be submitted using POST. Such as POST http://127.0.0.1:8563/api.

    Note: The telnet port 3658 has compatibility issues with the Chrome browser. It is recommended to use the http port 8563 to access the http api.

    Request data format

    {
    +  "action": "exec",
    +  "requestId": "req112",
    +  "sessionId": "94766d3c-8b39-42d3-8596-98aee3ccbefb",
    +  "consumerId": "955dbd1325334a84972b0f3ac19de4f7_2",
    +  "command": "version",
    +  "execTimeout": "10000"
    +}
    +

    Request data format description:

    • action : The requested action/behavior, please refer to "Request Actions" for optional values.
    • requestId : Optional request ID, generated by the client.
    • sessionId : Arthas session ID, one-time command does not need to set the session ID.
    • consumerId : Arthas consumer ID, used for multi-person sharing sessions.
    • command : Arthas command line
    • execTimeout : Timeout for executing commands (ms), default value is 30000.

    Note: Different actions use different parameters. Set the parameters according to the specific action.

    Request Actions

    Currently supported request actions are as follows:

    • exec : The command is executed synchronously, and the command results is returned after the command execution end or interrupted.
    • async_exec : The command is executed asynchronously, and the scheduling result of the command is returned immediately. The command execution result is obtained through pull_results action.
    • interrupt_job : To interrupt the foreground command of the session, similar to the function of Telnet Ctrl + c.
    • pull_results : Get the result of the command executed asynchronously, and execute it repeatedly in http long-polling mode.
    • init_session : Create new session.
    • join_session : Join the session, used to support multiple people sharing the same Arthas session.
    • close_session : Close the session.

    Response status

    The state attribute in the response indicates the request processing state, and its value is as follows:

    • SCHEDULED: When the command is executed asynchronously, it means that the job has been created, and may not be executed yet or is being executed;
    • SUCCEEDED: The request is processed successfully (completed status);
    • FAILED: Request processing failed (completed status), usually accompanied by a message explaining the reason;
    • REFUSED: The request is rejected (completed status), usually accompanied by a message explaining the reason;

    One-time command

    Similar to executing batch commands, the one-time commands are executed synchronously. No need to create a session, no need to set the sessionId option.

    {
    +  "action": "exec",
    +  "command": "<Arthas command line>"
    +}
    +

    For example, get the Arthas version number:

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"exec",
    +  "command":"version"
    +}
    +'
    +

    The response is as follows:

    {
    +  "state": "SUCCEEDED",
    +  "sessionId": "ee3bc004-4586-43de-bac0-b69d6db7a869",
    +  "body": {
    +    "results": [
    +      {
    +        "type": "version",
    +        "version": "3.3.7",
    +        "jobId": 5
    +      },
    +      {
    +        "jobId": 5,
    +        "statusCode": 0,
    +        "type": "status"
    +      }
    +    ],
    +    "timeExpired": false,
    +    "command": "version",
    +    "jobStatus": "TERMINATED",
    +    "jobId": 5
    +  }
    +}
    +

    Response data format description:

    • state: Request processing status, refer to the description of "Response Status".
    • sessionId : Arthas session ID, one-time command to automatically create and destroy temporary sessions.
    • body.jobId: The job ID of the command, all output results of the same job are the same jobId.
    • body.jobStatus: The job status of the command.
    • body.timeExpired: Whether the job execution timed out.
    • body/results: Command execution results.

    Command result format description

    [
    +  {
    +    "type": "version",
    +    "version": "3.3.7",
    +    "jobId": 5
    +  },
    +  {
    +    "jobId": 5,
    +    "statusCode": 0,
    +    "type": "status"
    +  }
    +]
    +
    • type : The command result type, except for the special ones such as status, the others remain the same as the Arthas command name. Please refer to the section "Special command results".
    • jobId : The job ID of the command.
    • Other fields are the data of each different command.

    Note: You can also use a one-time command to execute continuous output commands such as watch/trace, but you can't interrupt the command execution, and there may be hang up for a long time. Please refer to the example in the "Make watch command output a map object" section.

    Please try to deal with it in the following way:

    • Set a reasonable execTimeout to forcibly interrupt the command execution after the timeout period is reached to avoid a long hang.
    • Use the -n parameter to specify a smaller number of executions.
    • Ensure the methods of the command matched can be successfully hit and the condition-express is written correctly. If the watch/trace does not hit, even if -n 1 is specified, it will hang and wait until the execution timeout.

    Session interaction

    Users create and manage Arthas sessions, which are suitable for complex interactive processes. The access process is as follows:

    • Create a session
    • Join the session (optional)
    • Pull command results
    • Execute a series of commands
    • Interrupt command execution
    • Close the session

    Create session

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"init_session"
    +}
    +'
    +

    Response result:

    {
    +  "sessionId": "b09f1353-202c-407b-af24-701b744f971e",
    +  "consumerId": "5ae4e5fbab8b4e529ac404f260d4e2d1_1",
    +  "state": "SUCCEEDED"
    +}
    +

    The new session ID is: b09f1353-202c-407b-af24-701b744f971e, and consumer ID is: 5ae4e5fbab8b4e529ac404f260d4e2d1_1.

    Join session

    Specify the session ID to join, and the server will assign a new consumer ID. Multiple consumers can receive the same command results of target session. This interface is used to support multiple people sharing the same session or refreshing the page to retrieve the session history.

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"join_session",
    +  "sessionId" : "b09f1353-202c-407b-af24-701b744f971e"
    +}
    +'
    +

    Response result:

    {
    +  "consumerId": "8f7f6ad7bc2d4cb5aa57a530927a95cc_2",
    +  "sessionId": "b09f1353-202c-407b-af24-701b744f971e",
    +  "state": "SUCCEEDED"
    +}
    +

    The new consumer ID is 8f7f6ad7bc2d4cb5aa57a530927a95cc_2 .

    Pull command results

    The action of pulling the command result message is pull_results. Please use the Http long-polling method to periodically pull the result messages. The consumer's timeout period is 5 minutes. After the timeout, you need to call join_session to allocate a new consumer.

    Each consumer is allocated a cache queue separately, and the pull order does not affect the content received by the consumer.

    The request parameters require session ID and consumer ID:

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"pull_results",
    +  "sessionId" : "b09f1353-202c-407b-af24-701b744f971e",
    +  "consumerId" : "8f7f6ad7bc2d4cb5aa57a530927a95cc_2"
    +}
    +'
    +

    Use Bash scripts to regularly pull results messages:

    while true; do curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"pull_results",
    +  "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a",
    +  "consumerId" : "8ecb9cb7c7804d5d92e258b23d5245cc_1"
    +}
    +' | json_pp; sleep 2; done
    +

    Note: The json_pp tool formats the output content as pretty json.

    The response content is as follows:

    {
    +  "body": {
    +    "results": [
    +      {
    +        "inputStatus": "DISABLED",
    +        "jobId": 0,
    +        "type": "input_status"
    +      },
    +      {
    +        "type": "message",
    +        "jobId": 0,
    +        "message": "Welcome to arthas!"
    +      },
    +      {
    +        "tutorials": "https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html",
    +        "time": "2020-08-06 15:56:43",
    +        "type": "welcome",
    +        "jobId": 0,
    +        "pid": "7909",
    +        "wiki": "https://arthas.aliyun.com/3.x/doc",
    +        "version": "3.3.7"
    +      },
    +      {
    +        "inputStatus": "ALLOW_INPUT",
    +        "type": "input_status",
    +        "jobId": 0
    +      }
    +    ]
    +  },
    +  "sessionId": "b09f1353-202c-407b-af24-701b744f971e",
    +  "consumerId": "8f7f6ad7bc2d4cb5aa57a530927a95cc_2",
    +  "state": "SUCCEEDED"
    +}
    +

    Execute commands asynchronously

    curl -Ss -XPOST http://localhost:8563/api -d '''
    +{
    +  "action":"async_exec",
    +  "command":"watch demo.MathGame primeFactors \\"{params, returnObj, throwExp}\\" ",
    +  "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a"
    +}
    +'''
    +

    Response of async_exec:

    {
    +  "sessionId": "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a",
    +  "state": "SCHEDULED",
    +  "body": {
    +    "jobStatus": "READY",
    +    "jobId": 3,
    +    "command": "watch demo.MathGame primeFactors \\"{params, returnObj, throwExp}\\" "
    +  }
    +}
    +
    • state : The status of SCHEDULED means that the command has been parsed and generated the job, but the execution has not started.
    • body.jobId : The job id of command execution, filter the command results output in pull_results according to this job ID.
    • body.jobStatus : The job status READY means that execution has not started.

    The shell output of the script that continuously pulls the result message:

    {
    +   "body" : {
    +      "results" : [
    +         {
    +            "type" : "command",
    +            "jobId" : 3,
    +            "state" : "SCHEDULED",
    +            "command" : "watch demo.MathGame primeFactors \\"{params, returnObj, throwExp}\\" "
    +         },
    +         {
    +            "inputStatus" : "ALLOW_INTERRUPT",
    +            "jobId" : 0,
    +            "type" : "input_status"
    +         },
    +         {
    +            "success" : true,
    +            "jobId" : 3,
    +            "effect" : {
    +               "listenerId" : 3,
    +               "cost" : 24,
    +               "classCount" : 1,
    +               "methodCount" : 1
    +            },
    +            "type" : "enhancer"
    +         },
    +         {
    +            "sizeLimit" : 10485760,
    +            "expand" : 1,
    +            "jobId" : 3,
    +            "type" : "watch",
    +            "cost" : 0.071499,
    +            "ts" : 1596703453237,
    +            "value" : [
    +               [
    +                  -170365
    +               ],
    +               null,
    +               {
    +                  "stackTrace" : [
    +                     {
    +                        "className" : "demo.MathGame",
    +                        "classLoaderName" : "app",
    +                        "methodName" : "primeFactors",
    +                        "nativeMethod" : false,
    +                        "lineNumber" : 46,
    +                        "fileName" : "MathGame.java"
    +                     },
    +                     ...
    +                  ],
    +                  "localizedMessage" : "number is: -170365, need >= 2",
    +                  "@type" : "java.lang.IllegalArgumentException",
    +                  "message" : "number is: -170365, need >= 2"
    +               }
    +            ]
    +         },
    +         {
    +            "type" : "watch",
    +            "cost" : 0.033375,
    +            "jobId" : 3,
    +            "ts" : 1596703454241,
    +            "value" : [
    +               [
    +                  1
    +               ],
    +               [
    +                  2,
    +                  2,
    +                  2,
    +                  2,
    +                  13,
    +                  491
    +               ],
    +               null
    +            ],
    +            "sizeLimit" : 10485760,
    +            "expand" : 1
    +         }
    +      ]
    +   },
    +   "consumerId" : "8ecb9cb7c7804d5d92e258b23d5245cc_1",
    +   "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a",
    +   "state" : "SUCCEEDED"
    +}
    +

    The value of the watch command result is the value of watch-experss, and the above command is {params, returnObj, throwExp}, so the value of the watch result is an array of length 3, and each element corresponds to the expression in the corresponding order.

    Please refer to the section "Make watch command output a map object".

    Interrupt command execution

    Interrupt the running foreground job of the session:

    curl -Ss -XPOST http://localhost:8563/api -d '''
    +{
    +  "action":"interrupt_job",
    +  "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a"
    +}
    +'''
    +
    {
    +  "state": "SUCCEEDED",
    +  "body": {
    +    "jobStatus": "TERMINATED",
    +    "jobId": 3
    +  }
    +}
    +

    Close session

    Specify the session ID to close the session.

    curl -Ss -XPOST http://localhost:8563/api -d '''
    +{
    +  "action":"close_session",
    +  "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a"
    +}
    +'''
    +
    {
    +  "state": "SUCCEEDED"
    +}
    +

    Authentication

    `,73),q=n("Reference: "),g=n("auth"),y=s("h2",{id:"web-ui",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#web-ui","aria-hidden":"true"},"#"),n(" Web UI")],-1),f=s("p",null,[s("img",{src:i,alt:"",title:"arthas web ui"})],-1),x=n("A Web UI based on Http API, visit url : "),j={href:"http://127.0.0.1:8563/ui",target:"_blank",rel:"noopener noreferrer"},_=n("http://127.0.0.1:8563/ui"),I=n(" ."),w=t(`

    Completed functions:

    • Create a session
    • Copy and open the url to join the session, share the session with multiple people
    • Continuously pull session command result messages
    • Refresh the web page or join the session to pull command messages history
    • Control input or interrupt command status

    Pending function:

    • Improve the readability of command result messages
    • Support automatic completion of input commands and command templates
    • Provide command help
    • Support personal profile settings

    Special command results

    status

    {
    +  "jobId": 5,
    +  "statusCode": 0,
    +  "type": "status"
    +}
    +

    type is status to indicate the command execution status:

    After each command is executed, there is a unique status result. If the statusCode is 0, it means the execution is successful, and the statusCode is a non-zero value that means the execution failed, similar to the process exit code.

    When the command execution fails, an error message is generally provided, such as:

    {
    +  "jobId": 3,
    +  "message": "The argument 'class-pattern' is required",
    +  "statusCode": -10,
    +  "type": "status"
    +}
    +

    input_status

    {
    +  "inputStatus": "ALLOW_INPUT",
    +  "type": "input_status",
    +  "jobId": 0
    +}
    +

    type is input_status to indicate input status:

    It is used to control user input during UI interaction, and a change message will be sent before and after each command is executed.

    Possible values \u200B\u200Bof inputStatus:

    • ALLOW_INPUT : Allow users to enter commands, which means that the session has no foreground command being executed and can accept new command.
    • ALLOW_INTERRUPT : Allow the user to interrupt the command execution, indicating that a command is currently being executed, and the user can send interrupt_job to interrupt the execution.
    • DISABLED : In the disabled state, commands cannot be entered or interrupted.

    command

    {
    +  "type": "command",
    +  "jobId": 3,
    +  "state": "SCHEDULED",
    +  "command": "watch demo.MathGame primeFactors \\"{params, returnObj, throwExp}\\" "
    +}
    +

    type is command to indicate the input command data:

    It is used for the interactive UI to echo the commands entered by the user. The pulled session command message history will contain messages of type command, which can be processed in order.

    enhancer

    {
    +  "success": true,
    +  "jobId": 3,
    +  "effect": {
    +    "listenerId": 3,
    +    "cost": 24,
    +    "classCount": 1,
    +    "methodCount": 1
    +  },
    +  "type": "enhancer"
    +}
    +

    type is enhancer to indicate the result of class enhancement:

    Commands such as trace/watch/jad/tt need to enhance the class and will receive this enhancer result. It may happen that the result of enhancer is successful, but there is no hit method. The client can prompt the user according to the result of enhancer.

    Cases

    Get classpath of Java application

    Get system properties of the Java application through Http api and extract the value of java.class.path.

    json_data=$(curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"exec",
    +  "command":"sysprop"
    +}')
    +
    • Extract value with sed:
    class_path=$(echo $json_data | tr -d '\\n' | sed 's/.*"java.class.path":"\\([^"]*\\).*/\\1/')
    +echo "classpath: $class_path"
    +
    • Extract value with json_pp/awk:
    class_path=$(echo $json_data | tr -d '\\n' | json_pp | grep java.class.path | awk -F'"' '{ print $4 }')
    +echo "classpath: $class_path"
    +

    Output:

    classpath: demo-arthas-spring-boot.jar
    +

    NOTE:

    • echo $json_data | tr -d '\\n' : Delete line breaks (the value of line.separator) to avoid affecting the processing of sed/json_pp commands.
    • awk -F'"' '{ print $4 }' : Use double quote as delimiter

    Make watch command output a map object

    `,40),E=n("The result value of "),T=s("code",null,"watch",-1),S=n(" is generated by calculating the "),C=s("code",null,"watch-express",-1),D=n(" ognl expression. You can change the ognl expression to generate the desired value, please refer to "),A={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},O=n("OGNL document"),P=n("."),L=t(`

    TIP

    Maps can also be created using a special syntax.

    #{ "foo" : "foo value", "bar" : "bar value" }

    This creates a Map initialized with mappings for "foo" and "bar".

    The following command generates values \u200B\u200Bin map format:

    watch *MathGame prime* '#{ "params" : params, "returnObj" : returnObj, "throwExp": throwExp}' -x 2 -n 5
    +

    Execute the above command in Telnet shell/WebConsole, the output result:

    ts=2020-08-06 16:57:20; [cost=0.241735ms] result=@LinkedHashMap[
    +    @String[params]:@Object[][
    +        @Integer[1],
    +    ],
    +    @String[returnObj]:@ArrayList[
    +        @Integer[2],
    +        @Integer[241],
    +        @Integer[379],
    +    ],
    +    @String[throwExp]:null,
    +]
    +

    Execute the above command with Http api, pay attention to escaping the JSON double quotes:

    curl -Ss -XPOST http://localhost:8563/api -d @- << EOF
    +{
    +  "action":"exec",
    +  "execTimeout": 30000,
    +  "command":"watch *MathGame prime* '#{ \\"params\\" : params, \\"returnObj\\" : returnObj, \\"throwExp\\": throwExp}' -n 3 "
    +}
    +EOF
    +

    Http api execution result:

    {
    +    "body": {
    +         ...
    +        "results": [
    +            ...
    +            {
    +                ...
    +                "type": "watch",
    +                "value": {
    +                    "params": [
    +                        1
    +                    ],
    +                    "returnObj": [
    +                        2,
    +                        5,
    +                        17,
    +                        23,
    +                        23
    +                    ]
    +                }
    +            },
    +            {
    +                ...
    +                "type": "watch",
    +                "value": {
    +                    "params": [
    +                        -98278
    +                    ],
    +                    "throwExp": {
    +                        "@type": "java.lang.IllegalArgumentException",
    +                        "localizedMessage": "number is: -98278, need >= 2",
    +                        "message": "number is: -98278, need >= 2",
    +                        "stackTrace": [
    +                            ...
    +                        ]
    +                    }
    +                }
    +            },
    +            ...
    +}
    +

    You can see that the value of the watch result becomes a map object, and the program can read value through a key .

    `,10);function U(R,N){const e=o("ExternalLinkIcon"),p=o("RouterLink");return l(),u("div",null,[m,s("p",null,[s("a",v,[k,b,a(e)])]),h,s("ul",null,[s("li",null,[q,a(p,{to:"/en/doc/auth.html"},{default:r(()=>[g]),_:1})])]),y,f,s("p",null,[x,s("a",j,[_,a(e)]),I]),w,s("p",null,[E,T,S,C,D,s("a",A,[O,a(e)]),P]),L])}const W=c(d,[["render",U],["__file","http-api.html.vue"]]);export{W as default}; diff --git a/3.x/assets/http-api.html.5c8cd6bc.js b/3.x/assets/http-api.html.5c8cd6bc.js new file mode 100644 index 00000000000..85cfa5e589c --- /dev/null +++ b/3.x/assets/http-api.html.5c8cd6bc.js @@ -0,0 +1,344 @@ +import{_ as l}from"./arthas-web-ui.89f4fc6d.js";import{_ as i,o as c,c as u,a as s,b as a,w as r,e as n,d as t,r as o}from"./app.4d248835.js";const d={},v=s("h1",{id:"http-api",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#http-api","aria-hidden":"true"},"#"),n(" Http API")],-1),k={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=case-http-api",target:"_blank",rel:"noopener noreferrer"},b=s("code",null,"Http API",-1),m=n("\u5728\u7EBF\u6559\u7A0B"),q=t(`

    \u6982\u89C8

    Http API \u63D0\u4F9B\u7C7B\u4F3C RESTful \u7684\u4EA4\u4E92\u63A5\u53E3\uFF0C\u8BF7\u6C42\u548C\u54CD\u5E94\u5747\u4E3A JSON \u683C\u5F0F\u7684\u6570\u636E\u3002\u76F8\u5BF9\u4E8E Telnet/WebConsole \u7684\u8F93\u51FA\u975E\u7ED3\u6784\u5316\u6587\u672C\u6570\u636E\uFF0CHttp API \u53EF\u4EE5\u63D0\u4F9B\u7ED3\u6784\u5316\u7684\u6570\u636E\uFF0C\u652F\u6301\u66F4\u590D\u6742\u7684\u4EA4\u4E92\u529F\u80FD\uFF0C\u6BD4\u5982\u7279\u5B9A\u5E94\u7528\u573A\u666F\u7684\u4E00\u7CFB\u5217\u8BCA\u65AD\u64CD\u4F5C\u3002

    \u8BBF\u95EE\u5730\u5740

    Http API \u63A5\u53E3\u5730\u5740\u4E3A\uFF1Ahttp://ip:port/api\uFF0C\u5FC5\u987B\u4F7F\u7528 POST \u65B9\u5F0F\u63D0\u4EA4\u8BF7\u6C42\u53C2\u6570\u3002\u5982 POST http://127.0.0.1:8563/api \u3002

    \u6CE8\u610F\uFF1Atelnet \u670D\u52A1\u7684 3658 \u7AEF\u53E3\u4E0E Chrome \u6D4F\u89C8\u5668\u6709\u517C\u5BB9\u6027\u95EE\u9898\uFF0C\u5EFA\u8BAE\u4F7F\u7528 http \u7AEF\u53E3 8563 \u6765\u8BBF\u95EE http \u63A5\u53E3\u3002

    \u8BF7\u6C42\u6570\u636E\u683C\u5F0F

    {
    +  "action": "exec",
    +  "requestId": "req112",
    +  "sessionId": "94766d3c-8b39-42d3-8596-98aee3ccbefb",
    +  "consumerId": "955dbd1325334a84972b0f3ac19de4f7_2",
    +  "command": "version",
    +  "execTimeout": "10000"
    +}
    +

    \u8BF7\u6C42\u6570\u636E\u683C\u5F0F\u8BF4\u660E\uFF1A

    • action : \u8BF7\u6C42\u7684\u52A8\u4F5C/\u884C\u4E3A\uFF0C\u53EF\u9009\u503C\u8BF7\u53C2\u8003"\u8BF7\u6C42 Action"\u5C0F\u8282\u3002
    • requestId : \u53EF\u9009\u8BF7\u6C42 ID\uFF0C\u7531\u5BA2\u6237\u7AEF\u751F\u6210\u3002
    • sessionId : Arthas \u4F1A\u8BDD ID\uFF0C\u4E00\u6B21\u6027\u547D\u4EE4\u4E0D\u9700\u8981\u8BBE\u7F6E\u4F1A\u8BDD ID\u3002
    • consumerId : Arthas \u6D88\u8D39\u8005 ID\uFF0C\u7528\u4E8E\u591A\u4EBA\u5171\u4EAB\u4F1A\u8BDD\u3002
    • command : Arthas command line \u3002
    • execTimeout : \u547D\u4EE4\u540C\u6B65\u6267\u884C\u7684\u8D85\u65F6\u65F6\u95F4(ms)\uFF0C\u9ED8\u8BA4\u4E3A 30000\u3002

    \u6CE8\u610F: \u4E0D\u540C\u7684 action \u4F7F\u7528\u5230\u53C2\u6570\u4E0D\u540C\uFF0C\u6839\u636E\u5177\u4F53\u7684 action \u6765\u8BBE\u7F6E\u53C2\u6570\u3002

    \u8BF7\u6C42 Action

    \u76EE\u524D\u652F\u6301\u7684\u8BF7\u6C42 Action \u5982\u4E0B\uFF1A

    • exec : \u540C\u6B65\u6267\u884C\u547D\u4EE4\uFF0C\u547D\u4EE4\u6B63\u5E38\u7ED3\u675F\u6216\u8005\u8D85\u65F6\u540E\u4E2D\u65AD\u547D\u4EE4\u6267\u884C\u540E\u8FD4\u56DE\u547D\u4EE4\u7684\u6267\u884C\u7ED3\u679C\u3002
    • async_exec : \u5F02\u6B65\u6267\u884C\u547D\u4EE4\uFF0C\u7ACB\u5373\u8FD4\u56DE\u547D\u4EE4\u7684\u8C03\u5EA6\u7ED3\u679C\uFF0C\u547D\u4EE4\u6267\u884C\u7ED3\u679C\u901A\u8FC7pull_results\u83B7\u53D6\u3002
    • interrupt_job : \u4E2D\u65AD\u4F1A\u8BDD\u5F53\u524D\u7684\u547D\u4EE4\uFF0C\u7C7B\u4F3C Telnet Ctrl + c\u7684\u529F\u80FD\u3002
    • pull_results : \u83B7\u53D6\u5F02\u6B65\u6267\u884C\u7684\u547D\u4EE4\u7684\u7ED3\u679C\uFF0C\u4EE5 http \u957F\u8F6E\u8BE2\uFF08long-polling\uFF09\u65B9\u5F0F\u91CD\u590D\u6267\u884C
    • init_session : \u521B\u5EFA\u4F1A\u8BDD
    • join_session : \u52A0\u5165\u4F1A\u8BDD\uFF0C\u7528\u4E8E\u652F\u6301\u591A\u4EBA\u5171\u4EAB\u540C\u4E00\u4E2A Arthas \u4F1A\u8BDD
    • close_session : \u5173\u95ED\u4F1A\u8BDD

    \u54CD\u5E94\u72B6\u6001

    \u54CD\u5E94\u4E2D\u7684 state \u5C5E\u6027\u8868\u793A\u8BF7\u6C42\u5904\u7406\u72B6\u6001\uFF0C\u53D6\u503C\u5982\u4E0B\uFF1A

    • SCHEDULED\uFF1A\u5F02\u6B65\u6267\u884C\u547D\u4EE4\u65F6\u8868\u793A\u5DF2\u7ECF\u521B\u5EFA job \u5E76\u5DF2\u63D0\u4EA4\u5230\u547D\u4EE4\u6267\u884C\u961F\u5217\uFF0C\u547D\u4EE4\u53EF\u80FD\u8FD8\u6CA1\u5F00\u59CB\u6267\u884C\u6216\u8005\u6267\u884C\u4E2D\uFF1B
    • SUCCEEDED\uFF1A\u8BF7\u6C42\u5904\u7406\u6210\u529F\uFF08\u5B8C\u6210\u72B6\u6001\uFF09\uFF1B
    • FAILED\uFF1A\u8BF7\u6C42\u5904\u7406\u5931\u8D25\uFF08\u5B8C\u6210\u72B6\u6001\uFF09\uFF0C\u901A\u5E38\u9644\u5E26 message \u8BF4\u660E\u539F\u56E0\uFF1B
    • REFUSED\uFF1A\u8BF7\u6C42\u88AB\u62D2\u7EDD\uFF08\u5B8C\u6210\u72B6\u6001\uFF09\uFF0C\u901A\u5E38\u9644\u5E26 message \u8BF4\u660E\u539F\u56E0\uFF1B

    \u4E00\u6B21\u6027\u547D\u4EE4

    \u4E0E\u6267\u884C\u6279\u5904\u7406\u547D\u4EE4\u7C7B\u4F3C\uFF0C\u4E00\u6B21\u6027\u547D\u4EE4\u4EE5\u540C\u6B65\u65B9\u5F0F\u6267\u884C\u3002\u4E0D\u9700\u8981\u521B\u5EFA\u4F1A\u8BDD\uFF0C\u4E0D\u9700\u8981\u8BBE\u7F6EsessionId\u9009\u9879\u3002

    {
    +  "action": "exec",
    +  "command": "<Arthas command line>"
    +}
    +

    \u6BD4\u5982\u83B7\u53D6 Arthas \u7248\u672C\u53F7\uFF1A

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"exec",
    +  "command":"version"
    +}
    +'
    +

    \u54CD\u5E94\u5185\u5BB9\u5982\u4E0B\uFF1A

    {
    +  "state": "SUCCEEDED",
    +  "sessionId": "ee3bc004-4586-43de-bac0-b69d6db7a869",
    +  "body": {
    +    "results": [
    +      {
    +        "type": "version",
    +        "version": "3.3.7",
    +        "jobId": 5
    +      },
    +      {
    +        "jobId": 5,
    +        "statusCode": 0,
    +        "type": "status"
    +      }
    +    ],
    +    "timeExpired": false,
    +    "command": "version",
    +    "jobStatus": "TERMINATED",
    +    "jobId": 5
    +  }
    +}
    +

    \u54CD\u5E94\u6570\u636E\u89E3\u6790\uFF1A

    • state: \u8BF7\u6C42\u5904\u7406\u72B6\u6001\uFF0C\u53C2\u8003\u201C\u63A5\u53E3\u54CD\u5E94\u72B6\u6001\u201D\u8BF4\u660E
    • sessionId : Arthas \u4F1A\u8BDD ID\uFF0C\u4E00\u6B21\u6027\u547D\u4EE4\u81EA\u52A8\u521B\u5EFA\u53CA\u9500\u6BC1\u4E34\u65F6\u4F1A\u8BDD
    • body.jobId: \u547D\u4EE4\u7684\u4EFB\u52A1 ID\uFF0C\u540C\u4E00\u4EFB\u52A1\u8F93\u51FA\u7684\u6240\u6709 Result \u90FD\u662F\u76F8\u540C\u7684 jobId
    • body.jobStatus: \u4EFB\u52A1\u72B6\u6001\uFF0C\u540C\u6B65\u6267\u884C\u6B63\u5E38\u7ED3\u675F\u4E3ATERMINATED
    • body.timeExpired: \u4EFB\u52A1\u6267\u884C\u662F\u5426\u8D85\u65F6
    • body/results: \u547D\u4EE4\u6267\u884C\u7684\u7ED3\u679C\u5217\u8868

    \u547D\u4EE4\u7ED3\u679C\u683C\u5F0F\u8BF4\u660E

    [
    +  {
    +    "type": "version",
    +    "version": "3.3.7",
    +    "jobId": 5
    +  },
    +  {
    +    "jobId": 5,
    +    "statusCode": 0,
    +    "type": "status"
    +  }
    +]
    +
    • type : \u547D\u4EE4\u7ED3\u679C\u7C7B\u578B\uFF0C\u9664\u4E86status\u7B49\u7279\u6B8A\u7684\u51E0\u4E2A\u5916\uFF0C\u5176\u5B83\u7684\u4FDD\u6301\u4E0E Arthas \u547D\u4EE4\u540D\u79F0\u4E00\u81F4\u3002\u8BF7\u53C2\u8003"\u7279\u6B8A\u547D\u4EE4\u7ED3\u679C"\u5C0F\u8282\u3002
    • jobId : \u5904\u7406\u547D\u4EE4\u7684\u4EFB\u52A1 ID\u3002
    • \u5176\u5B83\u5B57\u6BB5\u4E3A\u6BCF\u4E2A\u4E0D\u540C\u547D\u4EE4\u7684\u6570\u636E\u3002

    \u6CE8\u610F\uFF1A\u4E5F\u53EF\u4EE5\u4F7F\u7528\u4E00\u6B21\u6027\u547D\u4EE4\u7684\u65B9\u5F0F\u6267\u884C watch/trace \u7B49\u8FDE\u7EED\u8F93\u51FA\u7684\u547D\u4EE4\uFF0C\u4F46\u4E0D\u80FD\u4E2D\u65AD\u547D\u4EE4\u6267\u884C\uFF0C\u53EF\u80FD\u51FA\u73B0\u957F\u65F6\u95F4\u6CA1\u6709\u7ED3\u675F\u7684\u95EE\u9898\u3002\u8BF7\u53C2\u8003"watch \u547D\u4EE4\u8F93\u51FA map \u5BF9\u8C61"\u5C0F\u8282\u7684\u793A\u4F8B\u3002

    \u8BF7\u5C3D\u91CF\u6309\u7167\u4EE5\u4E0B\u65B9\u5F0F\u5904\u7406\uFF1A

    • \u8BBE\u7F6E\u5408\u7406\u7684execTimeout\uFF0C\u5230\u8FBE\u8D85\u65F6\u65F6\u95F4\u540E\u5F3A\u5236\u4E2D\u65AD\u547D\u4EE4\u6267\u884C\uFF0C\u907F\u514D\u957F\u65F6\u95F4\u6302\u8D77\u3002
    • \u901A\u8FC7-n\u53C2\u6570\u6307\u5B9A\u8F83\u5C11\u7684\u6267\u884C\u6B21\u6570\u3002
    • \u4FDD\u8BC1\u547D\u4EE4\u5339\u914D\u7684\u65B9\u6CD5\u53EF\u4EE5\u6210\u529F\u547D\u4E2D\u548C condition-express \u7F16\u5199\u6B63\u786E\uFF0C\u5982\u679C watch/trace \u6CA1\u6709\u547D\u4E2D\u5C31\u7B97\u6307\u5B9A-n 1\u4E5F\u4F1A\u6302\u8D77\u7B49\u5F85\u5230\u6267\u884C\u8D85\u65F6\u3002

    \u4F1A\u8BDD\u4EA4\u4E92

    \u7531\u7528\u6237\u521B\u5EFA\u53CA\u7BA1\u7406 Arthas \u4F1A\u8BDD\uFF0C\u9002\u7528\u4E8E\u590D\u6742\u7684\u4EA4\u4E92\u8FC7\u7A0B\u3002\u8BBF\u95EE\u6D41\u7A0B\u5982\u4E0B\uFF1A

    • \u521B\u5EFA\u4F1A\u8BDD
    • \u52A0\u5165\u4F1A\u8BDD(\u53EF\u9009\uFF09
    • \u62C9\u53D6\u547D\u4EE4\u7ED3\u679C
    • \u6267\u884C\u4E00\u7CFB\u5217\u547D\u4EE4
    • \u4E2D\u65AD\u547D\u4EE4\u6267\u884C
    • \u5173\u95ED\u4F1A\u8BDD

    \u521B\u5EFA\u4F1A\u8BDD

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"init_session"
    +}
    +'
    +

    \u54CD\u5E94\u7ED3\u679C\uFF1A

    {
    +  "sessionId": "b09f1353-202c-407b-af24-701b744f971e",
    +  "consumerId": "5ae4e5fbab8b4e529ac404f260d4e2d1_1",
    +  "state": "SUCCEEDED"
    +}
    +

    \u5F53\u524D\u4F1A\u8BDD ID \u4E3A\uFF1A b09f1353-202c-407b-af24-701b744f971e\uFF0C \u5F53\u524D\u6D88\u8D39\u8005 ID \u4E3A\uFF1A5ae4e5fbab8b4e529ac404f260d4e2d1_1 \u3002

    \u52A0\u5165\u4F1A\u8BDD

    \u6307\u5B9A\u8981\u52A0\u5165\u7684\u4F1A\u8BDD ID\uFF0C\u670D\u52A1\u7AEF\u5C06\u5206\u914D\u4E00\u4E2A\u65B0\u7684\u6D88\u8D39\u8005 ID\u3002\u591A\u4E2A\u6D88\u8D39\u8005\u53EF\u4EE5\u63A5\u6536\u5230\u540C\u4E00\u4E2A\u4F1A\u8BDD\u7684\u547D\u4EE4\u7ED3\u679C\u3002\u672C\u63A5\u53E3\u7528\u4E8E\u652F\u6301\u591A\u4EBA\u5171\u4EAB\u540C\u4E00\u4E2A\u4F1A\u8BDD\u6216\u5237\u65B0\u9875\u9762\u540E\u91CD\u65B0\u62C9\u53D6\u4F1A\u8BDD\u5386\u53F2\u8BB0\u5F55\u3002

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"join_session",
    +  "sessionId" : "b09f1353-202c-407b-af24-701b744f971e"
    +}
    +'
    +

    \u54CD\u5E94\u7ED3\u679C\uFF1A

    {
    +  "consumerId": "8f7f6ad7bc2d4cb5aa57a530927a95cc_2",
    +  "sessionId": "b09f1353-202c-407b-af24-701b744f971e",
    +  "state": "SUCCEEDED"
    +}
    +

    \u65B0\u7684\u6D88\u8D39\u8005 ID \u4E3A8f7f6ad7bc2d4cb5aa57a530927a95cc_2 \u3002

    \u62C9\u53D6\u547D\u4EE4\u7ED3\u679C

    \u62C9\u53D6\u547D\u4EE4\u7ED3\u679C\u6D88\u606F\u7684 action \u4E3Apull_results\u3002\u8BF7\u4F7F\u7528 Http long-polling \u65B9\u5F0F\uFF0C\u5B9A\u65F6\u5FAA\u73AF\u62C9\u53D6\u7ED3\u679C\u6D88\u606F\u3002 \u6D88\u8D39\u8005\u7684\u8D85\u65F6\u65F6\u95F4\u4E3A 5 \u5206\u949F\uFF0C\u8D85\u65F6\u540E\u9700\u8981\u8C03\u7528join_session\u5206\u914D\u65B0\u7684\u6D88\u8D39\u8005\u3002\u6BCF\u4E2A\u6D88\u8D39\u8005\u5355\u72EC\u5206\u914D\u4E00\u4E2A\u7F13\u5B58\u961F\u5217\uFF0C\u6309\u987A\u5E8F\u62C9\u53D6\u547D\u4EE4\u7ED3\u679C\uFF0C\u4E0D\u4F1A\u5F71\u54CD\u5230\u5176\u5B83\u6D88\u8D39\u8005\u3002

    \u8BF7\u6C42\u53C2\u6570\u9700\u8981\u6307\u5B9A\u4F1A\u8BDD ID \u53CA\u6D88\u8D39\u8005 ID:

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"pull_results",
    +  "sessionId" : "b09f1353-202c-407b-af24-701b744f971e",
    +  "consumerId" : "8f7f6ad7bc2d4cb5aa57a530927a95cc_2"
    +}
    +'
    +

    \u7528 Bash \u811A\u672C\u5B9A\u65F6\u62C9\u53D6\u7ED3\u679C\u6D88\u606F:

    while true; do curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"pull_results",
    +  "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a",
    +  "consumerId" : "8ecb9cb7c7804d5d92e258b23d5245cc_1"
    +}
    +' | json_pp; sleep 2; done
    +

    \u6CE8\uFF1A json_pp \u5DE5\u5177\u5C06\u8F93\u51FA\u5185\u5BB9\u683C\u5F0F\u5316\u4E3A pretty json\u3002

    \u54CD\u5E94\u5185\u5BB9\u5982\u4E0B\uFF1A

    {
    +  "body": {
    +    "results": [
    +      {
    +        "inputStatus": "DISABLED",
    +        "jobId": 0,
    +        "type": "input_status"
    +      },
    +      {
    +        "type": "message",
    +        "jobId": 0,
    +        "message": "Welcome to arthas!"
    +      },
    +      {
    +        "tutorials": "https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html",
    +        "time": "2020-08-06 15:56:43",
    +        "type": "welcome",
    +        "jobId": 0,
    +        "pid": "7909",
    +        "wiki": "https://arthas.aliyun.com/3.x/doc",
    +        "version": "3.3.7"
    +      },
    +      {
    +        "inputStatus": "ALLOW_INPUT",
    +        "type": "input_status",
    +        "jobId": 0
    +      }
    +    ]
    +  },
    +  "sessionId": "b09f1353-202c-407b-af24-701b744f971e",
    +  "consumerId": "8f7f6ad7bc2d4cb5aa57a530927a95cc_2",
    +  "state": "SUCCEEDED"
    +}
    +

    \u5F02\u6B65\u6267\u884C\u547D\u4EE4

    curl -Ss -XPOST http://localhost:8563/api -d '''
    +{
    +  "action":"async_exec",
    +  "command":"watch demo.MathGame primeFactors \\"{params, returnObj, throwExp}\\" ",
    +   "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a"
    +}
    +'''
    +

    async_exec \u7684\u7ED3\u679C\uFF1A

    {
    +  "sessionId": "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a",
    +  "state": "SCHEDULED",
    +  "body": {
    +    "jobStatus": "READY",
    +    "jobId": 3,
    +    "command": "watch demo.MathGame primeFactors \\"{params, returnObj, throwExp}\\" "
    +  }
    +}
    +
    • state : SCHEDULED \u72B6\u6001\u8868\u793A\u5DF2\u7ECF\u89E3\u6790\u547D\u4EE4\u751F\u6210\u4EFB\u52A1\uFF0C\u4F46\u672A\u5F00\u59CB\u6267\u884C\u3002
    • body.jobId : \u5F02\u6B65\u6267\u884C\u547D\u4EE4\u7684\u4EFB\u52A1 ID\uFF0C\u53EF\u4EE5\u6839\u636E\u6B64\u4EFB\u52A1 ID \u6765\u8FC7\u6EE4\u5728pull_results\u8F93\u51FA\u7684\u547D\u4EE4\u7ED3\u679C\u3002
    • body.jobStatus : \u4EFB\u52A1\u72B6\u6001READY\u8868\u793A\u672A\u5F00\u59CB\u6267\u884C\u3002

    \u67E5\u770B\u4E0A\u9762\u81EA\u52A8\u62C9\u53D6\u7ED3\u679C\u6D88\u606F\u811A\u672C\u7684 shell \u8F93\u51FA\uFF1A

    {
    +   "body" : {
    +      "results" : [
    +         {
    +            "type" : "command",
    +            "jobId" : 3,
    +            "state" : "SCHEDULED",
    +            "command" : "watch demo.MathGame primeFactors \\"{params, returnObj, throwExp}\\" "
    +         },
    +         {
    +            "inputStatus" : "ALLOW_INTERRUPT",
    +            "jobId" : 0,
    +            "type" : "input_status"
    +         },
    +         {
    +            "success" : true,
    +            "jobId" : 3,
    +            "effect" : {
    +               "listenerId" : 3,
    +               "cost" : 24,
    +               "classCount" : 1,
    +               "methodCount" : 1
    +            },
    +            "type" : "enhancer"
    +         },
    +         {
    +            "sizeLimit" : 10485760,
    +            "expand" : 1,
    +            "jobId" : 3,
    +            "type" : "watch",
    +            "cost" : 0.071499,
    +            "ts" : 1596703453237,
    +            "value" : [
    +               [
    +                  -170365
    +               ],
    +               null,
    +               {
    +                  "stackTrace" : [
    +                     {
    +                        "className" : "demo.MathGame",
    +                        "classLoaderName" : "app",
    +                        "methodName" : "primeFactors",
    +                        "nativeMethod" : false,
    +                        "lineNumber" : 46,
    +                        "fileName" : "MathGame.java"
    +                     },
    +                     ...
    +                  ],
    +                  "localizedMessage" : "number is: -170365, need >= 2",
    +                  "@type" : "java.lang.IllegalArgumentException",
    +                  "message" : "number is: -170365, need >= 2"
    +               }
    +            ]
    +         },
    +         {
    +            "type" : "watch",
    +            "cost" : 0.033375,
    +            "jobId" : 3,
    +            "ts" : 1596703454241,
    +            "value" : [
    +               [
    +                  1
    +               ],
    +               [
    +                  2,
    +                  2,
    +                  2,
    +                  2,
    +                  13,
    +                  491
    +               ],
    +               null
    +            ],
    +            "sizeLimit" : 10485760,
    +            "expand" : 1
    +         }
    +      ]
    +   },
    +   "consumerId" : "8ecb9cb7c7804d5d92e258b23d5245cc_1",
    +   "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a",
    +   "state" : "SUCCEEDED"
    +}
    +

    watch \u547D\u4EE4\u7ED3\u679C\u7684value\u4E3A watch-experss \u7684\u503C\uFF0C\u4E0A\u9762\u547D\u4EE4\u4E2D\u4E3A{params, returnObj, throwExp}\uFF0C\u6240\u4EE5 watch \u7ED3\u679C\u7684 value \u4E3A\u4E00\u4E2A\u957F\u5EA6\u4E3A 3 \u7684\u6570\u7EC4\uFF0C\u6BCF\u4E2A\u5143\u7D20\u5206\u522B\u5BF9\u5E94\u76F8\u5E94\u987A\u5E8F\u7684\u8868\u8FBE\u5F0F\u3002 \u8BF7\u53C2\u8003"watch \u547D\u4EE4\u8F93\u51FA map \u5BF9\u8C61"\u5C0F\u8282\u3002

    \u4E2D\u65AD\u547D\u4EE4\u6267\u884C

    \u4E2D\u65AD\u4F1A\u8BDD\u6B63\u5728\u8FD0\u884C\u7684\u524D\u53F0 Job\uFF08\u524D\u53F0\u4EFB\u52A1\uFF09\uFF1A

    curl -Ss -XPOST http://localhost:8563/api -d '''
    +{
    +  "action":"interrupt_job",
    +  "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a"
    +}
    +'''
    +
    {
    +   "state" : "SUCCEEDED",
    +   "body" : {
    +      "jobStatus" : "TERMINATED",
    +      "jobId" : 3
    +   }
    +}
    +

    \u5173\u95ED\u4F1A\u8BDD

    \u6307\u5B9A\u4F1A\u8BDD ID\uFF0C\u5173\u95ED\u4F1A\u8BDD\u3002

    curl -Ss -XPOST http://localhost:8563/api -d '''
    +{
    +  "action":"close_session",
    +  "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a"
    +}
    +'''
    +
    {
    +  "state": "SUCCEEDED"
    +}
    +

    \u9274\u6743

    `,71),h=n("\u53C2\u8003\uFF1A "),g=n("auth"),y=s("h2",{id:"web-ui",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#web-ui","aria-hidden":"true"},"#"),n(" Web UI")],-1),_=s("p",null,[s("img",{src:l,alt:"",title:"arthas web ui"})],-1),j=n("\u4E00\u4E2A\u57FA\u4E8E Http API \u63A5\u53E3\u5B9E\u73B0\u7684 Web UI\uFF0C\u8BBF\u95EE\u5730\u5740\u4E3A\uFF1A "),f={href:"http://127.0.0.1:8563/ui",target:"_blank",rel:"noopener noreferrer"},x=n("http://127.0.0.1:8563/ui"),I=n(" \u3002"),E=t(`

    \u5DF2\u5B9E\u73B0\u529F\u80FD\uFF1A

    • \u521B\u5EFA\u4F1A\u8BDD
    • \u590D\u5236\u5E76\u6253\u5F00 url \u52A0\u5165\u4F1A\u8BDD\uFF0C\u591A\u4EBA\u5171\u4EAB\u4F1A\u8BDD
    • \u5468\u671F\u6027\u62C9\u53D6\u4F1A\u8BDD\u547D\u4EE4\u7ED3\u679C\u6D88\u606F
    • \u5237\u65B0\u9875\u9762\u6216\u8005\u52A0\u5165\u4F1A\u8BDD\u62C9\u53D6\u4F1A\u8BDD\u5386\u53F2\u547D\u4EE4\u6D88\u606F
    • \u8F93\u5165\u547D\u4EE4/\u4E2D\u65AD\u547D\u4EE4\u72B6\u6001\u63A7\u5236

    \u5F85\u5F00\u53D1\u529F\u80FD\uFF1A

    • \u6539\u8FDB\u5C06\u547D\u4EE4\u7ED3\u679C\u6D88\u606F\u53EF\u8BFB\u6027
    • \u547D\u4EE4\u8F93\u5165\u652F\u6301\u81EA\u52A8\u5B8C\u6210\u53CA\u547D\u4EE4\u6A21\u677F
    • \u63D0\u4F9B\u547D\u4EE4\u5E2E\u52A9
    • \u652F\u6301\u4E2A\u4EBA\u9009\u9879\u8BBE\u7F6E

    \u7279\u6B8A\u547D\u4EE4\u7ED3\u679C

    status

    {
    +  "jobId": 5,
    +  "statusCode": 0,
    +  "type": "status"
    +}
    +

    type\u4E3Astatus\u8868\u793A\u547D\u4EE4\u6267\u884C\u72B6\u6001\uFF1A

    \u6BCF\u4E2A\u547D\u4EE4\u6267\u884C\u7ED3\u675F\u540E\u90FD\u6709\u552F\u4E00\u4E00\u4E2A status \u7ED3\u679C\u3002statusCode \u4E3A 0 \u8868\u793A\u6267\u884C\u6210\u529F\uFF0CstatusCode \u4E3A\u975E 0 \u503C\u8868\u793A\u6267\u884C\u5931\u8D25\uFF0C\u7C7B\u4F3C\u8FDB\u7A0B\u9000\u51FA\u7801(exit code)\u3002

    \u547D\u4EE4\u6267\u884C\u5931\u8D25\u65F6\u4E00\u822C\u4F1A\u63D0\u4F9B\u9519\u8BEF\u6D88\u606F\uFF0C\u5982\uFF1A

    {
    +  "jobId": 3,
    +  "message": "The argument 'class-pattern' is required",
    +  "statusCode": -10,
    +  "type": "status"
    +}
    +

    input_status

    {
    +  "inputStatus": "ALLOW_INPUT",
    +  "type": "input_status",
    +  "jobId": 0
    +}
    +

    type\u4E3Ainput_status\u8868\u793A\u8F93\u5165\u72B6\u6001\uFF1A

    \u7528\u4E8E UI \u4EA4\u4E92\u65F6\u63A7\u5236\u7528\u6237\u8F93\u5165\uFF0C\u6BCF\u6B21\u6267\u884C\u547D\u4EE4\u524D\u540E\u4F1A\u53D1\u9001\u6539\u53D8\u7684\u6D88\u606F\u3002 inputStatus \u7684\u503C\u8BF4\u660E\uFF1A

    • ALLOW_INPUT : \u5141\u8BB8\u7528\u6237\u8F93\u5165\u547D\u4EE4\uFF0C\u8868\u793A\u4F1A\u8BDD\u6CA1\u6709\u5728\u6267\u884C\u7684\u524D\u53F0\u547D\u4EE4\uFF0C\u53EF\u4EE5\u63A5\u53D7\u65B0\u7684\u547D\u4EE4\u3002
    • ALLOW_INTERRUPT : \u5141\u8BB8\u7528\u6237\u4E2D\u65AD\u547D\u4EE4\u6267\u884C\uFF0C\u8868\u793A\u5F53\u524D\u6B63\u5728\u6267\u884C\u547D\u4EE4\uFF0C\u7528\u6237\u53EF\u4EE5\u53D1\u9001interrupt_job\u4E2D\u65AD\u6267\u884C\u3002
    • DISABLED : \u7981\u7528\u72B6\u6001\uFF0C\u4E0D\u80FD\u8F93\u5165\u547D\u4EE4\u4E5F\u4E0D\u80FD\u4E2D\u65AD\u547D\u4EE4\u3002

    command

    {
    +  "type": "command",
    +  "jobId": 3,
    +  "state": "SCHEDULED",
    +  "command": "watch demo.MathGame primeFactors \\"{params, returnObj, throwExp}\\" "
    +}
    +

    type \u4E3Acommand\u8868\u793A\u8F93\u5165\u7684\u547D\u4EE4\u6570\u636E\uFF1A

    \u7528\u4E8E\u4EA4\u4E92 UI \u56DE\u663E\u7528\u6237\u8F93\u5165\u7684\u547D\u4EE4\uFF0C\u62C9\u53D6\u7684\u4F1A\u8BDD\u547D\u4EE4\u6D88\u606F\u5386\u53F2\u4F1A\u5305\u542Bcommand\u7C7B\u578B\u7684\u6D88\u606F\uFF0C\u6309\u987A\u5E8F\u5904\u7406\u5373\u53EF\u3002

    enhancer

    {
    +  "success": true,
    +  "jobId": 3,
    +  "effect": {
    +    "listenerId": 3,
    +    "cost": 24,
    +    "classCount": 1,
    +    "methodCount": 1
    +  },
    +  "type": "enhancer"
    +}
    +

    type\u4E3Aenhancer\u8868\u793A\u7C7B\u589E\u5F3A\u7ED3\u679C\uFF1A

    trace/watch/jad/tt\u7B49\u547D\u4EE4\u9700\u8981\u5BF9\u7C7B\u8FDB\u884C\u589E\u5F3A\uFF0C\u4F1A\u63A5\u6536\u5230\u8FD9\u4E2Aenhancer\u7ED3\u679C\u3002\u53EF\u80FD\u51FA\u73B0enhancer\u7ED3\u679C\u6210\u529F\uFF0C\u4F46\u6CA1\u6709\u547D\u4E2D\u65B9\u6CD5\u7684\u60C5\u51B5\uFF0C\u5BA2\u6237\u7AEF\u53EF\u4EE5\u6839\u636Eenhancer\u7ED3\u679C\u63D0\u793A\u7528\u6237\u3002

    \u6848\u4F8B

    \u83B7\u53D6 Java \u5E94\u7528\u7684 Classpath

    \u901A\u8FC7 Http api \u67E5\u8BE2 Java \u5E94\u7528\u7684 System properties\uFF0C\u63D0\u53D6java.class.path\u7684\u503C\u3002

    json_data=$(curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"exec",
    +  "command":"sysprop"
    +}')
    +
    • \u4F7F\u7528sed\u63D0\u53D6\u503C\uFF1A
    class_path=$(echo $json_data | tr -d '\\n' | sed 's/.*"java.class.path":"\\([^"]*\\).*/\\1/')
    +echo "classpath: $class_path"
    +
    • \u4F7F\u7528json_pp/awk\u63D0\u53D6\u503C
    class_path=$(echo $json_data | tr -d '\\n' | json_pp | grep java.class.path | awk -F'"' '{ print $4 }')
    +echo "classpath: $class_path"
    +

    \u8F93\u51FA\u5185\u5BB9\uFF1A

    classpath: demo-arthas-spring-boot.jar
    +

    \u6CE8\u610F\uFF1A

    • echo $json_data | tr -d '\\n' : \u5220\u9664\u6362\u884C\u7B26(line.separator\u7684\u503C)\uFF0C\u907F\u514D\u5F71\u54CDsed/json_pp\u547D\u4EE4\u5904\u7406\u3002
    • awk -F'"' '{ print $4 }' : \u4F7F\u7528\u53CC\u5F15\u53F7\u4F5C\u4E3A\u5206\u9694\u7B26\u53F7

    watch \u547D\u4EE4\u8F93\u51FA map \u5BF9\u8C61

    `,39),S=n("watch \u7684\u7ED3\u679C\u503C\u7531\u8BA1\u7B97"),w=s("code",null,"watch-express",-1),D=n(" ognl \u8868\u8FBE\u5F0F\u4EA7\u751F\uFF0C\u53EF\u4EE5\u901A\u8FC7\u6539\u53D8 ognl \u8868\u8FBE\u5F0F\u6765\u751F\u6210\u60F3\u8981\u7684\u503C\uFF0C\u8BF7\u53C2\u8003"),C={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},T=n("OGNL \u6587\u6863"),A=n("\u3002"),O=t(`

    \u63D0\u793A

    Maps can also be created using a special syntax.

    #{ "foo" : "foo value", "bar" : "bar value" }

    This creates a Map initialized with mappings for "foo" and "bar".

    \u4E0B\u9762\u7684\u547D\u4EE4\u751F\u6210 map \u683C\u5F0F\u7684\u503C\uFF1A

    watch *MathGame prime* '#{ "params" : params, "returnObj" : returnObj, "throwExp": throwExp}' -x 2 -n 5
    +

    \u5728 Telnet shell/WebConsole \u4E2D\u6267\u884C\u4E0A\u9762\u7684\u547D\u4EE4\uFF0C\u8F93\u51FA\u7684\u7ED3\u679C\uFF1A

    ts=2020-08-06 16:57:20; [cost=0.241735ms] result=@LinkedHashMap[
    +    @String[params]:@Object[][
    +        @Integer[1],
    +    ],
    +    @String[returnObj]:@ArrayList[
    +        @Integer[2],
    +        @Integer[241],
    +        @Integer[379],
    +    ],
    +    @String[throwExp]:null,
    +]
    +

    \u7528 Http api \u6267\u884C\u4E0A\u9762\u7684\u547D\u4EE4\uFF0C\u6CE8\u610F\u5BF9 JSON \u53CC\u5F15\u53F7\u8F6C\u4E49\uFF1A

    curl -Ss -XPOST http://localhost:8563/api -d @- << EOF
    +{
    +  "action":"exec",
    +  "execTimeout": 30000,
    +  "command":"watch *MathGame prime* '#{ \\"params\\" : params, \\"returnObj\\" : returnObj, \\"throwExp\\": throwExp}' -n 3 "
    +}
    +EOF
    +

    Http api \u6267\u884C\u7ED3\u679C\uFF1A

    {
    +    "body": {
    +         ...
    +        "results": [
    +            ...
    +            {
    +                ...
    +                "type": "watch",
    +                "value": {
    +                    "params": [
    +                        1
    +                    ],
    +                    "returnObj": [
    +                        2,
    +                        5,
    +                        17,
    +                        23,
    +                        23
    +                    ]
    +                }
    +            },
    +            {
    +                ...
    +                "type": "watch",
    +                "value": {
    +                    "params": [
    +                        -98278
    +                    ],
    +                    "throwExp": {
    +                        "@type": "java.lang.IllegalArgumentException",
    +                        "localizedMessage": "number is: -98278, need >= 2",
    +                        "message": "number is: -98278, need >= 2",
    +                        "stackTrace": [
    +                            ...
    +                        ]
    +                    }
    +                }
    +            },
    +            ...
    +}
    +

    \u53EF\u4EE5\u770B\u5230 watch \u7ED3\u679C\u7684 value \u53D8\u6210 map \u5BF9\u8C61\uFF0C\u7A0B\u5E8F\u53EF\u4EE5\u901A\u8FC7 key \u8BFB\u53D6\u7ED3\u679C\u3002

    `,10);function L(P,U){const e=o("ExternalLinkIcon"),p=o("RouterLink");return c(),u("div",null,[v,s("p",null,[s("a",k,[b,m,a(e)])]),q,s("p",null,[h,a(p,{to:"/doc/auth.html"},{default:r(()=>[g]),_:1})]),y,_,s("p",null,[j,s("a",f,[x,a(e)]),I]),E,s("p",null,[S,w,D,s("a",C,[T,a(e)]),A]),O])}const H=i(d,[["render",L],["__file","http-api.html.vue"]]);export{H as default}; diff --git a/3.x/assets/http-api.html.a19a0b64.js b/3.x/assets/http-api.html.a19a0b64.js new file mode 100644 index 00000000000..43b66208a7a --- /dev/null +++ b/3.x/assets/http-api.html.a19a0b64.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-8b0312c0","path":"/en/doc/http-api.html","title":"Http API","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Overview","slug":"overview","link":"#overview","children":[{"level":3,"title":"Access address","slug":"access-address","link":"#access-address","children":[]},{"level":3,"title":"Request data format","slug":"request-data-format","link":"#request-data-format","children":[]},{"level":3,"title":"Request Actions","slug":"request-actions","link":"#request-actions","children":[]},{"level":3,"title":"Response status","slug":"response-status","link":"#response-status","children":[]}]},{"level":2,"title":"One-time command","slug":"one-time-command","link":"#one-time-command","children":[]},{"level":2,"title":"Session interaction","slug":"session-interaction","link":"#session-interaction","children":[{"level":3,"title":"Create session","slug":"create-session","link":"#create-session","children":[]},{"level":3,"title":"Join session","slug":"join-session","link":"#join-session","children":[]},{"level":3,"title":"Pull command results","slug":"pull-command-results","link":"#pull-command-results","children":[]},{"level":3,"title":"Execute commands asynchronously","slug":"execute-commands-asynchronously","link":"#execute-commands-asynchronously","children":[]},{"level":3,"title":"Interrupt command execution","slug":"interrupt-command-execution","link":"#interrupt-command-execution","children":[]},{"level":3,"title":"Close session","slug":"close-session","link":"#close-session","children":[]}]},{"level":2,"title":"Authentication","slug":"authentication","link":"#authentication","children":[]},{"level":2,"title":"Web UI","slug":"web-ui","link":"#web-ui","children":[]},{"level":2,"title":"Special command results","slug":"special-command-results","link":"#special-command-results","children":[{"level":3,"title":"status","slug":"status","link":"#status","children":[]},{"level":3,"title":"input_status","slug":"input-status","link":"#input-status","children":[]},{"level":3,"title":"command","slug":"command","link":"#command","children":[]},{"level":3,"title":"enhancer","slug":"enhancer","link":"#enhancer","children":[]}]},{"level":2,"title":"Cases","slug":"cases","link":"#cases","children":[{"level":3,"title":"Get classpath of Java application","slug":"get-classpath-of-java-application","link":"#get-classpath-of-java-application","children":[]},{"level":3,"title":"Make watch command output a map object","slug":"make-watch-command-output-a-map-object","link":"#make-watch-command-output-a-map-object","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/http-api.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/http-api.html.f5e81364.js b/3.x/assets/http-api.html.f5e81364.js new file mode 100644 index 00000000000..249bdbca995 --- /dev/null +++ b/3.x/assets/http-api.html.f5e81364.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-225de034","path":"/doc/http-api.html","title":"Http API","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u6982\u89C8","slug":"\u6982\u89C8","link":"#\u6982\u89C8","children":[{"level":3,"title":"\u8BBF\u95EE\u5730\u5740","slug":"\u8BBF\u95EE\u5730\u5740","link":"#\u8BBF\u95EE\u5730\u5740","children":[]},{"level":3,"title":"\u8BF7\u6C42\u6570\u636E\u683C\u5F0F","slug":"\u8BF7\u6C42\u6570\u636E\u683C\u5F0F","link":"#\u8BF7\u6C42\u6570\u636E\u683C\u5F0F","children":[]},{"level":3,"title":"\u8BF7\u6C42 Action","slug":"\u8BF7\u6C42-action","link":"#\u8BF7\u6C42-action","children":[]},{"level":3,"title":"\u54CD\u5E94\u72B6\u6001","slug":"\u54CD\u5E94\u72B6\u6001","link":"#\u54CD\u5E94\u72B6\u6001","children":[]}]},{"level":2,"title":"\u4E00\u6B21\u6027\u547D\u4EE4","slug":"\u4E00\u6B21\u6027\u547D\u4EE4","link":"#\u4E00\u6B21\u6027\u547D\u4EE4","children":[]},{"level":2,"title":"\u4F1A\u8BDD\u4EA4\u4E92","slug":"\u4F1A\u8BDD\u4EA4\u4E92","link":"#\u4F1A\u8BDD\u4EA4\u4E92","children":[{"level":3,"title":"\u521B\u5EFA\u4F1A\u8BDD","slug":"\u521B\u5EFA\u4F1A\u8BDD","link":"#\u521B\u5EFA\u4F1A\u8BDD","children":[]},{"level":3,"title":"\u52A0\u5165\u4F1A\u8BDD","slug":"\u52A0\u5165\u4F1A\u8BDD","link":"#\u52A0\u5165\u4F1A\u8BDD","children":[]},{"level":3,"title":"\u62C9\u53D6\u547D\u4EE4\u7ED3\u679C","slug":"\u62C9\u53D6\u547D\u4EE4\u7ED3\u679C","link":"#\u62C9\u53D6\u547D\u4EE4\u7ED3\u679C","children":[]},{"level":3,"title":"\u5F02\u6B65\u6267\u884C\u547D\u4EE4","slug":"\u5F02\u6B65\u6267\u884C\u547D\u4EE4","link":"#\u5F02\u6B65\u6267\u884C\u547D\u4EE4","children":[]},{"level":3,"title":"\u4E2D\u65AD\u547D\u4EE4\u6267\u884C","slug":"\u4E2D\u65AD\u547D\u4EE4\u6267\u884C","link":"#\u4E2D\u65AD\u547D\u4EE4\u6267\u884C","children":[]},{"level":3,"title":"\u5173\u95ED\u4F1A\u8BDD","slug":"\u5173\u95ED\u4F1A\u8BDD","link":"#\u5173\u95ED\u4F1A\u8BDD","children":[]}]},{"level":2,"title":"\u9274\u6743","slug":"\u9274\u6743","link":"#\u9274\u6743","children":[]},{"level":2,"title":"Web UI","slug":"web-ui","link":"#web-ui","children":[]},{"level":2,"title":"\u7279\u6B8A\u547D\u4EE4\u7ED3\u679C","slug":"\u7279\u6B8A\u547D\u4EE4\u7ED3\u679C","link":"#\u7279\u6B8A\u547D\u4EE4\u7ED3\u679C","children":[{"level":3,"title":"status","slug":"status","link":"#status","children":[]},{"level":3,"title":"input_status","slug":"input-status","link":"#input-status","children":[]},{"level":3,"title":"command","slug":"command","link":"#command","children":[]},{"level":3,"title":"enhancer","slug":"enhancer","link":"#enhancer","children":[]}]},{"level":2,"title":"\u6848\u4F8B","slug":"\u6848\u4F8B","link":"#\u6848\u4F8B","children":[{"level":3,"title":"\u83B7\u53D6 Java \u5E94\u7528\u7684 Classpath","slug":"\u83B7\u53D6-java-\u5E94\u7528\u7684-classpath","link":"#\u83B7\u53D6-java-\u5E94\u7528\u7684-classpath","children":[]},{"level":3,"title":"watch \u547D\u4EE4\u8F93\u51FA map \u5BF9\u8C61","slug":"watch-\u547D\u4EE4\u8F93\u51FA-map-\u5BF9\u8C61","link":"#watch-\u547D\u4EE4\u8F93\u51FA-map-\u5BF9\u8C61","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/http-api.md","version":"3.7.3"}');export{l as data}; diff --git a/3.x/assets/idea-plugin.html.0961bb69.js b/3.x/assets/idea-plugin.html.0961bb69.js new file mode 100644 index 00000000000..b5b2ad13127 --- /dev/null +++ b/3.x/assets/idea-plugin.html.0961bb69.js @@ -0,0 +1 @@ +import{_ as i,o as r,c as s,a as t,b as o,d as n,e,r as l}from"./app.4d248835.js";const c="/3.x/images/alibabacloud_hotreload.png",d={},h=n('

    IDEA Plugin

    Arthas-idea\uFF08\u90E8\u5206\u547D\u4EE4\u53EF\u89C6\u5316\uFF09

    \u63D0\u793A

    \u63D2\u4EF6\u7531\u793E\u533A\u5F00\u53D1\u8005\u63D0\u4F9B\u3002

    ',3),_=e("Jetbrains \u63D2\u4EF6\u83B7\u53D6\u5730\u5740\uFF1A "),u={href:"https://plugins.jetbrains.com/plugin/13581-arthas-idea",target:"_blank",rel:"noopener noreferrer"},p=e("https://plugins.jetbrains.com/plugin/13581-arthas-idea"),m=e("\u4F7F\u7528\u6587\u6863\uFF1A"),b={href:"https://www.yuque.com/arthas-idea-plugin",target:"_blank",rel:"noopener noreferrer"},g=e("https://www.yuque.com/arthas-idea-plugin"),f=e("\u6E90\u7801\u5730\u5740\uFF1A "),k={href:"https://github.com/WangJi92/arthas-idea-plugin",target:"_blank",rel:"noopener noreferrer"},x=e("https://github.com/WangJi92/arthas-idea-plugin"),v=n('

    Alibaba Cloud Toolkit \u70ED\u90E8\u7F72\u7EC4\u4EF6\uFF08\u4E00\u952E retransform\uFF09

    \u63D0\u793A

    \u70ED\u90E8\u7F72\u7EC4\u4EF6\u652F\u6301\u4E00\u952E\u5C06\u7F16\u8F91\u5668\u4E2D\u4FEE\u6539\u7684 Java \u6E90\u7801\u5FEB\u901F\u7F16\u8BD1\uFF0C\u5E76\u66F4\u65B0\u5230\u8FDC\u7AEF\u5E94\u7528\u670D\u52A1\u4E2D\uFF0C\u514D\u53BB\u624B\u52A8 dump\u3001mc \u7684\u8FC7\u7A0B\u3002\u6B64\u5916\uFF0C\u4E5F\u53EF\u4EE5\u4E00\u952E\u8FD8\u539F retransform \u7684\u7C7B\u6587\u4EF6\u3002

    ',3),w=e("Jetbrains \u63D2\u4EF6\u83B7\u53D6\u5730\u5740\uFF1A "),J={href:"https://plugins.jetbrains.com/plugin/11386-alibaba-cloud-toolkit",target:"_blank",rel:"noopener noreferrer"},j=e("https://plugins.jetbrains.com/plugin/11386-alibaba-cloud-toolkit"),y=e("\u4F7F\u7528\u6587\u6863\uFF1A"),A={href:"https://help.aliyun.com/document_detail/381077.html",target:"_blank",rel:"noopener noreferrer"},E=e("https://help.aliyun.com/document_detail/381077.html"),N=t("li",null,[e("\u8054\u7CFB\u6211\u4EEC\uFF1A\u8BF7\u52A0 Alibaba Cloud Toolkit (\u5E94\u7528\u89C2\u6D4B\u5668) \u9489\u9489\u7528\u6237\u4EA4\u6D41\u7FA4\uFF08\u7FA4\u53F7\uFF1A"),t("strong",null,"34965379"),e("\uFF09")],-1);function V(B,C){const a=l("ExternalLinkIcon");return r(),s("div",null,[h,t("ul",null,[t("li",null,[_,t("a",u,[p,o(a)])]),t("li",null,[m,t("a",b,[g,o(a)])]),t("li",null,[f,t("a",k,[x,o(a)])])]),v,t("ul",null,[t("li",null,[w,t("a",J,[j,o(a)])]),t("li",null,[y,t("a",A,[E,o(a)])]),N])])}const T=i(d,[["render",V],["__file","idea-plugin.html.vue"]]);export{T as default}; diff --git a/3.x/assets/idea-plugin.html.32b2309e.js b/3.x/assets/idea-plugin.html.32b2309e.js new file mode 100644 index 00000000000..adc17716e17 --- /dev/null +++ b/3.x/assets/idea-plugin.html.32b2309e.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-96b07b98","path":"/en/doc/idea-plugin.html","title":"IDEA Plugin","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1658120060000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/idea-plugin.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/idea-plugin.html.5cd3ae1a.js b/3.x/assets/idea-plugin.html.5cd3ae1a.js new file mode 100644 index 00000000000..2cec378f94a --- /dev/null +++ b/3.x/assets/idea-plugin.html.5cd3ae1a.js @@ -0,0 +1 @@ +import{_ as o,o as a,c as s,a as e,b as i,e as t,r}from"./app.4d248835.js";const l={},c=e("h1",{id:"idea-plugin",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#idea-plugin","aria-hidden":"true"},"#"),t(" IDEA Plugin")],-1),u=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"TIP"),e("p",null,"Plugin is provided by community developers.")],-1),_=t("Jetbrains Plugin\uFF1A "),d={href:"https://plugins.jetbrains.com/plugin/13581-arthas-idea",target:"_blank",rel:"noopener noreferrer"},h=t("https://plugins.jetbrains.com/plugin/13581-arthas-idea"),p=t("Plugin Doc\uFF1A"),g={href:"https://www.yuque.com/arthas-idea-plugin",target:"_blank",rel:"noopener noreferrer"},m=t("https://www.yuque.com/arthas-idea-plugin"),f=t("Plugin Github\uFF1A "),b={href:"https://github.com/WangJi92/arthas-idea-plugin",target:"_blank",rel:"noopener noreferrer"},k=t("https://github.com/WangJi92/arthas-idea-plugin");function x(P,v){const n=r("ExternalLinkIcon");return a(),s("div",null,[c,u,e("ul",null,[e("li",null,[_,e("a",d,[h,i(n)])]),e("li",null,[p,e("a",g,[m,i(n)])]),e("li",null,[f,e("a",b,[k,i(n)])])])])}const y=o(l,[["render",x],["__file","idea-plugin.html.vue"]]);export{y as default}; diff --git a/3.x/assets/idea-plugin.html.d7acd139.js b/3.x/assets/idea-plugin.html.d7acd139.js new file mode 100644 index 00000000000..a43f28bb3b6 --- /dev/null +++ b/3.x/assets/idea-plugin.html.d7acd139.js @@ -0,0 +1 @@ +const a=JSON.parse('{"key":"v-7c670020","path":"/doc/idea-plugin.html","title":"IDEA Plugin","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Arthas-idea\uFF08\u90E8\u5206\u547D\u4EE4\u53EF\u89C6\u5316\uFF09","slug":"arthas-idea-\u90E8\u5206\u547D\u4EE4\u53EF\u89C6\u5316","link":"#arthas-idea-\u90E8\u5206\u547D\u4EE4\u53EF\u89C6\u5316","children":[]},{"level":2,"title":"Alibaba Cloud Toolkit \u70ED\u90E8\u7F72\u7EC4\u4EF6\uFF08\u4E00\u952E retransform\uFF09","slug":"alibaba-cloud-toolkit-\u70ED\u90E8\u7F72\u7EC4\u4EF6-\u4E00\u952E-retransform","link":"#alibaba-cloud-toolkit-\u70ED\u90E8\u7F72\u7EC4\u4EF6-\u4E00\u952E-retransform","children":[]}],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/idea-plugin.md","version":"3.7.3"}');export{a as data}; diff --git a/3.x/assets/index.html.27b99973.js b/3.x/assets/index.html.27b99973.js new file mode 100644 index 00000000000..a4549c5a39f --- /dev/null +++ b/3.x/assets/index.html.27b99973.js @@ -0,0 +1 @@ +import{_ as e,o as c,c as t}from"./app.4d248835.js";const n={};function _(o,r){return c(),t("div")}const a=e(n,[["render",_],["__file","index.html.vue"]]);export{a as default}; diff --git a/3.x/assets/index.html.349dc4ce.js b/3.x/assets/index.html.349dc4ce.js new file mode 100644 index 00000000000..a4549c5a39f --- /dev/null +++ b/3.x/assets/index.html.349dc4ce.js @@ -0,0 +1 @@ +import{_ as e,o as c,c as t}from"./app.4d248835.js";const n={};function _(o,r){return c(),t("div")}const a=e(n,[["render",_],["__file","index.html.vue"]]);export{a as default}; diff --git a/3.x/assets/index.html.3951988f.js b/3.x/assets/index.html.3951988f.js new file mode 100644 index 00000000000..4a02da9c870 --- /dev/null +++ b/3.x/assets/index.html.3951988f.js @@ -0,0 +1 @@ +import{_ as o}from"./arthas.b23d3e5a.js";import{_ as s,o as i,c as n,a as e,b as r,d as c,e as a,r as h}from"./app.4d248835.js";const l={},d=c('

    \u7B80\u4ECB

    Arthas \u662F\u4E00\u6B3E\u7EBF\u4E0A\u76D1\u63A7\u8BCA\u65AD\u4EA7\u54C1\uFF0C\u901A\u8FC7\u5168\u5C40\u89C6\u89D2\u5B9E\u65F6\u67E5\u770B\u5E94\u7528 load\u3001\u5185\u5B58\u3001gc\u3001\u7EBF\u7A0B\u7684\u72B6\u6001\u4FE1\u606F\uFF0C\u5E76\u80FD\u5728\u4E0D\u4FEE\u6539\u5E94\u7528\u4EE3\u7801\u7684\u60C5\u51B5\u4E0B\uFF0C\u5BF9\u4E1A\u52A1\u95EE\u9898\u8FDB\u884C\u8BCA\u65AD\uFF0C\u5305\u62EC\u67E5\u770B\u65B9\u6CD5\u8C03\u7528\u7684\u51FA\u5165\u53C2\u3001\u5F02\u5E38\uFF0C\u76D1\u6D4B\u65B9\u6CD5\u6267\u884C\u8017\u65F6\uFF0C\u7C7B\u52A0\u8F7D\u4FE1\u606F\u7B49\uFF0C\u5927\u5927\u63D0\u5347\u7EBF\u4E0A\u95EE\u9898\u6392\u67E5\u6548\u7387\u3002

    \u80CC\u666F

    \u901A\u5E38\uFF0C\u672C\u5730\u5F00\u53D1\u73AF\u5883\u65E0\u6CD5\u8BBF\u95EE\u751F\u4EA7\u73AF\u5883\u3002\u5982\u679C\u5728\u751F\u4EA7\u73AF\u5883\u4E2D\u9047\u5230\u95EE\u9898\uFF0C\u5219\u65E0\u6CD5\u4F7F\u7528 IDE \u8FDC\u7A0B\u8C03\u8BD5\u3002\u66F4\u7CDF\u7CD5\u7684\u662F\uFF0C\u5728\u751F\u4EA7\u73AF\u5883\u4E2D\u8C03\u8BD5\u662F\u4E0D\u53EF\u63A5\u53D7\u7684\uFF0C\u56E0\u4E3A\u5B83\u4F1A\u6682\u505C\u6240\u6709\u7EBF\u7A0B\uFF0C\u5BFC\u81F4\u670D\u52A1\u6682\u505C\u3002

    \u5F00\u53D1\u4EBA\u5458\u53EF\u4EE5\u5C1D\u8BD5\u5728\u6D4B\u8BD5\u73AF\u5883\u6216\u8005\u9884\u53D1\u73AF\u5883\u4E2D\u590D\u73B0\u751F\u4EA7\u73AF\u5883\u4E2D\u7684\u95EE\u9898\u3002\u4F46\u662F\uFF0C\u67D0\u4E9B\u95EE\u9898\u65E0\u6CD5\u5728\u4E0D\u540C\u7684\u73AF\u5883\u4E2D\u8F7B\u677E\u590D\u73B0\uFF0C\u751A\u81F3\u5728\u91CD\u65B0\u542F\u52A8\u540E\u5C31\u6D88\u5931\u4E86\u3002

    \u5982\u679C\u60A8\u6B63\u5728\u8003\u8651\u5728\u4EE3\u7801\u4E2D\u6DFB\u52A0\u4E00\u4E9B\u65E5\u5FD7\u4EE5\u5E2E\u52A9\u89E3\u51B3\u95EE\u9898\uFF0C\u60A8\u5C06\u5FC5\u987B\u7ECF\u5386\u4EE5\u4E0B\u9636\u6BB5\uFF1A\u6D4B\u8BD5\u3001\u9884\u53D1\uFF0C\u7136\u540E\u751F\u4EA7\u3002\u8FD9\u79CD\u65B9\u6CD5\u6548\u7387\u4F4E\u4E0B\uFF0C\u66F4\u7CDF\u7CD5\u7684\u662F\uFF0C\u8BE5\u95EE\u9898\u53EF\u80FD\u65E0\u6CD5\u89E3\u51B3\uFF0C\u56E0\u4E3A\u4E00\u65E6 JVM \u91CD\u65B0\u542F\u52A8\uFF0C\u5B83\u53EF\u80FD\u65E0\u6CD5\u590D\u73B0\uFF0C\u5982\u4E0A\u6587\u6240\u8FF0\u3002

    Arthas \u65E8\u5728\u89E3\u51B3\u8FD9\u4E9B\u95EE\u9898\u3002\u5F00\u53D1\u4EBA\u5458\u53EF\u4EE5\u5728\u7EBF\u89E3\u51B3\u751F\u4EA7\u95EE\u9898\u3002\u65E0\u9700 JVM \u91CD\u542F\uFF0C\u65E0\u9700\u4EE3\u7801\u66F4\u6539\u3002 Arthas \u4F5C\u4E3A\u89C2\u5BDF\u8005\u6C38\u8FDC\u4E0D\u4F1A\u6682\u505C\u6B63\u5728\u8FD0\u884C\u7684\u7EBF\u7A0B\u3002

    Arthas\uFF08\u963F\u5C14\u8428\u65AF\uFF09\u80FD\u4E3A\u4F60\u505A\u4EC0\u4E48\uFF1F

    Arthas \u662F Alibaba \u5F00\u6E90\u7684 Java \u8BCA\u65AD\u5DE5\u5177\uFF0C\u6DF1\u53D7\u5F00\u53D1\u8005\u559C\u7231\u3002

    \u5F53\u4F60\u9047\u5230\u4EE5\u4E0B\u7C7B\u4F3C\u95EE\u9898\u800C\u675F\u624B\u65E0\u7B56\u65F6\uFF0CArthas\u53EF\u4EE5\u5E2E\u52A9\u4F60\u89E3\u51B3\uFF1A

    1. \u8FD9\u4E2A\u7C7B\u4ECE\u54EA\u4E2A jar \u5305\u52A0\u8F7D\u7684\uFF1F\u4E3A\u4EC0\u4E48\u4F1A\u62A5\u5404\u79CD\u7C7B\u76F8\u5173\u7684 Exception\uFF1F
    2. \u6211\u6539\u7684\u4EE3\u7801\u4E3A\u4EC0\u4E48\u6CA1\u6709\u6267\u884C\u5230\uFF1F\u96BE\u9053\u662F\u6211\u6CA1 commit\uFF1F\u5206\u652F\u641E\u9519\u4E86\uFF1F
    3. \u9047\u5230\u95EE\u9898\u65E0\u6CD5\u5728\u7EBF\u4E0A debug\uFF0C\u96BE\u9053\u53EA\u80FD\u901A\u8FC7\u52A0\u65E5\u5FD7\u518D\u91CD\u65B0\u53D1\u5E03\u5417\uFF1F
    4. \u7EBF\u4E0A\u9047\u5230\u67D0\u4E2A\u7528\u6237\u7684\u6570\u636E\u5904\u7406\u6709\u95EE\u9898\uFF0C\u4F46\u7EBF\u4E0A\u540C\u6837\u65E0\u6CD5 debug\uFF0C\u7EBF\u4E0B\u65E0\u6CD5\u91CD\u73B0\uFF01
    5. \u662F\u5426\u6709\u4E00\u4E2A\u5168\u5C40\u89C6\u89D2\u6765\u67E5\u770B\u7CFB\u7EDF\u7684\u8FD0\u884C\u72B6\u51B5\uFF1F
    6. \u6709\u4EC0\u4E48\u529E\u6CD5\u53EF\u4EE5\u76D1\u63A7\u5230 JVM \u7684\u5B9E\u65F6\u8FD0\u884C\u72B6\u6001\uFF1F
    7. \u600E\u4E48\u5FEB\u901F\u5B9A\u4F4D\u5E94\u7528\u7684\u70ED\u70B9\uFF0C\u751F\u6210\u706B\u7130\u56FE\uFF1F
    8. \u600E\u6837\u76F4\u63A5\u4ECE JVM \u5185\u67E5\u627E\u67D0\u4E2A\u7C7B\u7684\u5B9E\u4F8B\uFF1F

    Arthas \u652F\u6301 JDK 6+\uFF0C\u652F\u6301 Linux/Mac/Windows\uFF0C\u91C7\u7528\u547D\u4EE4\u884C\u4EA4\u4E92\u6A21\u5F0F\uFF0C\u540C\u65F6\u63D0\u4F9B\u4E30\u5BCC\u7684 Tab \u81EA\u52A8\u8865\u5168\u529F\u80FD\uFF0C\u8FDB\u4E00\u6B65\u65B9\u4FBF\u8FDB\u884C\u95EE\u9898\u7684\u5B9A\u4F4D\u548C\u8BCA\u65AD\u3002

    ',13),p=a("\u5982\u679C\u60A8\u5728\u4F7F\u7528 Arthas\uFF0C\u8BF7\u8BA9\u6211\u4EEC\u77E5\u9053\uFF0C\u60A8\u7684\u4F7F\u7528\u5BF9\u6211\u4EEC\u975E\u5E38\u91CD\u8981\uFF1A"),_={href:"https://github.com/alibaba/arthas/issues/111",target:"_blank",rel:"noopener noreferrer"},u=a("\u67E5\u770B"),b=e("h2",{id:"contributors",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#contributors","aria-hidden":"true"},"#"),a(" Contributors")],-1),m={href:"https://github.com/alibaba/arthas/graphs/contributors",target:"_blank",rel:"noopener noreferrer"},f=e("img",{src:"https://opencollective.com/arthas/contributors.svg?width=890&button=false",alt:""},null,-1);function x(g,A){const t=h("ExternalLinkIcon");return i(),n("div",null,[d,e("p",null,[e("strong",null,[p,e("a",_,[u,r(t)])])]),b,e("p",null,[e("a",m,[f,r(t)])])])}const v=s(l,[["render",x],["__file","index.html.vue"]]);export{v as default}; diff --git a/3.x/assets/index.html.636fad3d.js b/3.x/assets/index.html.636fad3d.js new file mode 100644 index 00000000000..64aadb24c0a --- /dev/null +++ b/3.x/assets/index.html.636fad3d.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-7445f070","path":"/doc/","title":"\u7B80\u4ECB","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u80CC\u666F","slug":"\u80CC\u666F","link":"#\u80CC\u666F","children":[]},{"level":2,"title":"Arthas\uFF08\u963F\u5C14\u8428\u65AF\uFF09\u80FD\u4E3A\u4F60\u505A\u4EC0\u4E48\uFF1F","slug":"arthas-\u963F\u5C14\u8428\u65AF-\u80FD\u4E3A\u4F60\u505A\u4EC0\u4E48","link":"#arthas-\u963F\u5C14\u8428\u65AF-\u80FD\u4E3A\u4F60\u505A\u4EC0\u4E48","children":[]},{"level":2,"title":"Contributors","slug":"contributors","link":"#contributors","children":[]}],"git":{"updatedTime":1667789315000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":2},{"name":"changren-wcr","email":"105254603+changren-wcr@users.noreply.github.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/README.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/index.html.6c4675e2.js b/3.x/assets/index.html.6c4675e2.js new file mode 100644 index 00000000000..3bd0cfb3c65 --- /dev/null +++ b/3.x/assets/index.html.6c4675e2.js @@ -0,0 +1 @@ +const e=JSON.parse(`{"key":"v-8daa1a0e","path":"/","title":"","lang":"zh-CN","frontmatter":{"home":true,"heroImage":"/images/arthas_light.png","heroImageDark":"/images/arthas_dark.png","heroText":null,"tagline":"Java \u5E94\u7528\u8BCA\u65AD\u5229\u5668","actions":[{"text":"\u5FEB\u901F\u5165\u95E8","link":"/doc/quick-start.html","type":"primary"},{"text":"\u67E5\u770Bgithub","link":"https://github.com/alibaba/arthas","type":"secondary"}],"features":[{"icon":"\u{1F5A5}","title":"Dashboard","details":"\u5B9E\u65F6\u67E5\u770B\u7CFB\u7EDF\u7684\u8FD0\u884C\u72B6\u51B5\u3002"},{"icon":"\u{1F52C}","title":"\u67E5\u770B\u5165\u53C2/\u8FD4\u56DE\u503C/\u5F02\u5E38","details":"\u67E5\u770B\u51FD\u6570\u8C03\u7528\u7684\u53C2\u6570\uFF0C\u8FD4\u56DE\u503C\u548C\u5F02\u5E38\u3002"},{"icon":"\u{1F529}","title":"\u5728\u7EBF\u70ED\u66F4\u65B0","details":"jad/sc/redefine \u4E00\u6761\u9F99\u70ED\u66F4\u65B0\u4EE3\u7801\u3002"},{"icon":"\u{1FA7A}","title":"\u7C7B\u51B2\u7A81","details":"\u79D2\u89E3\u7C7B\u51B2\u7A81\u95EE\u9898\uFF0C\u5B9A\u4F4D\u7C7B\u52A0\u8F7D\u8DEF\u5F84\u3002"},{"icon":"\u26A1\uFE0F","title":"\u6027\u80FD\u70ED\u70B9","details":"\u5FEB\u901F\u5B9A\u4F4D\u5E94\u7528\u7684\u70ED\u70B9\uFF0C\u751F\u6210\u706B\u7130\u56FE\u3002"},{"icon":"\u{1F4E1}","title":"WebConsole","details":"\u5728\u7EBF\u8BCA\u65AD\uFF0C\u70B9\u5F00\u7F51\u9875\u8BCA\u65AD\u7EBF\u4E0A\u5E94\u7528\u3002"}],"users_title":"\u7528\u6237","users_details":"\u8BF7\u5728 Wanted: who's using arthas \u4E0A\u63D0\u4F9B\u4FE1\u606F\u6765\u5E2E\u52A9Arthas\u505A\u7684\u66F4\u597D\u3002","users":[{"name":"Alibaba Group","logo":"/images/users/users_alibaba.png"},{"name":"Didiglobal","logo":"/images/users/users_didi.png"},{"name":"Kaola","logo":"/images/users/users_kaola.png"},{"name":"Qunar","logo":"/images/users/users_qunar.png"},{"name":"Telecom","logo":"/images/users/users_telecom.png"},{"name":"Weidian","logo":"/images/users/users_weidian.png"},{"name":"ICBC","logo":"/images/users/users_icbc.png"},{"name":"Chinaums","logo":"/images/users/users_yinlian.png"}],"footer":"Apache-2.0 license | Copyright 2018-present, Alibaba Middleware Group, and contributors"},"excerpt":"","headers":[],"git":{"updatedTime":1658120060000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"README.md","version":"3.7.3"}`);export{e as data}; diff --git a/3.x/assets/index.html.72b89313.js b/3.x/assets/index.html.72b89313.js new file mode 100644 index 00000000000..5dfda6768f6 --- /dev/null +++ b/3.x/assets/index.html.72b89313.js @@ -0,0 +1 @@ +const e=JSON.parse(`{"key":"v-2d0a870d","path":"/en/","title":"Home","lang":"en-US","frontmatter":{"home":true,"title":"Home","heroImage":"/images/arthas_light.png","heroImageDark":"/images/arthas_dark.png","heroText":null,"tagline":"Java Diagnostic Tool","sidebar":false,"actions":[{"text":"Quick Start","link":"/doc/quick-start.html","type":"primary"},{"text":"View on github","link":"https://github.com/alibaba/arthas","type":"secondary"}],"features":[{"icon":"\u{1F5A5}","title":"Dashboard","details":"View the operating status of the system in real time"},{"icon":"\u{1F52C}","title":"Parameters/Return values/Exceptions","details":"View method parameters, return values and exceptions"},{"icon":"\u{1F529}","title":"Online hotswap","details":"jad/sc/redefine online hotswap"},{"icon":"\u{1FA7A}","title":"Class conflict","details":"Resolve the class conflict problem in seconds, locate the class loading path"},{"icon":"\u26A1\uFE0F","title":"Flame Graph","details":"Quickly locate application hotspots and generate flame graphs"},{"icon":"\u{1F4E1}","title":"WebConsole","details":"Online diagnosis"}],"users_title":"Users","users_details":"Providing your info on Wanted: who's using arthas to help improving arthas better","users":[{"name":"Alibaba Group","logo":"/images/users/users_alibaba.png"},{"name":"Didiglobal","logo":"/images/users/users_didi.png"},{"name":"Kaola","logo":"/images/users/users_kaola.png"},{"name":"Qunar","logo":"/images/users/users_qunar.png"},{"name":"Telecom","logo":"/images/users/users_telecom.png"},{"name":"Weidian","logo":"/images/users/users_weidian.png"},{"name":"ICBC","logo":"/images/users/users_icbc.png"},{"name":"Chinaums","logo":"/images/users/users_yinlian.png"}],"footer":"Apache-2.0 license | Copyright 2018-present, Alibaba Middleware Group, and contributors"},"excerpt":"","headers":[],"git":{"updatedTime":1658120060000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/README.md","version":"3.7.3"}`);export{e as data}; diff --git a/3.x/assets/index.html.88e6b040.js b/3.x/assets/index.html.88e6b040.js new file mode 100644 index 00000000000..3f67baf9ba7 --- /dev/null +++ b/3.x/assets/index.html.88e6b040.js @@ -0,0 +1 @@ +import{_ as i}from"./arthas.b23d3e5a.js";import{_ as a,o as r,c as n,a as e,b as s,d as l,e as t,r as c}from"./app.4d248835.js";const d={},h=l('

    Introduction

    Arthas is a Java diagnostic tool open-sourced by Alibaba middleware team. It is widely adopted and popular among the developers inside Alibaba. Arthas helps developers in trouble-shooting issues in production environment for Java based applications without modifying code or restarting servers.

    Background

    Oftentimes the production system network is inaccessible from local development environment. If issues are encountered in production systems, it is impossible to use IDE to debug the application remotely. What's even worse, debugging in production environment is unacceptable, as it will suspend all the threads, leading to services downtime.

    Developers could always try to reproduce the same issue on the test/staging environment. However, this is tricky as some issues cannot be reproduced easily in a different environment, or even disappear once restarted.

    And if you're thinking of adding some logs to your code to help trouble-shoot the issue, you will have to go through the following lifecycle: test, staging, and then to production. Time is money! This approach is inefficient! Worse still, the issue may not be fixed since it might be irreproducible once the JVM is restarted, as described above.

    Arthas is built to solve these issues. A developer can troubleshoot production issues on the fly. No JVM restart, no additional code changes. Arthas works as an observer, that is, it will never suspend your running threads.

    Key features

    • Check whether a class is loaded? Or where the class is loaded from? (Useful for trouble-shooting jar file conflicts)
    • Decompile a class to ensure the code is running as expected.
    • Check classloader statistics, e.g. the number of classloaders, the number of classes loaded per classloader, the classloader hierarchy, possible classloader leaks, etc.
    • Check the method invocation details, e.g. method parameter, returned values, exceptions and etc.
    • Check the stack trace of specified method invocation. This is useful when a developer wants to know the caller of the method.
    • Trace the method invocation to find slow sub-invocations.
    • Monitor method invocation statistics, e.g. QPS (Query Per Second), RT (Return Time), success rate and etc.
    • Monitor system metrics, thread states and CPU usage, GC statistics and etc.
    • Supports command line interactive mode, with auto-complete feature enabled.
    • Supports telnet and WebSocket, which enables both local and remote diagnostics with command line and browsers.
    • Supports profiler/Flame Graph
    • Support get objects in the heap that are instances of the specified class.
    • Supports JDK 6+
    • Supports Linux/Mac/Windows
    ',10),u=t("If you are using Arthas, please let us know. Your feedback is very important to us: "),p={href:"https://github.com/alibaba/arthas/issues/111",target:"_blank",rel:"noopener noreferrer"},m=t("View"),b=e("h2",{id:"contributors",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#contributors","aria-hidden":"true"},"#"),t(" Contributors")],-1),f={href:"https://github.com/alibaba/arthas/graphs/contributors",target:"_blank",rel:"noopener noreferrer"},g=e("img",{src:"https://opencollective.com/arthas/contributors.svg?width=890&button=false",alt:""},null,-1);function v(_,w){const o=c("ExternalLinkIcon");return r(),n("div",null,[h,e("p",null,[e("strong",null,[u,e("a",p,[m,s(o)])])]),b,e("p",null,[e("a",f,[g,s(o)])])])}const x=a(d,[["render",v],["__file","index.html.vue"]]);export{x as default}; diff --git a/3.x/assets/index.html.da04bb04.js b/3.x/assets/index.html.da04bb04.js new file mode 100644 index 00000000000..fcfb480d1c6 --- /dev/null +++ b/3.x/assets/index.html.da04bb04.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-07555a84","path":"/en/doc/","title":"Introduction","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Background","slug":"background","link":"#background","children":[]},{"level":2,"title":"Key features","slug":"key-features","link":"#key-features","children":[]},{"level":2,"title":"Contributors","slug":"contributors","link":"#contributors","children":[]}],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":2},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/README.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/install-detail.html.0208e8d8.js b/3.x/assets/install-detail.html.0208e8d8.js new file mode 100644 index 00000000000..3c105eedf52 --- /dev/null +++ b/3.x/assets/install-detail.html.0208e8d8.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-319f48f2","path":"/en/doc/install-detail.html","title":"Install Arthas","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Quick installation","slug":"quick-installation","link":"#quick-installation","children":[{"level":3,"title":"Use arthas-boot3(Recommended)","slug":"use-arthas-boot3-recommended","link":"#use-arthas-boot3-recommended","children":[]},{"level":3,"title":"Use as3.sh","slug":"use-as3-sh","link":"#use-as3-sh","children":[]}]},{"level":2,"title":"Full installation","slug":"full-installation","link":"#full-installation","children":[]},{"level":2,"title":"Manual Installation","slug":"manual-installation","link":"#manual-installation","children":[]},{"level":2,"title":"Installation via Packages","slug":"installation-via-packages","link":"#installation-via-packages","children":[{"level":3,"title":"Instruction for Debian based systems","slug":"instruction-for-debian-based-systems","link":"#instruction-for-debian-based-systems","children":[]},{"level":3,"title":"Instruction for Fedora based systems","slug":"instruction-for-fedora-based-systems","link":"#instruction-for-fedora-based-systems","children":[]},{"level":3,"title":"Usage","slug":"usage","link":"#usage","children":[]}]},{"level":2,"title":"Offline Help Documentation","slug":"offline-help-documentation","link":"#offline-help-documentation","children":[]},{"level":2,"title":"Uninstall","slug":"uninstall","link":"#uninstall","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/install-detail.md","version":"3.7.3"}');export{l as data}; diff --git a/3.x/assets/install-detail.html.0c410a89.js b/3.x/assets/install-detail.html.0c410a89.js new file mode 100644 index 00000000000..2bb57b647c7 --- /dev/null +++ b/3.x/assets/install-detail.html.0c410a89.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-0cb398f4","path":"/doc/install-detail.html","title":"Arthas Install","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u5FEB\u901F\u5B89\u88C5","slug":"\u5FEB\u901F\u5B89\u88C5","link":"#\u5FEB\u901F\u5B89\u88C5","children":[{"level":3,"title":"\u4F7F\u7528arthas-boot3\uFF08\u63A8\u8350\uFF09","slug":"\u4F7F\u7528arthas-boot3-\u63A8\u8350","link":"#\u4F7F\u7528arthas-boot3-\u63A8\u8350","children":[]},{"level":3,"title":"\u4F7F\u7528as3.sh","slug":"\u4F7F\u7528as3-sh","link":"#\u4F7F\u7528as3-sh","children":[]}]},{"level":2,"title":"\u5168\u91CF\u5B89\u88C5","slug":"\u5168\u91CF\u5B89\u88C5","link":"#\u5168\u91CF\u5B89\u88C5","children":[]},{"level":2,"title":"\u624B\u52A8\u5B89\u88C5","slug":"\u624B\u52A8\u5B89\u88C5","link":"#\u624B\u52A8\u5B89\u88C5","children":[]},{"level":2,"title":"\u901A\u8FC7 rpm/deb \u6765\u5B89\u88C5","slug":"\u901A\u8FC7-rpm-deb-\u6765\u5B89\u88C5","link":"#\u901A\u8FC7-rpm-deb-\u6765\u5B89\u88C5","children":[{"level":3,"title":"\u5B89\u88C5 deb","slug":"\u5B89\u88C5-deb","link":"#\u5B89\u88C5-deb","children":[]},{"level":3,"title":"\u5B89\u88C5 rpm","slug":"\u5B89\u88C5-rpm","link":"#\u5B89\u88C5-rpm","children":[]},{"level":3,"title":"deb/rpm \u5B89\u88C5\u7684\u7528\u6CD5","slug":"deb-rpm-\u5B89\u88C5\u7684\u7528\u6CD5","link":"#deb-rpm-\u5B89\u88C5\u7684\u7528\u6CD5","children":[]}]},{"level":2,"title":"\u901A\u8FC7 Cloud Toolkit \u63D2\u4EF6\u4F7F\u7528 Arthas","slug":"\u901A\u8FC7-cloud-toolkit-\u63D2\u4EF6\u4F7F\u7528-arthas","link":"#\u901A\u8FC7-cloud-toolkit-\u63D2\u4EF6\u4F7F\u7528-arthas","children":[]},{"level":2,"title":"\u5378\u8F7D","slug":"\u5378\u8F7D","link":"#\u5378\u8F7D","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/install-detail.md","version":"3.7.3"}');export{l as data}; diff --git a/3.x/assets/install-detail.html.50cfaa59.js b/3.x/assets/install-detail.html.50cfaa59.js new file mode 100644 index 00000000000..680fbc4a242 --- /dev/null +++ b/3.x/assets/install-detail.html.50cfaa59.js @@ -0,0 +1,13 @@ +import{_ as t,o as l,c as o,a,b as s,w as c,d as e,e as n,r as i}from"./app.4d248835.js";const h={},p=e(`

    Arthas Install

    \u5FEB\u901F\u5B89\u88C5

    \u4F7F\u7528arthas-boot3\uFF08\u63A8\u8350\uFF09

    \u4E0B\u8F7Darthas-boot3.jar\uFF0C\u7136\u540E\u7528java -jar\u7684\u65B9\u5F0F\u542F\u52A8\uFF1A

    curl -O https://arthas.aliyun.com/arthas-boot3.jar
    +java -jar arthas-boot3.jar
    +

    \u6253\u5370\u5E2E\u52A9\u4FE1\u606F\uFF1A

    java -jar arthas-boot3.jar -h
    +
    • \u5982\u679C\u4E0B\u8F7D\u901F\u5EA6\u6BD4\u8F83\u6162\uFF0C\u53EF\u4EE5\u4F7F\u7528 aliyun \u7684\u955C\u50CF\uFF1A

      java -jar arthas-boot3.jar --repo-mirror aliyun --use-http
      +

    \u4F7F\u7528as3.sh

    Arthas \u652F\u6301\u5728 Linux/Unix/Mac \u7B49\u5E73\u53F0\u4E0A\u4E00\u952E\u5B89\u88C5\uFF0C\u8BF7\u590D\u5236\u4EE5\u4E0B\u5185\u5BB9\uFF0C\u5E76\u7C98\u8D34\u5230\u547D\u4EE4\u884C\u4E2D\uFF0C\u6572 \u56DE\u8F66 \u6267\u884C\u5373\u53EF\uFF1A

    curl -L https://arthas.aliyun.com/install3.sh | sh
    +

    \u4E0A\u8FF0\u547D\u4EE4\u4F1A\u4E0B\u8F7D\u542F\u52A8\u811A\u672C\u6587\u4EF6 as3.sh \u5230\u5F53\u524D\u76EE\u5F55\uFF0C\u4F60\u53EF\u4EE5\u653E\u5728\u4EFB\u4F55\u5730\u65B9\u6216\u5C06\u5176\u52A0\u5165\u5230 $PATH \u4E2D\u3002

    \u76F4\u63A5\u5728 shell \u4E0B\u9762\u6267\u884C./as3.sh\uFF0C\u5C31\u4F1A\u8FDB\u5165\u4EA4\u4E92\u754C\u9762\u3002

    \u4E5F\u53EF\u4EE5\u6267\u884C./as3.sh -h\u6765\u83B7\u53D6\u66F4\u591A\u53C2\u6570\u4FE1\u606F\u3002

    \u5168\u91CF\u5B89\u88C5

    \u4ECE Github Releases \u9875\u4E0B\u8F7D

    `,16),u={href:"https://github.com/alibaba/arthas/releases",target:"_blank",rel:"noopener noreferrer"},b=n("https://github.com/alibaba/arthas/releases"),m=e(`

    \u89E3\u538B\u540E\uFF0C\u5728\u6587\u4EF6\u5939\u91CC\u6709arthas-boot3.jar\uFF0C\u76F4\u63A5\u7528java -jar\u7684\u65B9\u5F0F\u542F\u52A8\uFF1A

    java -jar arthas-boot3.jar
    +

    \u6253\u5370\u5E2E\u52A9\u4FE1\u606F\uFF1A

    java -jar arthas-boot3.jar -h
    +

    \u624B\u52A8\u5B89\u88C5

    `,5),v=n("\u624B\u52A8\u5B89\u88C5"),g=e(`

    \u901A\u8FC7 rpm/deb \u6765\u5B89\u88C5

    \u5728 releases \u9875\u9762\u4E0B\u8F7D rpm/deb \u5305\uFF1A https://github.com/alibaba/arthas/releases

    \u5B89\u88C5 deb

    sudo dpkg -i arthas*.deb
    +

    \u5B89\u88C5 rpm

    sudo rpm -i arthas*.rpm
    +

    deb/rpm \u5B89\u88C5\u7684\u7528\u6CD5

    \u5728\u5B89\u88C5\u540E\uFF0C\u53EF\u4EE5\u76F4\u63A5\u6267\u884C\uFF1A

    as3.sh
    +

    \u901A\u8FC7 Cloud Toolkit \u63D2\u4EF6\u4F7F\u7528 Arthas

    `,10),k={href:"https://github.com/alibaba/arthas/issues/570",target:"_blank",rel:"noopener noreferrer"},f=n("\u901A\u8FC7 Cloud Toolkit \u63D2\u4EF6\u4F7F\u7528 Arthas \u4E00\u952E\u8BCA\u65AD\u8FDC\u7A0B\u670D\u52A1\u5668"),_=e(`

    \u5378\u8F7D

    • \u5728 Linux/Unix/Mac \u5E73\u53F0

      \u5220\u9664\u4E0B\u9762\u6587\u4EF6\uFF1A

      rm -rf ~/.arthas/
      +rm -rf ~/logs/arthas
      +
    • Windows \u5E73\u53F0\u76F4\u63A5\u5220\u9664 user home \u4E0B\u9762\u7684.arthas\u548Clogs/arthas\u76EE\u5F55

    `,2);function x(j,L){const r=i("ExternalLinkIcon"),d=i("RouterLink");return l(),o("div",null,[p,a("p",null,[a("a",u,[b,s(r)])]),m,a("p",null,[s(d,{to:"/doc/manual-install.html"},{default:c(()=>[v]),_:1})]),g,a("ul",null,[a("li",null,[a("a",k,[f,s(r)])])]),_])}const y=t(h,[["render",x],["__file","install-detail.html.vue"]]);export{y as default}; diff --git a/3.x/assets/install-detail.html.cbd1e77a.js b/3.x/assets/install-detail.html.cbd1e77a.js new file mode 100644 index 00000000000..cc592fc3eee --- /dev/null +++ b/3.x/assets/install-detail.html.cbd1e77a.js @@ -0,0 +1,12 @@ +import{_ as o,o as l,c as d,a,b as s,w as c,d as e,e as n,r as i}from"./app.4d248835.js";const h={},u=e(`

    Install Arthas

    Quick installation

    Downloadarthas-boot3.jar\uFF0CStart with java command:

    curl -O https://arthas.aliyun.com/arthas-boot3.jar
    +java -jar arthas-boot3.jar
    +

    Print usage:

    java -jar arthas-boot3.jar -h
    +

    Use as3.sh

    You can install Arthas with one single line command on Linux, Unix, and Mac. Pls. copy the following command and paste it into the command line, then press Enter to run:

    curl -L https://arthas.aliyun.com/install3.sh | sh
    +

    The command above will download the bootstrap script as3.sh to the current directory. You can move it to any other place you want, or put its location in $PATH.

    You can enter its interactive interface by executing as3.sh, or execute as3.sh -h for more help information.

    Full installation

    Download from Github Releases

    `,14),p={href:"https://github.com/alibaba/arthas/releases",target:"_blank",rel:"noopener noreferrer"},m=n("https://github.com/alibaba/arthas/releases"),b=e(`

    Download and unzip, find arthas-boot3.jar in the directory. Start with java command:

    java -jar arthas-boot3.jar
    +

    Print usage:

    java -jar arthas-boot3.jar -h
    +

    Manual Installation

    `,5),v=n("Manual Installation"),f=e(`

    Installation via Packages

    Arthas has packages for Debian and Fedora based systems. you can get them from the github releases page https://github.com/alibaba/arthas/releases.

    Instruction for Debian based systems

    sudo dpkg -i arthas*.deb
    +

    Instruction for Fedora based systems

    sudo rpm -i arthas*.rpm
    +

    Usage

    After the installation of packages, execute

    as3.sh
    +

    Offline Help Documentation

    `,10),g=n("Latest Version Documentation, Click To Download:"),k={href:"https://arthas.aliyun.com/download/doc/latest_version",target:"_blank",rel:"noopener noreferrer"},_=a("img",{src:"https://img.shields.io/maven-central/v/com.taobao.arthas/arthas-packaging.svg?style=flat-square",alt:"",title:"Arthas"},null,-1),x=e(`

    Uninstall

    • On Linux/Unix/Mac, delete the files with the following command:

      rm -rf ~/.arthas/
      +rm -rf ~/logs/arthas/
      +
    • On Windows, delete .arthas and logs/arthas directory under user home.

    `,2);function y(j,w){const t=i("ExternalLinkIcon"),r=i("RouterLink");return l(),d("div",null,[u,a("p",null,[a("a",p,[m,s(t)])]),b,a("p",null,[s(r,{to:"/en/doc/manual-install.html"},{default:c(()=>[v]),_:1})]),f,a("p",null,[g,a("a",k,[_,s(t)])]),x])}const I=o(h,[["render",y],["__file","install-detail.html.vue"]]);export{I as default}; diff --git a/3.x/assets/jad.html.01fefda3.js b/3.x/assets/jad.html.01fefda3.js new file mode 100644 index 00000000000..7fa13b3ef2b --- /dev/null +++ b/3.x/assets/jad.html.01fefda3.js @@ -0,0 +1,119 @@ +import{_ as l,o as i,c as u,a as s,b as a,w as t,e as n,d as o,r as p}from"./app.4d248835.js";const r={},d=s("h1",{id:"jad",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#jad","aria-hidden":"true"},"#"),n(" jad")],-1),k={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=en&id=command-jad",target:"_blank",rel:"noopener noreferrer"},m=s("code",null,"jad",-1),v=n(" online tutorial"),h=s("div",{class:"custom-container tip"},[s("p",{class:"custom-container-title"},"TIP"),s("p",null,"Decompile the specified classes.")],-1),b=s("code",null,"jad",-1),g=n(" helps to decompile the byte code running in JVM to the source code to assist you to understand the logic behind better. If you need to download the bytecode of classes in a specific package directory in bulk, you can refer to the "),y=n("dump"),w=n(" tool for assistance."),f=o(`
    • The decompiled code is syntax highlighted for better readability in Arthas console.
    • It is possible that there's grammar error in the decompiled code, but it should not affect your interpretation.

    Options

    NameSpecification
    class-patternpattern for the class name
    [c:]hashcode of the class loader that loads the class
    [classLoaderClass:]The class name of the ClassLoader that executes the expression.
    [E]turn on regex match while the default is wildcard match

    Usage

    Decompile java.lang.String

    $ jad java.lang.String
    +
    +ClassLoader:
    +
    +Location:
    +
    +
    +        /*
    +         * Decompiled with CFR.
    +         */
    +        package java.lang;
    +
    +        import java.io.ObjectStreamField;
    +        import java.io.Serializable;
    +...
    +        public final class String
    +        implements Serializable,
    +        Comparable<String>,
    +        CharSequence {
    +            private final char[] value;
    +            private int hash;
    +            private static final long serialVersionUID = -6849794470754667710L;
    +            private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];
    +            public static final Comparator<String> CASE_INSENSITIVE_ORDER = new CaseInsensitiveComparator();
    +...
    +            public String(byte[] byArray, int n, int n2, Charset charset) {
    +/*460*/         if (charset == null) {
    +                    throw new NullPointerException("charset");
    +                }
    +/*462*/         String.checkBounds(byArray, n, n2);
    +/*463*/         this.value = StringCoding.decode(charset, byArray, n, n2);
    +            }
    +...
    +
    `,7),_=n("By default, the decompile result will have the "),j=s("code",null,"ClassLoader",-1),L=n(" information. With the "),x=s("code",null,"--source-only",-1),C=n(" option, you can print only the source code. Conveniently used with the "),S=n("mc"),E=n("/"),I=n("retransform"),A=n(" commands."),D=o(`
    $ jad --source-only demo.MathGame
    +/*
    + * Decompiled with CFR 0_132.
    + */
    +package demo;
    +
    +import java.io.PrintStream;
    +import java.util.ArrayList;
    +import java.util.Iterator;
    +import java.util.List;
    +import java.util.Random;
    +import java.util.concurrent.TimeUnit;
    +
    +public class MathGame {
    +    private static Random random = new Random();
    +    public int illegalArgumentCount = 0;
    +...
    +

    Decompile the specified method

    $ jad demo.MathGame main
    +
    +ClassLoader:
    ++-sun.misc.Launcher$AppClassLoader@232204a1
    +  +-sun.misc.Launcher$ExtClassLoader@7f31245a
    +
    +Location:
    +/private/tmp/math-game.jar
    +
    +       public static void main(String[] args) throws InterruptedException {
    +           MathGame game = new MathGame();
    +           while (true) {
    +/*16*/         game.run();
    +/*17*/         TimeUnit.SECONDS.sleep(1L);
    +           }
    +       }
    +

    Do not print line numbers

    • --lineNumber: Output source code contins line numbers, default value true
    $ jad demo.MathGame main --lineNumber false
    +
    +ClassLoader:
    ++-sun.misc.Launcher$AppClassLoader@232204a1
    +  +-sun.misc.Launcher$ExtClassLoader@7f31245a
    +
    +Location:
    +/private/tmp/math-game.jar
    +
    +public static void main(String[] args) throws InterruptedException {
    +    MathGame game = new MathGame();
    +    while (true) {
    +        game.run();
    +        TimeUnit.SECONDS.sleep(1L);
    +    }
    +}
    +

    Decompile with specified classLoader

    TIP

    If the target class is loaded by multiple classloaders, jad outputs the hashcode of the corresponding classloaders, then you can re-run jad and specify -c <hashcode> to decompile the target class from the specified classloader.

    $ jad org.apache.log4j.Logger
    +
    +Found more than one class for: org.apache.log4j.Logger, Please use jad -c hashcode org.apache.log4j.Logger
    +HASHCODE  CLASSLOADER
    +69dcaba4  +-monitor's ModuleClassLoader
    +6e51ad67  +-java.net.URLClassLoader@6e51ad67
    +            +-sun.misc.Launcher$AppClassLoader@6951a712
    +            +-sun.misc.Launcher$ExtClassLoader@6fafc4c2
    +2bdd9114  +-pandora-qos-service's ModuleClassLoader
    +4c0df5f8  +-pandora-framework's ModuleClassLoader
    +
    +Affect(row-cnt:0) cost in 38 ms.
    +$ jad org.apache.log4j.Logger -c 69dcaba4
    +
    +ClassLoader:
    ++-monitor's ModuleClassLoader
    +
    +Location:
    +/Users/admin/app/log4j-1.2.14.jar
    +
    +package org.apache.log4j;
    +
    +import org.apache.log4j.spi.*;
    +
    +public class Logger extends Category
    +{
    +    private static final String FQCN;
    +
    +    protected Logger(String name)
    +    {
    +        super(name);
    +    }
    +
    +...
    +
    +Affect(row-cnt:1) cost in 190 ms.
    +

    For classloader with only one instance, it can be specified by --classLoaderClass using class name, which is more convenient to use.

    The value of --classloaderclass is the class name of classloader. It can only work when it matches a unique classloader instance. The purpose is to facilitate the input of general commands. However, -c <hashcode> is dynamic.

    `,11);function M(N,$){const c=p("ExternalLinkIcon"),e=p("RouterLink");return i(),u("div",null,[d,s("p",null,[s("a",k,[m,v,a(c)])]),h,s("p",null,[b,g,a(e,{to:"/en/doc/dump.html"},{default:t(()=>[y]),_:1}),w]),f,s("p",null,[_,j,L,x,C,a(e,{to:"/en/doc/mc.html"},{default:t(()=>[S]),_:1}),E,a(e,{to:"/en/doc/retransform.html"},{default:t(()=>[I]),_:1}),A]),D])}const T=l(r,[["render",M],["__file","jad.html.vue"]]);export{T as default}; diff --git a/3.x/assets/jad.html.67f11a53.js b/3.x/assets/jad.html.67f11a53.js new file mode 100644 index 00000000000..19c433d7ac2 --- /dev/null +++ b/3.x/assets/jad.html.67f11a53.js @@ -0,0 +1,119 @@ +import{_ as l,o as i,c as u,a as s,b as a,w as p,e as n,d as o,r as t}from"./app.4d248835.js";const r={},k=s("h1",{id:"jad",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#jad","aria-hidden":"true"},"#"),n(" jad")],-1),d={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=cn&id=command-jad",target:"_blank",rel:"noopener noreferrer"},m=s("code",null,"jad",-1),v=n("\u5728\u7EBF\u6559\u7A0B"),b=s("div",{class:"custom-container tip"},[s("p",{class:"custom-container-title"},"\u63D0\u793A"),s("p",null,"\u53CD\u7F16\u8BD1\u6307\u5B9A\u5DF2\u52A0\u8F7D\u7C7B\u7684\u6E90\u7801")],-1),h=s("code",null,"jad",-1),g=n(" \u547D\u4EE4\u5C06 JVM \u4E2D\u5B9E\u9645\u8FD0\u884C\u7684 class \u7684 byte code \u53CD\u7F16\u8BD1\u6210 java \u4EE3\u7801\uFF0C\u4FBF\u4E8E\u4F60\u7406\u89E3\u4E1A\u52A1\u903B\u8F91\uFF1B\u5982\u9700\u6279\u91CF\u4E0B\u8F7D\u6307\u5B9A\u5305\u7684\u76EE\u5F55\u7684 class \u5B57\u8282\u7801\u53EF\u4EE5\u53C2\u8003 "),y=n("dump"),w=n("\u3002"),_=o(`
    • \u5728 Arthas Console \u4E0A\uFF0C\u53CD\u7F16\u8BD1\u51FA\u6765\u7684\u6E90\u7801\u662F\u5E26\u8BED\u6CD5\u9AD8\u4EAE\u7684\uFF0C\u9605\u8BFB\u66F4\u65B9\u4FBF
    • \u5F53\u7136\uFF0C\u53CD\u7F16\u8BD1\u51FA\u6765\u7684 java \u4EE3\u7801\u53EF\u80FD\u4F1A\u5B58\u5728\u8BED\u6CD5\u9519\u8BEF\uFF0C\u4F46\u4E0D\u5F71\u54CD\u4F60\u8FDB\u884C\u9605\u8BFB\u7406\u89E3

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    class-pattern\u7C7B\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    [c:]\u7C7B\u6240\u5C5E ClassLoader \u7684 hashcode
    [classLoaderClass:]\u6307\u5B9A\u6267\u884C\u8868\u8FBE\u5F0F\u7684 ClassLoader \u7684 class name
    [E]\u5F00\u542F\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\uFF0C\u9ED8\u8BA4\u4E3A\u901A\u914D\u7B26\u5339\u914D

    \u4F7F\u7528\u53C2\u8003

    \u53CD\u7F16\u8BD1java.lang.String

    $ jad java.lang.String
    +
    +ClassLoader:
    +
    +Location:
    +
    +
    +        /*
    +         * Decompiled with CFR.
    +         */
    +        package java.lang;
    +
    +        import java.io.ObjectStreamField;
    +        import java.io.Serializable;
    +...
    +        public final class String
    +        implements Serializable,
    +        Comparable<String>,
    +        CharSequence {
    +            private final char[] value;
    +            private int hash;
    +            private static final long serialVersionUID = -6849794470754667710L;
    +            private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];
    +            public static final Comparator<String> CASE_INSENSITIVE_ORDER = new CaseInsensitiveComparator();
    +...
    +            public String(byte[] byArray, int n, int n2, Charset charset) {
    +/*460*/         if (charset == null) {
    +                    throw new NullPointerException("charset");
    +                }
    +/*462*/         String.checkBounds(byArray, n, n2);
    +/*463*/         this.value = StringCoding.decode(charset, byArray, n, n2);
    +            }
    +...
    +

    \u53CD\u7F16\u8BD1\u65F6\u53EA\u663E\u793A\u6E90\u4EE3\u7801

    `,7),j=n("\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u53CD\u7F16\u8BD1\u7ED3\u679C\u91CC\u4F1A\u5E26\u6709"),f=s("code",null,"ClassLoader",-1),L=n("\u4FE1\u606F\uFF0C\u901A\u8FC7"),C=s("code",null,"--source-only",-1),x=n("\u9009\u9879\uFF0C\u53EF\u4EE5\u53EA\u6253\u5370\u6E90\u4EE3\u7801\u3002\u65B9\u4FBF\u548C"),S=n("mc"),E=n("/"),A=n("retransform"),M=n("\u547D\u4EE4\u7ED3\u5408\u4F7F\u7528\u3002"),N=o(`
    $ jad --source-only demo.MathGame
    +/*
    + * Decompiled with CFR 0_132.
    + */
    +package demo;
    +
    +import java.io.PrintStream;
    +import java.util.ArrayList;
    +import java.util.Iterator;
    +import java.util.List;
    +import java.util.Random;
    +import java.util.concurrent.TimeUnit;
    +
    +public class MathGame {
    +    private static Random random = new Random();
    +    public int illegalArgumentCount = 0;
    +...
    +

    \u53CD\u7F16\u8BD1\u6307\u5B9A\u7684\u51FD\u6570

    $ jad demo.MathGame main
    +
    +ClassLoader:
    ++-sun.misc.Launcher$AppClassLoader@232204a1
    +  +-sun.misc.Launcher$ExtClassLoader@7f31245a
    +
    +Location:
    +/private/tmp/math-game.jar
    +
    +       public static void main(String[] args) throws InterruptedException {
    +           MathGame game = new MathGame();
    +           while (true) {
    +/*16*/         game.run();
    +/*17*/         TimeUnit.SECONDS.sleep(1L);
    +           }
    +       }
    +

    \u53CD\u7F16\u8BD1\u65F6\u4E0D\u663E\u793A\u884C\u53F7

    --lineNumber \u53C2\u6570\u9ED8\u8BA4\u503C\u4E3A true\uFF0C\u663E\u793A\u6307\u5B9A\u4E3A false \u5219\u4E0D\u6253\u5370\u884C\u53F7\u3002

    $ jad demo.MathGame main --lineNumber false
    +
    +ClassLoader:
    ++-sun.misc.Launcher$AppClassLoader@232204a1
    +  +-sun.misc.Launcher$ExtClassLoader@7f31245a
    +
    +Location:
    +/private/tmp/math-game.jar
    +
    +public static void main(String[] args) throws InterruptedException {
    +    MathGame game = new MathGame();
    +    while (true) {
    +        game.run();
    +        TimeUnit.SECONDS.sleep(1L);
    +    }
    +}
    +

    \u53CD\u7F16\u8BD1\u65F6\u6307\u5B9A ClassLoader

    \u63D0\u793A

    \u5F53\u6709\u591A\u4E2A ClassLoader \u90FD\u52A0\u8F7D\u4E86\u8FD9\u4E2A\u7C7B\u65F6\uFF0Cjad \u547D\u4EE4\u4F1A\u8F93\u51FA\u5BF9\u5E94 ClassLoader \u5B9E\u4F8B\u7684 hashcode\uFF0C\u7136\u540E\u4F60\u53EA\u9700\u8981\u91CD\u65B0\u6267\u884C jad \u547D\u4EE4\uFF0C\u5E76\u4F7F\u7528\u53C2\u6570 -c <hashcode> \u5C31\u53EF\u4EE5\u53CD\u7F16\u8BD1\u6307\u5B9A ClassLoader \u52A0\u8F7D\u7684\u90A3\u4E2A\u7C7B\u4E86\uFF1B

    $ jad org.apache.log4j.Logger
    +
    +Found more than one class for: org.apache.log4j.Logger, Please use jad -c hashcode org.apache.log4j.Logger
    +HASHCODE  CLASSLOADER
    +69dcaba4  +-monitor's ModuleClassLoader
    +6e51ad67  +-java.net.URLClassLoader@6e51ad67
    +            +-sun.misc.Launcher$AppClassLoader@6951a712
    +            +-sun.misc.Launcher$ExtClassLoader@6fafc4c2
    +2bdd9114  +-pandora-qos-service's ModuleClassLoader
    +4c0df5f8  +-pandora-framework's ModuleClassLoader
    +
    +Affect(row-cnt:0) cost in 38 ms.
    +$ jad org.apache.log4j.Logger -c 69dcaba4
    +
    +ClassLoader:
    ++-monitor's ModuleClassLoader
    +
    +Location:
    +/Users/admin/app/log4j-1.2.14.jar
    +
    +package org.apache.log4j;
    +
    +import org.apache.log4j.spi.*;
    +
    +public class Logger extends Category
    +{
    +    private static final String FQCN;
    +
    +    protected Logger(String name)
    +    {
    +        super(name);
    +    }
    +
    +...
    +
    +Affect(row-cnt:1) cost in 190 ms.
    +

    \u5BF9\u4E8E\u53EA\u6709\u552F\u4E00\u5B9E\u4F8B\u7684 ClassLoader \u8FD8\u53EF\u4EE5\u901A\u8FC7--classLoaderClass\u6307\u5B9A class name\uFF0C\u4F7F\u7528\u8D77\u6765\u66F4\u52A0\u65B9\u4FBF\uFF1A

    --classLoaderClass \u7684\u503C\u662F ClassLoader \u7684\u7C7B\u540D\uFF0C\u53EA\u6709\u5339\u914D\u5230\u552F\u4E00\u7684 ClassLoader \u5B9E\u4F8B\u65F6\u624D\u80FD\u5DE5\u4F5C\uFF0C\u76EE\u7684\u662F\u65B9\u4FBF\u8F93\u5165\u901A\u7528\u547D\u4EE4\uFF0C\u800C-c <hashcode>\u662F\u52A8\u6001\u53D8\u5316\u7684\u3002

    `,11);function $(R,I){const c=t("ExternalLinkIcon"),e=t("RouterLink");return i(),u("div",null,[k,s("p",null,[s("a",d,[m,v,a(c)])]),b,s("p",null,[h,g,a(e,{to:"/doc/dump.html"},{default:p(()=>[y]),_:1}),w]),_,s("p",null,[j,f,L,C,x,a(e,{to:"/doc/mc.html"},{default:p(()=>[S]),_:1}),E,a(e,{to:"/doc/retransform.html"},{default:p(()=>[A]),_:1}),M]),N])}const F=l(r,[["render",$],["__file","jad.html.vue"]]);export{F as default}; diff --git a/3.x/assets/jad.html.d639a8bb.js b/3.x/assets/jad.html.d639a8bb.js new file mode 100644 index 00000000000..b4beb6ccbda --- /dev/null +++ b/3.x/assets/jad.html.d639a8bb.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-211d675c","path":"/doc/jad.html","title":"jad","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"\u53CD\u7F16\u8BD1java.lang.String","slug":"\u53CD\u7F16\u8BD1java-lang-string","link":"#\u53CD\u7F16\u8BD1java-lang-string","children":[]},{"level":3,"title":"\u53CD\u7F16\u8BD1\u65F6\u53EA\u663E\u793A\u6E90\u4EE3\u7801","slug":"\u53CD\u7F16\u8BD1\u65F6\u53EA\u663E\u793A\u6E90\u4EE3\u7801","link":"#\u53CD\u7F16\u8BD1\u65F6\u53EA\u663E\u793A\u6E90\u4EE3\u7801","children":[]},{"level":3,"title":"\u53CD\u7F16\u8BD1\u6307\u5B9A\u7684\u51FD\u6570","slug":"\u53CD\u7F16\u8BD1\u6307\u5B9A\u7684\u51FD\u6570","link":"#\u53CD\u7F16\u8BD1\u6307\u5B9A\u7684\u51FD\u6570","children":[]},{"level":3,"title":"\u53CD\u7F16\u8BD1\u65F6\u4E0D\u663E\u793A\u884C\u53F7","slug":"\u53CD\u7F16\u8BD1\u65F6\u4E0D\u663E\u793A\u884C\u53F7","link":"#\u53CD\u7F16\u8BD1\u65F6\u4E0D\u663E\u793A\u884C\u53F7","children":[]},{"level":3,"title":"\u53CD\u7F16\u8BD1\u65F6\u6307\u5B9A ClassLoader","slug":"\u53CD\u7F16\u8BD1\u65F6\u6307\u5B9A-classloader","link":"#\u53CD\u7F16\u8BD1\u65F6\u6307\u5B9A-classloader","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":2},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/jad.md","version":"3.7.3"}');export{l as data}; diff --git a/3.x/assets/jad.html.e520a68e.js b/3.x/assets/jad.html.e520a68e.js new file mode 100644 index 00000000000..9f14a323d2f --- /dev/null +++ b/3.x/assets/jad.html.e520a68e.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-207b7d70","path":"/en/doc/jad.html","title":"jad","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"Decompile java.lang.String","slug":"decompile-java-lang-string","link":"#decompile-java-lang-string","children":[]},{"level":3,"title":"Print source only","slug":"print-source-only","link":"#print-source-only","children":[]},{"level":3,"title":"Decompile the specified method","slug":"decompile-the-specified-method","link":"#decompile-the-specified-method","children":[]},{"level":3,"title":"Do not print line numbers","slug":"do-not-print-line-numbers","link":"#do-not-print-line-numbers","children":[]},{"level":3,"title":"Decompile with specified classLoader","slug":"decompile-with-specified-classloader","link":"#decompile-with-specified-classloader","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":2},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/jad.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/jfr.html.57a326e6.js b/3.x/assets/jfr.html.57a326e6.js new file mode 100644 index 00000000000..74a0cd1987c --- /dev/null +++ b/3.x/assets/jfr.html.57a326e6.js @@ -0,0 +1 @@ +const r=JSON.parse('{"key":"v-40de7e67","path":"/en/doc/jfr.html","title":"jfr","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"Supported Options","slug":"supported-options","link":"#supported-options","children":[]},{"level":2,"title":"Start jfr recording","slug":"start-jfr-recording","link":"#start-jfr-recording","children":[]},{"level":2,"title":"dump jfr recording","slug":"dump-jfr-recording","link":"#dump-jfr-recording","children":[]},{"level":2,"title":"Stop jfr recording","slug":"stop-jfr-recording","link":"#stop-jfr-recording","children":[]},{"level":2,"title":"View JFR recording results under arthas-output via browser","slug":"view-jfr-recording-results-under-arthas-output-via-browser","link":"#view-jfr-recording-results-under-arthas-output-via-browser","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"longxu0509","email":"108991596+longxu0509@users.noreply.github.com","commits":1}]},"filePathRelative":"en/doc/jfr.md","version":"3.7.3"}');export{r as data}; diff --git a/3.x/assets/jfr.html.63d78e12.js b/3.x/assets/jfr.html.63d78e12.js new file mode 100644 index 00000000000..f5f591b5cb8 --- /dev/null +++ b/3.x/assets/jfr.html.63d78e12.js @@ -0,0 +1,22 @@ +import{_ as r}from"./arthas-output-recording.5e4ef7bc.js";import{_ as i,o,c as d,a as e,b as s,e as t,t as l,d as n,r as c}from"./app.4d248835.js";const p={},u=e("h1",{id:"jfr",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#jfr","aria-hidden":"true"},"#"),t(" jfr")],-1),h={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-jfr",target:"_blank",rel:"noopener noreferrer"},g=e("code",null,"jfr",-1),m=t(" online tutorial"),f=n(`

    TIP

    Java Flight Recorder (JFR) is a tool for collecting diagnostic and profiling data about a running Java application. It is integrated into the Java Virtual Machine (JVM) and causes almost no performance overhead, so it can be used even in heavily loaded production environments.

    The jfr command supports starting and stopping JFR recordings during dynamic program running. Recording collects data about events. Events occur in the JVM or the Java application at a specific point in time. Each event has a name, a time stamp, and an optional payload. The payload is the data associated with an event, for example, the CPU usage, the Java heap size before and after the event, the thread ID of the lock holder, and so on.

    The basic usage of the jfr command isjfr cmd [actionArg]

    Note: jfr is supported only after the 8u262 version of jdk8

    Supported Options

    NameSpecification
    cmdCommand to execute, support\u3010start\uFF0Cstatus\uFF0Cdump\uFF0Cstop\u3011
    actionArgAttribute name pattern
    [n:]Name of recording
    [r:]Recording id
    [dumponexit:]When the program exits, whether to dump the .jfr file. (boolean false)
    [d:]Duration of recording, i.e. 60s, 2m, 5h, 3d. default no delay
    [duration:]Duration of recording, default forever.
    [s:]Server-side template, The default is default.jfc located at $JAVA_HOME/lib/jfr/default.jfc
    [f:]Resulting recording filename
    [maxage:]Maximum age of buffer data
    [maxsize:]Maximum size of buffers in bytes
    [state:]Recording state

    Start jfr recording

    $ jfr start
    +Started recording 1. No limit specified, using maxsize=250MB as default.
    +

    TIP

    The default JFR record is started.

    Start the JFR recording, specify the recording name, duration, file saving path.

    $ jfr start -n myRecording --duration 60s -f /tmp/myRecording.jfr
    +Started recording 2. The result will be written to:
    +/tmp/myRecording.jfr
    +

    ##View jfr recordings status

    The default is to view all JFR recordings.

    $ jfr status
    +Recording: recording=1 name=Recording-1 (running)
    +Recording: recording=2 name=myRecording duration=PT1M (closed)
    +

    View the records of the specified recording ID.

    $ jfr status -r 1
    +Recording: recording=1 name=Recording-1 (running)
    +

    View recordings in a specified state.

    $ jfr status --state closed
    +Recording: recording=2 name=myRecording duration=PT1M (closed)
    +

    dump jfr recording

    `,19),v=t("The "),b=e("code",null,"jfr dump",-1),x=e("br",null,null,-1),k=t(" Specifies the record output path."),_=n(`
    $ jfr dump -r 1 -f /tmp/myRecording1.jfr
    +Dump recording 1, The result will be written to:
    +/tmp/myRecording1.jfr
    +

    The file output path is not specified. By default, it is saved to the arthas-output directory

    $ jfr dump -r 1
    +Dump recording 1, The result will be written to:
    +/tmp/test/arthas-output/20220819-200915.jfr
    +

    Stop jfr recording

    No recording output path is specified, default is saved to arthas-output directory.

    $ jfr stop -r 1
    +Stop recording 1, The result will be written to:
    +/tmp/test/arthas-output/20220819-202049.jfr
    +

    notice: A recording can only be stopped once.

    You can also specify the record output path.

    View JFR recording results under arthas-output via browser

    `,9),y=t("By default, arthas uses http port 8563 , which can be opened:"),j={href:"http://localhost:8563/arthas-output/",target:"_blank",rel:"noopener noreferrer"},w=t("http://localhost:8563/arthas-output/"),R=t(" View the "),J=e("code",null,"arthas-output",-1),T=t(" directory below JFR recording results:"),S=e("p",null,[e("img",{src:r,alt:""})],-1),V=e("p",null,"The resulting results can be viewed with tools that support the JFR format. Such as:",-1),F=e("ul",null,[e("li",null,"JDK Mission Control \uFF1A https://github.com/openjdk/jmc")],-1);function M(N,$){const a=c("ExternalLinkIcon");return o(),d("div",null,[u,e("p",null,[e("a",h,[g,m,s(a)])]),f,e("p",null,[v,b,t(l()+" command will output the recordings from the start until the execution of the command to a JFR file, without stopping the recording.",1),x,k]),_,e("p",null,[y,e("a",j,[w,s(a)]),R,J,T]),S,V,F])}const A=i(p,[["render",M],["__file","jfr.html.vue"]]);export{A as default}; diff --git a/3.x/assets/jfr.html.bb7f02ab.js b/3.x/assets/jfr.html.bb7f02ab.js new file mode 100644 index 00000000000..b0b5eedbdbb --- /dev/null +++ b/3.x/assets/jfr.html.bb7f02ab.js @@ -0,0 +1,22 @@ +import{_ as l}from"./arthas-output-recording.5e4ef7bc.js";import{_ as i,o as d,c as o,a as e,b as s,e as t,t as n,d as r,r as c}from"./app.4d248835.js";const p={},u=e("h1",{id:"jfr",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#jfr","aria-hidden":"true"},"#"),t(" jfr")],-1),h={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-jfr",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"jfr",-1),g=t("\u5728\u7EBF\u6559\u7A0B"),v=r(`

    \u63D0\u793A

    Java Flight Recorder (JFR) \u662F\u4E00\u79CD\u7528\u4E8E\u6536\u96C6\u6709\u5173\u6B63\u5728\u8FD0\u884C\u7684 Java \u5E94\u7528\u7A0B\u5E8F\u7684\u8BCA\u65AD\u548C\u5206\u6790\u6570\u636E\u7684\u5DE5\u5177\u3002\u5B83\u96C6\u6210\u5230 Java \u865A\u62DF\u673A (JVM) \u4E2D\uFF0C\u51E0\u4E4E\u4E0D\u4F1A\u9020\u6210\u6027\u80FD\u5F00\u9500\uFF0C\u56E0\u6B64\u5373\u4F7F\u5728\u8D1F\u8F7D\u8F83\u91CD\u7684\u751F\u4EA7\u73AF\u5883\u4E2D\u4E5F\u53EF\u4EE5\u4F7F\u7528\u3002

    jfr \u547D\u4EE4\u652F\u6301\u5728\u7A0B\u5E8F\u52A8\u6001\u8FD0\u884C\u8FC7\u7A0B\u4E2D\u5F00\u542F\u548C\u5173\u95ED JFR \u8BB0\u5F55\u3002 \u8BB0\u5F55\u6536\u96C6\u6709\u5173 event \u7684\u6570\u636E\u3002\u4E8B\u4EF6\u5728\u7279\u5B9A\u65F6\u95F4\u70B9\u53D1\u751F\u5728 JVM \u6216 Java \u5E94\u7528\u7A0B\u5E8F\u4E2D\u3002\u6BCF\u4E2A\u4E8B\u4EF6\u90FD\u6709\u4E00\u4E2A\u540D\u79F0\u3001\u4E00\u4E2A\u65F6\u95F4\u6233\u548C\u4E00\u4E2A\u53EF\u9009\u7684\u6709\u6548\u8D1F\u8F7D\u3002\u8D1F\u8F7D\u662F\u4E0E\u4E8B\u4EF6\u76F8\u5173\u7684\u6570\u636E\uFF0C\u4F8B\u5982 CPU \u4F7F\u7528\u7387\u3001\u4E8B\u4EF6\u524D\u540E\u7684 Java \u5806\u5927\u5C0F\u3001\u9501\u6301\u6709\u8005\u7684\u7EBF\u7A0B ID \u7B49\u3002

    jfr \u547D\u4EE4\u57FA\u672C\u8FD0\u884C\u7ED3\u6784\u662F jfr cmd [actionArg]

    \u6CE8\u610F\uFF1A JDK8 \u7684 8u262 \u7248\u672C\u4E4B\u540E\u624D\u652F\u6301 jfr

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    cmd\u8981\u6267\u884C\u7684\u64CD\u4F5C \u652F\u6301\u7684\u547D\u4EE4\u3010start\uFF0Cstatus\uFF0Cdump\uFF0Cstop\u3011
    actionArg\u5C5E\u6027\u540D\u6A21\u5F0F
    [n:]\u8BB0\u5F55\u540D\u79F0
    [r:]\u8BB0\u5F55 id \u503C
    [dumponexit:]\u7A0B\u5E8F\u9000\u51FA\u65F6\uFF0C\u662F\u5426\u8981 dump \u51FA .jfr \u6587\u4EF6\uFF0C\u9ED8\u8BA4\u4E3A false
    [d:]\u5EF6\u8FDF\u591A\u4E45\u540E\u542F\u52A8 JFR \u8BB0\u5F55\uFF0C\u652F\u6301\u5E26\u5355\u4F4D\u914D\u7F6E\uFF0Ceg: 60s, 2m, 5h, 3d. \u4E0D\u5E26\u5355\u4F4D\u5C31\u662F\u79D2\uFF0C\u9ED8\u8BA4\u65E0\u5EF6\u8FDF
    [duration:]JFR \u8BB0\u5F55\u6301\u7EED\u65F6\u95F4\uFF0C\u652F\u6301\u5355\u4F4D\u914D\u7F6E\uFF0C\u4E0D\u5E26\u5355\u4F4D\u5C31\u662F\u79D2\uFF0C\u9ED8\u8BA4\u4E00\u76F4\u8BB0\u5F55
    [s:]\u91C7\u96C6 Event \u7684\u8BE6\u7EC6\u914D\u7F6E\u6587\u4EF6\uFF0C\u9ED8\u8BA4\u662F default.jfc \u4F4D\u4E8E $JAVA_HOME/lib/jfr/default.jfc
    [f:]\u5C06\u8F93\u51FA\u8F6C\u50A8\u5230\u6307\u5B9A\u8DEF\u5F84
    [maxage:]\u7F13\u51B2\u533A\u6570\u636E\u6700\u5927\u6587\u4EF6\u8BB0\u5F55\u4FDD\u5B58\u65F6\u95F4\uFF0C\u652F\u6301\u5355\u4F4D\u914D\u7F6E\uFF0C\u4E0D\u5E26\u5355\u4F4D\u5C31\u662F\u79D2\uFF0C\u9ED8\u8BA4\u662F\u4E0D\u9650\u5236
    [maxsize:]\u7F13\u51B2\u533A\u7684\u6700\u5927\u6587\u4EF6\u5927\u5C0F\uFF0C\u652F\u6301\u5355\u4F4D\u914D\u7F6E\uFF0C \u4E0D\u5E26\u5355\u4F4D\u662F\u5B57\u8282\uFF0Cm \u6216\u8005 M \u4EE3\u8868 MB\uFF0Cg \u6216\u8005 G \u4EE3\u8868 GB\u3002
    [state:]jfr \u8BB0\u5F55\u72B6\u6001

    \u542F\u52A8 JFR \u8BB0\u5F55

    $ jfr start
    +Started recording 1. No limit specified, using maxsize=250MB as default.
    +

    \u63D0\u793A

    \u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u5F00\u542F\u7684\u662F\u9ED8\u8BA4\u53C2\u6570\u7684 jfr \u8BB0\u5F55

    \u542F\u52A8 jfr \u8BB0\u5F55\uFF0C\u6307\u5B9A\u8BB0\u5F55\u540D\uFF0C\u8BB0\u5F55\u6301\u7EED\u65F6\u95F4\uFF0C\u8BB0\u5F55\u6587\u4EF6\u4FDD\u5B58\u8DEF\u5F84\u3002

    $ jfr start -n myRecording --duration 60s -f /tmp/myRecording.jfr
    +Started recording 2. The result will be written to:
    +/tmp/myRecording.jfr
    +

    \u67E5\u770B JFR \u8BB0\u5F55\u72B6\u6001

    \u9ED8\u8BA4\u662F\u67E5\u770B\u6240\u6709 JFR \u8BB0\u5F55\u4FE1\u606F

    $ jfr status
    +Recording: recording=1 name=Recording-1 (running)
    +Recording: recording=2 name=myRecording duration=PT1M (closed)
    +

    \u67E5\u770B\u6307\u5B9A\u8BB0\u5F55 id \u7684\u8BB0\u5F55\u4FE1\u606F

    $ jfr status -r 1
    +Recording: recording=1 name=Recording-1 (running)
    +

    \u67E5\u770B\u6307\u5B9A\u72B6\u6001\u7684\u8BB0\u5F55\u4FE1\u606F

    $ jfr status --state closed
    +Recording: recording=2 name=myRecording duration=PT1M (closed)
    +

    dump jfr \u8BB0\u5F55

    `,19),b=e("code",null,"jfr dump",-1),f=e("code",null,"jfr",-1),x=e("br",null,null,-1),_=t(" \u6307\u5B9A\u8BB0\u5F55\u8F93\u51FA\u8DEF\u5F84"),k=r(`
    $ jfr dump -r 1 -f /tmp/myRecording1.jfr
    +Dump recording 1, The result will be written to:
    +/tmp/myRecording1.jfr
    +

    \u4E0D\u6307\u5B9A\u6587\u4EF6\u8F93\u51FA\u8DEF\u5F84\uFF0C\u9ED8\u8BA4\u662F\u4FDD\u5B58\u5230arthas-output\u76EE\u5F55\u4E0B

    $ jfr dump -r 1
    +Dump recording 1, The result will be written to:
    +/tmp/test/arthas-output/20220819-200915.jfr
    +

    \u505C\u6B62 jfr \u8BB0\u5F55

    \u4E0D\u6307\u5B9A\u8BB0\u5F55\u8F93\u51FA\u8DEF\u5F84\uFF0C\u9ED8\u8BA4\u662F\u4FDD\u5B58\u5230arthas-output\u76EE\u5F55\u4E0B

    $ jfr stop -r 1
    +Stop recording 1, The result will be written to:
    +/tmp/test/arthas-output/20220819-202049.jfr
    +

    \u6CE8\u610F\u4E00\u6761\u8BB0\u5F55\u53EA\u80FD\u505C\u6B62\u4E00\u6B21\u3002

    \u4E5F\u53EF\u4EE5\u6307\u5B9A\u8BB0\u5F55\u8F93\u51FA\u8DEF\u5F84\u3002

    \u901A\u8FC7\u6D4F\u89C8\u5668\u67E5\u770B arthas-output \u4E0B\u9762 JFR \u8BB0\u5F55\u7684\u7ED3\u679C

    `,9),j=t("\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0Carthas \u4F7F\u7528 8563 \u7AEF\u53E3\uFF0C\u5219\u53EF\u4EE5\u6253\u5F00\uFF1A "),y={href:"http://localhost:8563/arthas-output/",target:"_blank",rel:"noopener noreferrer"},R=t("http://localhost:8563/arthas-output/"),J=t(" \u67E5\u770B\u5230"),F=e("code",null,"arthas-output",-1),M=t("\u76EE\u5F55\u4E0B\u9762\u7684 JFR \u8BB0\u5F55\u7ED3\u679C\uFF1A"),$=e("p",null,[e("img",{src:l,alt:""})],-1),w=e("p",null,"\u751F\u6210\u7684\u7ED3\u679C\u53EF\u4EE5\u7528\u652F\u6301 jfr \u683C\u5F0F\u7684\u5DE5\u5177\u6765\u67E5\u770B\u3002\u6BD4\u5982\uFF1A",-1),T=e("ul",null,[e("li",null,"JDK Mission Control \uFF1A https://github.com/openjdk/jmc")],-1);function V(B,D){const a=c("ExternalLinkIcon");return d(),o("div",null,[u,e("p",null,[e("a",h,[m,g,s(a)])]),v,e("p",null,[b,t(n()+" \u4F1A\u8F93\u51FA\u4ECE\u5F00\u59CB\u5230\u8FD0\u884C\u8BE5\u547D\u4EE4\u8FD9\u6BB5\u65F6\u95F4\u5185\u7684\u8BB0\u5F55\u5230 JFR \u6587\u4EF6\uFF0C\u4E14\u4E0D\u4F1A\u505C\u6B62 ",1),f,t(n()+" \u7684\u8BB0\u5F55",1),x,_]),k,e("p",null,[j,e("a",y,[R,s(a)]),J,F,M]),$,w,T])}const S=i(p,[["render",V],["__file","jfr.html.vue"]]);export{S as default}; diff --git a/3.x/assets/jfr.html.e858c4d3.js b/3.x/assets/jfr.html.e858c4d3.js new file mode 100644 index 00000000000..7c225f4334c --- /dev/null +++ b/3.x/assets/jfr.html.e858c4d3.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-41806853","path":"/doc/jfr.html","title":"jfr","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u542F\u52A8 JFR \u8BB0\u5F55","slug":"\u542F\u52A8-jfr-\u8BB0\u5F55","link":"#\u542F\u52A8-jfr-\u8BB0\u5F55","children":[]},{"level":2,"title":"\u67E5\u770B JFR \u8BB0\u5F55\u72B6\u6001","slug":"\u67E5\u770B-jfr-\u8BB0\u5F55\u72B6\u6001","link":"#\u67E5\u770B-jfr-\u8BB0\u5F55\u72B6\u6001","children":[]},{"level":2,"title":"dump jfr \u8BB0\u5F55","slug":"dump-jfr-\u8BB0\u5F55","link":"#dump-jfr-\u8BB0\u5F55","children":[]},{"level":2,"title":"\u505C\u6B62 jfr \u8BB0\u5F55","slug":"\u505C\u6B62-jfr-\u8BB0\u5F55","link":"#\u505C\u6B62-jfr-\u8BB0\u5F55","children":[]},{"level":2,"title":"\u901A\u8FC7\u6D4F\u89C8\u5668\u67E5\u770B arthas-output \u4E0B\u9762 JFR \u8BB0\u5F55\u7684\u7ED3\u679C","slug":"\u901A\u8FC7\u6D4F\u89C8\u5668\u67E5\u770B-arthas-output-\u4E0B\u9762-jfr-\u8BB0\u5F55\u7684\u7ED3\u679C","link":"#\u901A\u8FC7\u6D4F\u89C8\u5668\u67E5\u770B-arthas-output-\u4E0B\u9762-jfr-\u8BB0\u5F55\u7684\u7ED3\u679C","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"longxu0509","email":"108991596+longxu0509@users.noreply.github.com","commits":1}]},"filePathRelative":"doc/jfr.md","version":"3.7.3"}');export{l as data}; diff --git a/3.x/assets/jvm.html.4efee18b.js b/3.x/assets/jvm.html.4efee18b.js new file mode 100644 index 00000000000..f94171472de --- /dev/null +++ b/3.x/assets/jvm.html.4efee18b.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-f28c1148","path":"/en/doc/jvm.html","title":"jvm","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]},{"level":2,"title":"Thread related","slug":"thread-related","link":"#thread-related","children":[]},{"level":2,"title":"File descriptor related","slug":"file-descriptor-related","link":"#file-descriptor-related","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/jvm.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/jvm.html.5fd9778c.js b/3.x/assets/jvm.html.5fd9778c.js new file mode 100644 index 00000000000..71ba41dcb40 --- /dev/null +++ b/3.x/assets/jvm.html.5fd9778c.js @@ -0,0 +1,100 @@ +import{_ as s,o as l,c as a,a as e,b as d,e as i,d as r,r as v}from"./app.4d248835.js";const c={},m=e("h1",{id:"jvm",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#jvm","aria-hidden":"true"},"#"),i(" jvm")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-jvm",target:"_blank",rel:"noopener noreferrer"},t=e("code",null,"jvm",-1),b=i(" online tutorial"),o=r(`

    TIP

    Check the current JVM's info

    Usage

    $ jvm
    +RUNTIME
    +--------------------------------------------------------------------------------------------------------------
    + MACHINE-NAME                   37@ff267334bb65
    + JVM-START-TIME                 2020-07-23 07:50:36
    + MANAGEMENT-SPEC-VERSION        1.2
    + SPEC-NAME                      Java Virtual Machine Specification
    + SPEC-VENDOR                    Oracle Corporation
    + SPEC-VERSION                   1.8
    + VM-NAME                        Java HotSpot(TM) 64-Bit Server VM
    + VM-VENDOR                      Oracle Corporation
    + VM-VERSION                     25.201-b09
    + INPUT-ARGUMENTS                []
    + CLASS-PATH                     demo-arthas-spring-boot.jar
    + BOOT-CLASS-PATH                /usr/lib/jvm/java-8-oracle/jre/lib/resources.jar:/usr/lib/jvm/java-8-oracle/j
    +                                re/lib/rt.jar:/usr/lib/jvm/java-8-oracle/jre/lib/sunrsasign.jar:/usr/lib/jvm/
    +                                java-8-oracle/jre/lib/jsse.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jce.jar:/us
    +                                r/lib/jvm/java-8-oracle/jre/lib/charsets.jar:/usr/lib/jvm/java-8-oracle/jre/l
    +                                ib/jfr.jar:/usr/lib/jvm/java-8-oracle/jre/classes
    + LIBRARY-PATH                   /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
    +
    +--------------------------------------------------------------------------------------------------------------
    + CLASS-LOADING
    +--------------------------------------------------------------------------------------------------------------
    + LOADED-CLASS-COUNT             7529
    + TOTAL-LOADED-CLASS-COUNT       7529
    + UNLOADED-CLASS-COUNT           0
    + IS-VERBOSE                     false
    +
    +--------------------------------------------------------------------------------------------------------------
    + COMPILATION
    +--------------------------------------------------------------------------------------------------------------
    + NAME                           HotSpot 64-Bit Tiered Compilers
    + TOTAL-COMPILE-TIME             14921(ms)
    +
    +--------------------------------------------------------------------------------------------------------------
    + GARBAGE-COLLECTORS
    +--------------------------------------------------------------------------------------------------------------
    + PS Scavenge                            name : PS Scavenge
    + [count/time (ms)]                      collectionCount : 7
    +                                        collectionTime : 68
    +
    + PS MarkSweep                           name : PS MarkSweep
    + [count/time (ms)]                      collectionCount : 1
    +                                        collectionTime : 47
    +
    +--------------------------------------------------------------------------------------------------------------
    + MEMORY-MANAGERS
    +--------------------------------------------------------------------------------------------------------------
    + CodeCacheManager               Code Cache
    +
    + Metaspace Manager              Metaspace
    +                                Compressed Class Space
    +
    + Copy                           Eden Space
    +                                Survivor Space
    +
    + MarkSweepCompact               Eden Space
    +                                Survivor Space
    +                                Tenured Gen
    +
    +
    +--------------------------------------------------------------------------------------------------------------
    + MEMORY
    +--------------------------------------------------------------------------------------------------------------
    + HEAP-MEMORY-USAGE                      init : 268435456(256.0 MiB)
    + [memory in bytes]                      used : 18039504(17.2 MiB)
    +                                        committed : 181403648(173.0 MiB)
    +                                        max : 3817865216(3.6 GiB)
    +
    + NO-HEAP-MEMORY-USAGE                   init : 2555904(2.4 MiB)
    + [memory in bytes]                      used : 33926216(32.4 MiB)
    +                                        committed : 35176448(33.5 MiB)
    +                                        max : -1(-1 B)
    +
    +--------------------------------------------------------------------------------------------------------------
    + OPERATING-SYSTEM
    +--------------------------------------------------------------------------------------------------------------
    + OS                             Linux
    + ARCH                           amd64
    + PROCESSORS-COUNT               3
    + LOAD-AVERAGE                   29.53
    + VERSION                        4.15.0-52-generic
    +
    +--------------------------------------------------------------------------------------------------------------
    + THREAD
    +--------------------------------------------------------------------------------------------------------------
    + COUNT                          30
    + DAEMON-COUNT                   24
    + PEAK-COUNT                     31
    + STARTED-COUNT                  36
    + DEADLOCK-COUNT                 0
    +
    +--------------------------------------------------------------------------------------------------------------
    + FILE-DESCRIPTOR
    +--------------------------------------------------------------------------------------------------------------
    + MAX-FILE-DESCRIPTOR-COUNT      1048576
    + OPEN-FILE-DESCRIPTOR-COUNT     100
    +Affect(row-cnt:0) cost in 88 ms.
    +
    • COUNT: the count of active threads
    • DAEMON-COUNT: the count of active daemon threads
    • PEAK-COUNT: the maximum count of the live threads since JVM starts
    • STARTED-COUNT: the total count of the created threads since JVM starts
    • DEADLOCK-COUNT: the count of deadlocked threads
    • MAX-FILE-DESCRIPTOR-COUNT\uFF1Athe count of max file descriptor JVM process can open
    • OPEN-FILE-DESCRIPTOR-COUNT\uFF1Athe current count of file descriptor JVM process open
    `,7);function E(S,h){const n=v("ExternalLinkIcon");return l(),a("div",null,[m,e("p",null,[e("a",u,[t,b,d(n)])]),o])}const C=s(c,[["render",E],["__file","jvm.html.vue"]]);export{C as default}; diff --git a/3.x/assets/jvm.html.a00151a5.js b/3.x/assets/jvm.html.a00151a5.js new file mode 100644 index 00000000000..c300d511115 --- /dev/null +++ b/3.x/assets/jvm.html.a00151a5.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-f1483d70","path":"/doc/jvm.html","title":"jvm","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]},{"level":2,"title":"THREAD \u76F8\u5173","slug":"thread-\u76F8\u5173","link":"#thread-\u76F8\u5173","children":[]},{"level":2,"title":"\u6587\u4EF6\u63CF\u8FF0\u7B26\u76F8\u5173","slug":"\u6587\u4EF6\u63CF\u8FF0\u7B26\u76F8\u5173","link":"#\u6587\u4EF6\u63CF\u8FF0\u7B26\u76F8\u5173","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/jvm.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/jvm.html.b5bfa365.js b/3.x/assets/jvm.html.b5bfa365.js new file mode 100644 index 00000000000..7a6e4ef12bf --- /dev/null +++ b/3.x/assets/jvm.html.b5bfa365.js @@ -0,0 +1,100 @@ +import{_ as l,o as s,c as d,a as i,b as a,e as n,d as v,r}from"./app.4d248835.js";const c={},m=i("h1",{id:"jvm",tabindex:"-1"},[i("a",{class:"header-anchor",href:"#jvm","aria-hidden":"true"},"#"),n(" jvm")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-jvm",target:"_blank",rel:"noopener noreferrer"},b=i("code",null,"jvm",-1),t=n("\u5728\u7EBF\u6559\u7A0B"),o=v(`

    \u63D0\u793A

    \u67E5\u770B\u5F53\u524D JVM \u4FE1\u606F

    \u4F7F\u7528\u53C2\u8003

    $ jvm
    +RUNTIME
    +--------------------------------------------------------------------------------------------------------------
    + MACHINE-NAME                   37@ff267334bb65
    + JVM-START-TIME                 2020-07-23 07:50:36
    + MANAGEMENT-SPEC-VERSION        1.2
    + SPEC-NAME                      Java Virtual Machine Specification
    + SPEC-VENDOR                    Oracle Corporation
    + SPEC-VERSION                   1.8
    + VM-NAME                        Java HotSpot(TM) 64-Bit Server VM
    + VM-VENDOR                      Oracle Corporation
    + VM-VERSION                     25.201-b09
    + INPUT-ARGUMENTS                []
    + CLASS-PATH                     demo-arthas-spring-boot.jar
    + BOOT-CLASS-PATH                /usr/lib/jvm/java-8-oracle/jre/lib/resources.jar:/usr/lib/jvm/java-8-oracle/j
    +                                re/lib/rt.jar:/usr/lib/jvm/java-8-oracle/jre/lib/sunrsasign.jar:/usr/lib/jvm/
    +                                java-8-oracle/jre/lib/jsse.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jce.jar:/us
    +                                r/lib/jvm/java-8-oracle/jre/lib/charsets.jar:/usr/lib/jvm/java-8-oracle/jre/l
    +                                ib/jfr.jar:/usr/lib/jvm/java-8-oracle/jre/classes
    + LIBRARY-PATH                   /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
    +
    +--------------------------------------------------------------------------------------------------------------
    + CLASS-LOADING
    +--------------------------------------------------------------------------------------------------------------
    + LOADED-CLASS-COUNT             7529
    + TOTAL-LOADED-CLASS-COUNT       7529
    + UNLOADED-CLASS-COUNT           0
    + IS-VERBOSE                     false
    +
    +--------------------------------------------------------------------------------------------------------------
    + COMPILATION
    +--------------------------------------------------------------------------------------------------------------
    + NAME                           HotSpot 64-Bit Tiered Compilers
    + TOTAL-COMPILE-TIME             14921(ms)
    +
    +--------------------------------------------------------------------------------------------------------------
    + GARBAGE-COLLECTORS
    +--------------------------------------------------------------------------------------------------------------
    + PS Scavenge                            name : PS Scavenge
    + [count/time (ms)]                      collectionCount : 7
    +                                        collectionTime : 68
    +
    + PS MarkSweep                           name : PS MarkSweep
    + [count/time (ms)]                      collectionCount : 1
    +                                        collectionTime : 47
    +
    +--------------------------------------------------------------------------------------------------------------
    + MEMORY-MANAGERS
    +--------------------------------------------------------------------------------------------------------------
    + CodeCacheManager               Code Cache
    +
    + Metaspace Manager              Metaspace
    +                                Compressed Class Space
    +
    + Copy                           Eden Space
    +                                Survivor Space
    +
    + MarkSweepCompact               Eden Space
    +                                Survivor Space
    +                                Tenured Gen
    +
    +
    +--------------------------------------------------------------------------------------------------------------
    + MEMORY
    +--------------------------------------------------------------------------------------------------------------
    + HEAP-MEMORY-USAGE                      init : 268435456(256.0 MiB)
    + [memory in bytes]                      used : 18039504(17.2 MiB)
    +                                        committed : 181403648(173.0 MiB)
    +                                        max : 3817865216(3.6 GiB)
    +
    + NO-HEAP-MEMORY-USAGE                   init : 2555904(2.4 MiB)
    + [memory in bytes]                      used : 33926216(32.4 MiB)
    +                                        committed : 35176448(33.5 MiB)
    +                                        max : -1(-1 B)
    +
    +--------------------------------------------------------------------------------------------------------------
    + OPERATING-SYSTEM
    +--------------------------------------------------------------------------------------------------------------
    + OS                             Linux
    + ARCH                           amd64
    + PROCESSORS-COUNT               3
    + LOAD-AVERAGE                   29.53
    + VERSION                        4.15.0-52-generic
    +
    +--------------------------------------------------------------------------------------------------------------
    + THREAD
    +--------------------------------------------------------------------------------------------------------------
    + COUNT                          30
    + DAEMON-COUNT                   24
    + PEAK-COUNT                     31
    + STARTED-COUNT                  36
    + DEADLOCK-COUNT                 0
    +
    +--------------------------------------------------------------------------------------------------------------
    + FILE-DESCRIPTOR
    +--------------------------------------------------------------------------------------------------------------
    + MAX-FILE-DESCRIPTOR-COUNT      1048576
    + OPEN-FILE-DESCRIPTOR-COUNT     100
    +Affect(row-cnt:0) cost in 88 ms.
    +

    THREAD \u76F8\u5173

    • COUNT: JVM \u5F53\u524D\u6D3B\u8DC3\u7684\u7EBF\u7A0B\u6570
    • DAEMON-COUNT: JVM \u5F53\u524D\u6D3B\u8DC3\u7684\u5B88\u62A4\u7EBF\u7A0B\u6570
    • PEAK-COUNT: \u4ECE JVM \u542F\u52A8\u5F00\u59CB\u66FE\u7ECF\u6D3B\u7740\u7684\u6700\u5927\u7EBF\u7A0B\u6570
    • STARTED-COUNT: \u4ECE JVM \u542F\u52A8\u5F00\u59CB\u603B\u5171\u542F\u52A8\u8FC7\u7684\u7EBF\u7A0B\u6B21\u6570
    • DEADLOCK-COUNT: JVM \u5F53\u524D\u6B7B\u9501\u7684\u7EBF\u7A0B\u6570

    \u6587\u4EF6\u63CF\u8FF0\u7B26\u76F8\u5173

    • MAX-FILE-DESCRIPTOR-COUNT\uFF1AJVM \u8FDB\u7A0B\u6700\u5927\u53EF\u4EE5\u6253\u5F00\u7684\u6587\u4EF6\u63CF\u8FF0\u7B26\u6570
    • OPEN-FILE-DESCRIPTOR-COUNT\uFF1AJVM \u5F53\u524D\u6253\u5F00\u7684\u6587\u4EF6\u63CF\u8FF0\u7B26\u6570
    `,7);function E(S,O){const e=r("ExternalLinkIcon");return s(),d("div",null,[m,i("p",null,[i("a",u,[b,t,a(e)])]),o])}const M=l(c,[["render",E],["__file","jvm.html.vue"]]);export{M as default}; diff --git a/3.x/assets/keymap.html.35ecd977.js b/3.x/assets/keymap.html.35ecd977.js new file mode 100644 index 00000000000..925b974f3d4 --- /dev/null +++ b/3.x/assets/keymap.html.35ecd977.js @@ -0,0 +1,20 @@ +import{_ as o,o as r,c,a as t,b as a,e,d as n,r as i}from"./app.4d248835.js";const l={},u=t("h1",{id:"keymap",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#keymap","aria-hidden":"true"},"#"),e(" keymap")],-1),s={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-keymap",target:"_blank",rel:"noopener noreferrer"},h=t("code",null,"keymap",-1),m=e(" online tutorial"),q=n(`

    Use keymap command to print the current keymap:

    The default keymap is:

    ShortcutShortcut DescriptionCommand NameCommand Description
    "\\C-a"ctrl + abeginning-of-linego to the beginning of the line
    "\\C-e"ctrl + eend-of-linego to the end of the line
    "\\C-f"ctrl + fforward-wordforward a word
    "\\C-b"ctrl + bbackward-wordbackward a word
    "\\e[D"left arrowbackward-charbackward a character
    "\\e[C"right arrowforward-charforward a character
    "\\e[B"down arrownext-historyshow next history command
    "\\e[A"up arrowprevious-historyshow previous history command
    "\\C-h"ctrl + hbackward-delete-charbackward delete a character
    "\\C-?"ctrl + shift + /backward-delete-charbackward delete a character
    "\\C-u"ctrl + uundoclear current line
    "\\C-d"ctrl + ddelete-chardelete the character of the current cursor
    "\\C-k"ctrl + kkill-linedelete all characters from the current cursor to the end of the line
    "\\C-i"ctrl + icompleteAuto completion, equivalent to TAB
    "\\C-j"ctrl + jaccept-lineend the current line, equivalent to enter
    "\\C-m"ctrl + maccept-lineend the current line, equivalent to enter
    "\\C-w"backward-delete-word
    "\\C-x\\e[3~"backward-kill-line
    "\\e\\C-?"backward-kill-word
    • Press tab to enable auto-completion prompt at any time.
    • Enter command and - or --, then press tab to display the concrete options for the current command.

    Custom shortcuts

    Specify customization in $USER_HOME/.arthas/conf/inputrc file in the current user home directory.

    Vim user may want to map ctrl+h to moving the cursor forward one character. To achieve this, copy the default configuration first,

    "\\C-a": beginning-of-line
    +"\\C-e": end-of-line
    +"\\C-f": forward-word
    +"\\C-b": backward-word
    +"\\e[D": backward-char
    +"\\e[C": forward-char
    +"\\e[B": next-history
    +"\\e[A": previous-history
    +"\\C-h": backward-delete-char
    +"\\C-?": backward-delete-char
    +"\\C-u": undo
    +"\\C-d": delete-char
    +"\\C-k": kill-line
    +"\\C-i": complete
    +"\\C-j": accept-line
    +"\\C-m": accept-line
    +"\\C-w": backward-delete-word
    +"\\C-x\\e[3~": backward-kill-line
    +"\\e\\C-?": backward-kill-word
    +

    then replace "\\C-h": backward-delete-char with "\\C-h": backward-char, then reconnect to Arthas console to take effect.

    Shortcuts for jobs

    • ctrl + c: Terminates current command
    • ctrl + z: Suspends the current command, you can restore this command with bg/fg, or kill it.
    • ctrl + a: Go to the beginning the line
    • ctrl + e: Go to the end of the line
    `,11);function b(p,v){const d=i("ExternalLinkIcon");return r(),c("div",null,[u,t("p",null,[t("a",s,[h,m,a(d)])]),q])}const f=o(l,[["render",b],["__file","keymap.html.vue"]]);export{f as default}; diff --git a/3.x/assets/keymap.html.6e72672f.js b/3.x/assets/keymap.html.6e72672f.js new file mode 100644 index 00000000000..4515f3682b6 --- /dev/null +++ b/3.x/assets/keymap.html.6e72672f.js @@ -0,0 +1,20 @@ +import{_ as o,o as r,c,a as t,b as a,e as d,d as l,r as i}from"./app.4d248835.js";const n={},u=t("h1",{id:"keymap",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#keymap","aria-hidden":"true"},"#"),d(" keymap")],-1),s={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-keymap",target:"_blank",rel:"noopener noreferrer"},q=t("code",null,"keymap",-1),h=d("\u5728\u7EBF\u6559\u7A0B"),b=l(`

    keymap\u547D\u4EE4\u8F93\u51FA\u5F53\u524D\u7684\u5FEB\u6377\u952E\u6620\u5C04\u8868\uFF1A

    \u9ED8\u8BA4\u7684\u5FEB\u6377\u952E\u5982\u4E0B\uFF1A

    \u5FEB\u6377\u952E\u5FEB\u6377\u952E\u8BF4\u660E\u547D\u4EE4\u540D\u79F0\u547D\u4EE4\u8BF4\u660E
    "\\C-a"ctrl + abeginning-of-line\u8DF3\u5230\u884C\u9996
    "\\C-e"ctrl + eend-of-line\u8DF3\u5230\u884C\u5C3E
    "\\C-f"ctrl + fforward-word\u5411\u524D\u79FB\u52A8\u4E00\u4E2A\u5355\u8BCD
    "\\C-b"ctrl + bbackward-word\u5411\u540E\u79FB\u52A8\u4E00\u4E2A\u5355\u8BCD
    "\\e[D"\u952E\u76D8\u5DE6\u65B9\u5411\u952Ebackward-char\u5149\u6807\u5411\u524D\u79FB\u52A8\u4E00\u4E2A\u5B57\u7B26
    "\\e[C"\u952E\u76D8\u53F3\u65B9\u5411\u952Eforward-char\u5149\u6807\u5411\u540E\u79FB\u52A8\u4E00\u4E2A\u5B57\u7B26
    "\\e[B"\u952E\u76D8\u4E0B\u65B9\u5411\u952Enext-history\u4E0B\u7FFB\u663E\u793A\u4E0B\u4E00\u4E2A\u547D\u4EE4
    "\\e[A"\u952E\u76D8\u4E0A\u65B9\u5411\u952Eprevious-history\u4E0A\u7FFB\u663E\u793A\u4E0A\u4E00\u4E2A\u547D\u4EE4
    "\\C-h"ctrl + hbackward-delete-char\u5411\u540E\u5220\u9664\u4E00\u4E2A\u5B57\u7B26
    "\\C-?"ctrl + shift + /backward-delete-char\u5411\u540E\u5220\u9664\u4E00\u4E2A\u5B57\u7B26
    "\\C-u"ctrl + uundo\u64A4\u9500\u4E0A\u4E00\u4E2A\u547D\u4EE4\uFF0C\u76F8\u5F53\u4E8E\u6E05\u7A7A\u5F53\u524D\u884C
    "\\C-d"ctrl + ddelete-char\u5220\u9664\u5F53\u524D\u5149\u6807\u6240\u5728\u5B57\u7B26
    "\\C-k"ctrl + kkill-line\u5220\u9664\u5F53\u524D\u5149\u6807\u5230\u884C\u5C3E\u7684\u6240\u6709\u5B57\u7B26
    "\\C-i"ctrl + icomplete\u81EA\u52A8\u8865\u5168\uFF0C\u76F8\u5F53\u4E8E\u6572TAB
    "\\C-j"ctrl + jaccept-line\u7ED3\u675F\u5F53\u524D\u884C\uFF0C\u76F8\u5F53\u4E8E\u6572\u56DE\u8F66
    "\\C-m"ctrl + maccept-line\u7ED3\u675F\u5F53\u524D\u884C\uFF0C\u76F8\u5F53\u4E8E\u6572\u56DE\u8F66
    "\\C-w"backward-delete-word
    "\\C-x\\e[3~"backward-kill-line
    "\\e\\C-?"backward-kill-word
    • \u4EFB\u4F55\u65F6\u5019 tab \u952E\uFF0C\u4F1A\u6839\u636E\u5F53\u524D\u7684\u8F93\u5165\u7ED9\u51FA\u63D0\u793A
    • \u547D\u4EE4\u540E\u6572 - \u6216 -- \uFF0C\u7136\u540E\u6309 tab \u952E\uFF0C\u53EF\u4EE5\u5C55\u793A\u51FA\u6B64\u547D\u4EE4\u5177\u4F53\u7684\u9009\u9879

    \u81EA\u5B9A\u4E49\u5FEB\u6377\u952E

    \u5728\u5F53\u524D\u7528\u6237\u76EE\u5F55\u4E0B\u65B0\u5EFA$USER_HOME/.arthas/conf/inputrc\u6587\u4EF6\uFF0C\u52A0\u5165\u81EA\u5B9A\u4E49\u914D\u7F6E\u3002

    \u5047\u8BBE\u6211\u662F vim \u7684\u91CD\u5EA6\u7528\u6237\uFF0C\u6211\u8981\u628Actrl+h\u8BBE\u7F6E\u4E3A\u5149\u6807\u5411\u524D\u4E00\u4E2A\u5B57\u7B26\uFF0C\u5219\u8BBE\u7F6E\u5982\u4E0B\uFF0C\u9996\u5148\u62F7\u8D1D\u9ED8\u8BA4\u914D\u7F6E

    "\\C-a": beginning-of-line
    +"\\C-e": end-of-line
    +"\\C-f": forward-word
    +"\\C-b": backward-word
    +"\\e[D": backward-char
    +"\\e[C": forward-char
    +"\\e[B": next-history
    +"\\e[A": previous-history
    +"\\C-h": backward-delete-char
    +"\\C-?": backward-delete-char
    +"\\C-u": undo
    +"\\C-d": delete-char
    +"\\C-k": kill-line
    +"\\C-i": complete
    +"\\C-j": accept-line
    +"\\C-m": accept-line
    +"\\C-w": backward-delete-word
    +"\\C-x\\e[3~": backward-kill-line
    +"\\e\\C-?": backward-kill-word
    +

    \u7136\u540E\u628A"\\C-h": backward-delete-char\u6362\u6210"\\C-h": backward-char\uFF0C\u7136\u540E\u91CD\u65B0\u8FDE\u63A5\u5373\u53EF\u3002

    \u540E\u53F0\u5F02\u6B65\u547D\u4EE4\u76F8\u5173\u5FEB\u6377\u952E

    • ctrl + c: \u7EC8\u6B62\u5F53\u524D\u547D\u4EE4
    • ctrl + z: \u6302\u8D77\u5F53\u524D\u547D\u4EE4\uFF0C\u540E\u7EED\u53EF\u4EE5 bg/fg \u91CD\u65B0\u652F\u6301\u6B64\u547D\u4EE4\uFF0C\u6216 kill \u6389
    • ctrl + a: \u56DE\u5230\u884C\u9996
    • ctrl + e: \u56DE\u5230\u884C\u5C3E
    `,11);function m(v,k){const e=i("ExternalLinkIcon");return r(),c("div",null,[u,t("p",null,[t("a",s,[q,h,a(e)])]),b])}const C=o(n,[["render",m],["__file","keymap.html.vue"]]);export{C as default}; diff --git a/3.x/assets/keymap.html.e3647cfd.js b/3.x/assets/keymap.html.e3647cfd.js new file mode 100644 index 00000000000..e7e50ac939c --- /dev/null +++ b/3.x/assets/keymap.html.e3647cfd.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-4039cdec","path":"/doc/keymap.html","title":"keymap","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u81EA\u5B9A\u4E49\u5FEB\u6377\u952E","slug":"\u81EA\u5B9A\u4E49\u5FEB\u6377\u952E","link":"#\u81EA\u5B9A\u4E49\u5FEB\u6377\u952E","children":[]},{"level":2,"title":"\u540E\u53F0\u5F02\u6B65\u547D\u4EE4\u76F8\u5173\u5FEB\u6377\u952E","slug":"\u540E\u53F0\u5F02\u6B65\u547D\u4EE4\u76F8\u5173\u5FEB\u6377\u952E","link":"#\u540E\u53F0\u5F02\u6B65\u547D\u4EE4\u76F8\u5173\u5FEB\u6377\u952E","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/keymap.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/keymap.html.e94a5d53.js b/3.x/assets/keymap.html.e94a5d53.js new file mode 100644 index 00000000000..8bba21e78dd --- /dev/null +++ b/3.x/assets/keymap.html.e94a5d53.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-b3b5e150","path":"/en/doc/keymap.html","title":"keymap","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Custom shortcuts","slug":"custom-shortcuts","link":"#custom-shortcuts","children":[]},{"level":2,"title":"Shortcuts for jobs","slug":"shortcuts-for-jobs","link":"#shortcuts-for-jobs","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/keymap.md","version":"3.7.3"}');export{t as data}; diff --git a/3.x/assets/logger.html.3230d5ce.js b/3.x/assets/logger.html.3230d5ce.js new file mode 100644 index 00000000000..05bfe642b87 --- /dev/null +++ b/3.x/assets/logger.html.3230d5ce.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-7e581f76","path":"/en/doc/logger.html","title":"logger","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"Print the logger information","slug":"print-the-logger-information","link":"#print-the-logger-information","children":[]},{"level":3,"title":"View logger information for the special name","slug":"view-logger-information-for-the-special-name","link":"#view-logger-information-for-the-special-name","children":[]},{"level":3,"title":"View logger information for the special classloader","slug":"view-logger-information-for-the-special-classloader","link":"#view-logger-information-for-the-special-classloader","children":[]},{"level":3,"title":"Update logger level","slug":"update-logger-level","link":"#update-logger-level","children":[]},{"level":3,"title":"Speecify classloader to update logger level","slug":"speecify-classloader-to-update-logger-level","link":"#speecify-classloader-to-update-logger-level","children":[]},{"level":3,"title":"View the logger information without appenders","slug":"view-the-logger-information-without-appenders","link":"#view-the-logger-information-without-appenders","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/logger.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/logger.html.7a983455.js b/3.x/assets/logger.html.7a983455.js new file mode 100644 index 00000000000..a1820c6f782 --- /dev/null +++ b/3.x/assets/logger.html.7a983455.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-5ae8aed9","path":"/doc/logger.html","title":"logger","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"\u67E5\u770B\u6240\u6709 logger \u4FE1\u606F","slug":"\u67E5\u770B\u6240\u6709-logger-\u4FE1\u606F","link":"#\u67E5\u770B\u6240\u6709-logger-\u4FE1\u606F","children":[]},{"level":3,"title":"\u67E5\u770B\u6307\u5B9A\u540D\u5B57\u7684 logger \u4FE1\u606F","slug":"\u67E5\u770B\u6307\u5B9A\u540D\u5B57\u7684-logger-\u4FE1\u606F","link":"#\u67E5\u770B\u6307\u5B9A\u540D\u5B57\u7684-logger-\u4FE1\u606F","children":[]},{"level":3,"title":"\u67E5\u770B\u6307\u5B9A classloader \u7684 logger \u4FE1\u606F","slug":"\u67E5\u770B\u6307\u5B9A-classloader-\u7684-logger-\u4FE1\u606F","link":"#\u67E5\u770B\u6307\u5B9A-classloader-\u7684-logger-\u4FE1\u606F","children":[]},{"level":3,"title":"\u66F4\u65B0 logger level","slug":"\u66F4\u65B0-logger-level","link":"#\u66F4\u65B0-logger-level","children":[]},{"level":3,"title":"\u6307\u5B9A classloader \u66F4\u65B0 logger level","slug":"\u6307\u5B9A-classloader-\u66F4\u65B0-logger-level","link":"#\u6307\u5B9A-classloader-\u66F4\u65B0-logger-level","children":[]},{"level":3,"title":"\u67E5\u770B\u6CA1\u6709 appender \u7684 logger \u7684\u4FE1\u606F","slug":"\u67E5\u770B\u6CA1\u6709-appender-\u7684-logger-\u7684\u4FE1\u606F","link":"#\u67E5\u770B\u6CA1\u6709-appender-\u7684-logger-\u7684\u4FE1\u606F","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/logger.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/logger.html.7de7427f.js b/3.x/assets/logger.html.7de7427f.js new file mode 100644 index 00000000000..be7e993b063 --- /dev/null +++ b/3.x/assets/logger.html.7de7427f.js @@ -0,0 +1,136 @@ +import{_ as e,o as l,c as t,a,b as c,e as s,d as i,r as o}from"./app.4d248835.js";const p={},r=a("h1",{id:"logger",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#logger","aria-hidden":"true"},"#"),s(" logger")],-1),d={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=en&id=command-logger",target:"_blank",rel:"noopener noreferrer"},u=a("code",null,"logger",-1),v=s(" online tutorial"),g=i(`

    TIP

    Print the logger information, update the logger level

    Usage

    Take the following logback.xml as an example:

    <?xml version="1.0" encoding="UTF-8"?>
    +<configuration>
    +    <appender name="APPLICATION" class="ch.qos.logback.core.rolling.RollingFileAppender">
    +        <file>app.log</file>
    +        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    +            <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
    +            <maxFileSize>100MB</maxFileSize>
    +            <maxHistory>60</maxHistory>
    +            <totalSizeCap>2GB</totalSizeCap>
    +        </rollingPolicy>
    +        <encoder>
    +            <pattern>%logger{35} - %msg%n</pattern>
    +        </encoder>
    +    </appender>
    +
    +    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
    +        <appender-ref ref="APPLICATION" />
    +    </appender>
    +
    +    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    +        <encoder>
    +            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n
    +            </pattern>
    +            <charset>utf8</charset>
    +        </encoder>
    +    </appender>
    +
    +    <root level="INFO">
    +        <appender-ref ref="CONSOLE" />
    +        <appender-ref ref="ASYNC" />
    +    </root>
    +</configuration>
    +

    The result of the logger command:

    [arthas@2062]$ logger
    + name                                   ROOT
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  INFO
    + effectiveLevel                         INFO
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    + appenders                              name            CONSOLE
    +                                        class           ch.qos.logback.core.ConsoleAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        target          System.out
    +                                        name            APPLICATION
    +                                        class           ch.qos.logback.core.rolling.RollingFileAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        file            app.log
    +                                        name            ASYNC
    +                                        class           ch.qos.logback.classic.AsyncAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        appenderRef     [APPLICATION]
    +

    In the appenders section:

    • The target of CONSOLE logger is System.out
    • APPLICATION logger is RollingFileAppender, the file is app.log
    • ASYNC its appenderRef is APPLICATION, which means asynchronous output to the file

    View logger information for the special name

    [arthas@2062]$ logger -n org.springframework.web
    + name                                   org.springframework.web
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  null
    + effectiveLevel                         INFO
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    +

    View logger information for the special classloader

    Note that the hashcode changes, you need to check the current ClassLoader information first, and extract the hashcode corresponding to the ClassLoader.

    if you use-c, you have to manually type hashcode by -c <hashcode>.

    [arthas@2062]$ logger -c 2a139a55
    + name                                   ROOT
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  DEBUG
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    + appenders                              name            CONSOLE
    +                                        class           ch.qos.logback.core.ConsoleAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        target          System.out
    +                                        name            APPLICATION
    +                                        class           ch.qos.logback.core.rolling.RollingFileAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        file            app.log
    +                                        name            ASYNC
    +                                        class           ch.qos.logback.classic.AsyncAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        appenderRef     [APPLICATION]
    +

    For classloader with only one instance, it can be specified by --classLoaderClass using class name, which is more convenient to use.

    logger --classLoaderClass sun.misc.Launcher$AppClassLoader

    • PS: Here the classLoaderClass in java 8 is sun.misc.Launcher$AppClassLoader, while in java 11 it's jdk.internal.loader.ClassLoaders$AppClassLoader.

    The value of --classloaderclass is the class name of classloader. It can only work when it matches a unique classloader instance. The purpose is to facilitate the input of general commands. However, -c <hashcode> is dynamic.

    Update logger level

    [arthas@2062]$ logger --name ROOT --level debug
    +update logger level success.
    +

    Speecify classloader to update logger level

    By default\uFF0Clogger command will be executed under SystemClassloader, if the application is a traditional war, or using spring boot fat jar, then it needs to specify classloader\u3002

    You can first use sc -d yourClassName to check specified classloader hashcode\uFF0Cthen specify classloader when updating logger level:

    [arthas@2062]$ logger -c 2a139a55 --name ROOT --level debug
    +

    View the logger information without appenders

    By default, the logger command only prints information about the logger with appenders. If you want to see information about loggers without appender, you can use the parameter --include-no-appender.

    Note that the output will usually be very long.

    [arthas@2062]$ logger --include-no-appender
    + name                                   ROOT
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  DEBUG
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    + appenders                              name            CONSOLE
    +                                        class           ch.qos.logback.core.ConsoleAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        target          System.out
    +                                        name            APPLICATION
    +                                        class           ch.qos.logback.core.rolling.RollingFileAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        file            app.log
    +                                        name            ASYNC
    +                                        class           ch.qos.logback.classic.AsyncAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        appenderRef     [APPLICATION]
    +
    + name                                   com
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  null
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    +
    + name                                   com.alibaba
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  null
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    +...
    +
    `,29);function k(m,b){const n=o("ExternalLinkIcon");return l(),t("div",null,[r,a("p",null,[a("a",d,[u,v,c(n)])]),g])}const f=e(p,[["render",k],["__file","logger.html.vue"]]);export{f as default}; diff --git a/3.x/assets/logger.html.cdea0f90.js b/3.x/assets/logger.html.cdea0f90.js new file mode 100644 index 00000000000..04cf77854cf --- /dev/null +++ b/3.x/assets/logger.html.cdea0f90.js @@ -0,0 +1,136 @@ +import{_ as e,o as l,c,a,b as t,e as s,d as o,r as p}from"./app.4d248835.js";const i={},r=a("h1",{id:"logger",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#logger","aria-hidden":"true"},"#"),s(" logger")],-1),d={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=cn&id=command-logger",target:"_blank",rel:"noopener noreferrer"},u=a("code",null,"logger",-1),v=s("\u5728\u7EBF\u6559\u7A0B"),g=o(`

    \u63D0\u793A

    \u67E5\u770B logger \u4FE1\u606F\uFF0C\u66F4\u65B0 logger level

    \u4F7F\u7528\u53C2\u8003

    \u67E5\u770B\u6240\u6709 logger \u4FE1\u606F

    \u4EE5\u4E0B\u9762\u7684logback.xml\u4E3A\u4F8B\uFF1A

    <?xml version="1.0" encoding="UTF-8"?>
    +<configuration>
    +    <appender name="APPLICATION" class="ch.qos.logback.core.rolling.RollingFileAppender">
    +        <file>app.log</file>
    +        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    +            <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
    +            <maxFileSize>100MB</maxFileSize>
    +            <maxHistory>60</maxHistory>
    +            <totalSizeCap>2GB</totalSizeCap>
    +        </rollingPolicy>
    +        <encoder>
    +            <pattern>%logger{35} - %msg%n</pattern>
    +        </encoder>
    +    </appender>
    +
    +    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
    +        <appender-ref ref="APPLICATION" />
    +    </appender>
    +
    +    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    +        <encoder>
    +            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n
    +            </pattern>
    +            <charset>utf8</charset>
    +        </encoder>
    +    </appender>
    +
    +    <root level="INFO">
    +        <appender-ref ref="CONSOLE" />
    +        <appender-ref ref="ASYNC" />
    +    </root>
    +</configuration>
    +

    \u4F7F\u7528logger\u547D\u4EE4\u6253\u5370\u7684\u7ED3\u679C\u662F\uFF1A

    [arthas@2062]$ logger
    + name                                   ROOT
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  INFO
    + effectiveLevel                         INFO
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    + appenders                              name            CONSOLE
    +                                        class           ch.qos.logback.core.ConsoleAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        target          System.out
    +                                        name            APPLICATION
    +                                        class           ch.qos.logback.core.rolling.RollingFileAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        file            app.log
    +                                        name            ASYNC
    +                                        class           ch.qos.logback.classic.AsyncAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        appenderRef     [APPLICATION]
    +

    \u4ECEappenders\u7684\u4FE1\u606F\u91CC\uFF0C\u53EF\u4EE5\u770B\u5230

    • CONSOLE logger \u7684 target \u662FSystem.out
    • APPLICATION logger \u662FRollingFileAppender\uFF0C\u5B83\u7684 file \u662Fapp.log
    • ASYNC\u5B83\u7684appenderRef\u662FAPPLICATION\uFF0C\u5373\u5F02\u6B65\u8F93\u51FA\u5230\u6587\u4EF6\u91CC

    \u67E5\u770B\u6307\u5B9A\u540D\u5B57\u7684 logger \u4FE1\u606F

    [arthas@2062]$ logger -n org.springframework.web
    + name                                   org.springframework.web
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  null
    + effectiveLevel                         INFO
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    +

    \u67E5\u770B\u6307\u5B9A classloader \u7684 logger \u4FE1\u606F

    \u6CE8\u610F hashcode \u662F\u53D8\u5316\u7684\uFF0C\u9700\u8981\u5148\u67E5\u770B\u5F53\u524D\u7684 ClassLoader \u4FE1\u606F\uFF0C\u63D0\u53D6\u5BF9\u5E94 ClassLoader \u7684 hashcode\u3002

    \u5982\u679C\u4F60\u4F7F\u7528-c\uFF0C\u4F60\u9700\u8981\u624B\u52A8\u8F93\u5165 hashcode\uFF1A-c <hashcode>

    [arthas@2062]$ logger -c 2a139a55
    + name                                   ROOT
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  DEBUG
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    + appenders                              name            CONSOLE
    +                                        class           ch.qos.logback.core.ConsoleAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        target          System.out
    +                                        name            APPLICATION
    +                                        class           ch.qos.logback.core.rolling.RollingFileAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        file            app.log
    +                                        name            ASYNC
    +                                        class           ch.qos.logback.classic.AsyncAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        appenderRef     [APPLICATION]
    +

    \u5BF9\u4E8E\u53EA\u6709\u552F\u4E00\u5B9E\u4F8B\u7684 ClassLoader \u53EF\u4EE5\u901A\u8FC7--classLoaderClass\u6307\u5B9A class name\uFF0C\u4F7F\u7528\u8D77\u6765\u66F4\u52A0\u65B9\u4FBF\uFF1A

    logger --classLoaderClass sun.misc.Launcher$AppClassLoader

    • \u6CE8: \u8FD9\u91CC classLoaderClass \u5728 java 8 \u662F sun.misc.Launcher$AppClassLoader\uFF0C\u800Cjava 11\u7684classloader\u662Fjdk.internal.loader.ClassLoaders$AppClassLoader\u3002

    --classLoaderClass \u7684\u503C\u662F ClassLoader \u7684\u7C7B\u540D\uFF0C\u53EA\u6709\u5339\u914D\u5230\u552F\u4E00\u7684 ClassLoader \u5B9E\u4F8B\u65F6\u624D\u80FD\u5DE5\u4F5C\uFF0C\u76EE\u7684\u662F\u65B9\u4FBF\u8F93\u5165\u901A\u7528\u547D\u4EE4\uFF0C\u800C-c <hashcode>\u662F\u52A8\u6001\u53D8\u5316\u7684\u3002

    \u66F4\u65B0 logger level

    [arthas@2062]$ logger --name ROOT --level debug
    +update logger level success.
    +

    \u6307\u5B9A classloader \u66F4\u65B0 logger level

    \u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0Clogger \u547D\u4EE4\u4F1A\u5728 SystemClassloader \u4E0B\u6267\u884C\uFF0C\u5982\u679C\u5E94\u7528\u662F\u4F20\u7EDF\u7684war\u5E94\u7528\uFF0C\u6216\u8005 spring boot fat jar \u542F\u52A8\u7684\u5E94\u7528\uFF0C\u90A3\u4E48\u9700\u8981\u6307\u5B9A classloader\u3002

    \u53EF\u4EE5\u5148\u7528 sc -d yourClassName \u6765\u67E5\u770B\u5177\u4F53\u7684 classloader hashcode\uFF0C\u7136\u540E\u5728\u66F4\u65B0 level \u65F6\u6307\u5B9A classloader\uFF1A

    [arthas@2062]$ logger -c 2a139a55 --name ROOT --level debug
    +

    \u67E5\u770B\u6CA1\u6709 appender \u7684 logger \u7684\u4FE1\u606F

    \u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0Clogger\u547D\u4EE4\u53EA\u6253\u5370\u6709 appender \u7684 logger \u7684\u4FE1\u606F\u3002\u5982\u679C\u60F3\u67E5\u770B\u6CA1\u6709appender\u7684 logger \u7684\u4FE1\u606F\uFF0C\u53EF\u4EE5\u52A0\u4E0A\u53C2\u6570--include-no-appender\u3002

    \u6CE8\u610F\uFF0C\u901A\u5E38\u8F93\u51FA\u7ED3\u679C\u4F1A\u5F88\u957F\u3002

    [arthas@2062]$ logger --include-no-appender
    + name                                   ROOT
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  DEBUG
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    + appenders                              name            CONSOLE
    +                                        class           ch.qos.logback.core.ConsoleAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        target          System.out
    +                                        name            APPLICATION
    +                                        class           ch.qos.logback.core.rolling.RollingFileAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        file            app.log
    +                                        name            ASYNC
    +                                        class           ch.qos.logback.classic.AsyncAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        appenderRef     [APPLICATION]
    +
    + name                                   com
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  null
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    +
    + name                                   com.alibaba
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  null
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    +...
    +
    `,29);function k(m,b){const n=p("ExternalLinkIcon");return l(),c("div",null,[r,a("p",null,[a("a",d,[u,v,t(n)])]),g])}const L=e(i,[["render",k],["__file","logger.html.vue"]]);export{L as default}; diff --git a/3.x/assets/manual-install.html.09d3b86a.js b/3.x/assets/manual-install.html.09d3b86a.js new file mode 100644 index 00000000000..bcc092348c9 --- /dev/null +++ b/3.x/assets/manual-install.html.09d3b86a.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-6a31cc55","path":"/doc/manual-install.html","title":"\u624B\u52A8\u5B89\u88C5 Arthas","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4EE5\u811A\u672C\u7684\u65B9\u5F0F\u542F\u52A8 as3.sh/as.bat","slug":"\u4EE5\u811A\u672C\u7684\u65B9\u5F0F\u542F\u52A8-as3-sh-as-bat","link":"#\u4EE5\u811A\u672C\u7684\u65B9\u5F0F\u542F\u52A8-as3-sh-as-bat","children":[{"level":3,"title":"Linux/Unix/Mac","slug":"linux-unix-mac","link":"#linux-unix-mac","children":[]},{"level":3,"title":"Windows","slug":"windows","link":"#windows","children":[]}]},{"level":2,"title":"\u624B\u52A8\u62FC\u63A5\u547D\u4EE4\u884C\u542F\u52A8","slug":"\u624B\u52A8\u62FC\u63A5\u547D\u4EE4\u884C\u542F\u52A8","link":"#\u624B\u52A8\u62FC\u63A5\u547D\u4EE4\u884C\u542F\u52A8","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/manual-install.md","version":"3.7.3"}');export{l as data}; diff --git a/3.x/assets/manual-install.html.42509750.js b/3.x/assets/manual-install.html.42509750.js new file mode 100644 index 00000000000..71dbebdc67f --- /dev/null +++ b/3.x/assets/manual-install.html.42509750.js @@ -0,0 +1 @@ +const a=JSON.parse('{"key":"v-bbaa3c7e","path":"/en/doc/manual-install.html","title":"Manually Install Arthas","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Startup with as3.sh/as.bat","slug":"startup-with-as3-sh-as-bat","link":"#startup-with-as3-sh-as-bat","children":[{"level":3,"title":"Linux/Unix/Mac","slug":"linux-unix-mac","link":"#linux-unix-mac","children":[]},{"level":3,"title":"Windows","slug":"windows","link":"#windows","children":[]}]},{"level":2,"title":"Manual command line startup","slug":"manual-command-line-startup","link":"#manual-command-line-startup","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/manual-install.md","version":"3.7.3"}');export{a as data}; diff --git a/3.x/assets/manual-install.html.aba050db.js b/3.x/assets/manual-install.html.aba050db.js new file mode 100644 index 00000000000..0f6f64885b0 --- /dev/null +++ b/3.x/assets/manual-install.html.aba050db.js @@ -0,0 +1,20 @@ +import{_ as o,o as i,c as r,a,b as n,e,d as t,r as l}from"./app.4d248835.js";const c={},d=a("h1",{id:"manually-install-arthas",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#manually-install-arthas","aria-hidden":"true"},"#"),e(" Manually Install Arthas")],-1),p=a("ol",null,[a("li",null,"Download the latest version")],-1),h=a("p",null,"Download from Github Releases",-1),u={href:"https://github.com/alibaba/arthas/releases",target:"_blank",rel:"noopener noreferrer"},m=e("https://github.com/alibaba/arthas/releases"),b=t(`
    1. Unzip zip file

      unzip arthas-packaging-bin.zip
      +
    2. Install Arthas

      It is recommended to completely remove all old versions of Arthas before installation.

      sudo su admin
      +rm -rf /home/admin/.arthas/lib/* # remove all the leftover of the old outdated Arthas
      +cd arthas
      +./install-local3.sh # switch the user based on the owner of the target Java process.
      +
    3. Start Arthas

      Make sure stop the old Arthas server before start.

      ./as3.sh
      +

    Startup with as3.sh/as.bat

    Linux/Unix/Mac

    You can install Arthas with one single line command on Linux, Unix, and Mac. Pls. copy the following command and paste it into the command line, then press Enter to run:

    curl -L https://arthas.aliyun.com/install3.sh | sh
    +

    The command above will download the bootstrap script as3.sh to the current directory. You can move it the any other place you want, or put its location in $PATH.

    You can enter its interactive interface by executing as3.sh, or execute as3.sh -h for more help information.

    Windows

    `,8),v=e("Latest Version, Click To Download: "),g={href:"https://arthas.aliyun.com/download/latest_version",target:"_blank",rel:"noopener noreferrer"},k=a("img",{src:"https://img.shields.io/maven-central/v/com.taobao.arthas/arthas-packaging.svg?style=flat-square",alt:"",title:"Arthas"},null,-1),f=t(`

    Download and unzip, then find as.bat from 'bin' directory. For now this script will only take one argument pid, which means you can only diagnose the local Java process. (Welcome any bat script expert to make it better \u2764\uFE0F)

    as.bat <pid>
    +

    If you want to diagnose Java process run as windows service, try these commands:

    as-service.bat -port <port>
    +as-service.bat -pid <pid>
    +as-service.bat -pid <pid> --interact
    +

    Use this command to remove arthas service:

    as-service.bat -remove
    +

    Manual command line startup

    If you fail to boot Arthas with the provided batch file, you could try to assemble the bootstrap command in the following way.

    1. Locate java in the target JVM:

      • Linux/Unix/Mac: ps aux | grep java
      • Windows: open the Process Monitor to search java
    2. Assemble bootstrap command:

      Let's suppose we are using /opt/jdk1.8/bin/java, then the command should be:

      /opt/jdk1.8/bin/java -Xbootclasspath/a:/opt/jdk1.8/lib/tools.jar \\
      +    -jar /tmp/arthas-packaging/arthas-core.jar \\
      +    -pid 15146 \\
      +    -target-ip 127.0.0.1 -telnet-port 3658 -http-port 8563 \\
      +    -core /tmp/arthas-packaging/arthas-core.jar \\
      +    -agent /tmp/arthas-packaging/arthas/arthas-agent.jar
      +

      Note:

      • -Xbootclasspath adds tools.jar
      • -jar /tmp/arthas-packaging/arthas-core.jar specifies main entry
      • -pid 15146 specifies the target java process PID
      • -target-ip 127.0.0.1 specifies the IP
      • -telnet-port 3658 -http-port 8563 specifies telnet and HTTP ports for remote access
      • -core /tmp/arthas-packaging/arthas-core.jar -agent /tmp/arthas-packaging/arthas/arthas-agent.jar specifies core/agent jar package

      If you are running on JDK 1.9 or above\uFF0Cthen it's unnecessary to add tools.jar in option -Xbootclasspath.

      You can find the logs from ~/logs/arthas/arthas.log.

    3. Use telnet to connect once attaching to the target JVM (in step 2) succeeds

      telnet 127.0.0.1 3658
      +
    `,9);function _(x,w){const s=l("ExternalLinkIcon");return i(),r("div",null,[d,p,h,a("p",null,[a("a",u,[m,n(s)])]),b,a("p",null,[v,a("a",g,[k,n(s)])]),f])}const j=o(c,[["render",_],["__file","manual-install.html.vue"]]);export{j as default}; diff --git a/3.x/assets/manual-install.html.d729afcd.js b/3.x/assets/manual-install.html.d729afcd.js new file mode 100644 index 00000000000..b60d6ffe004 --- /dev/null +++ b/3.x/assets/manual-install.html.d729afcd.js @@ -0,0 +1,20 @@ +import{_ as i,o as l,c as r,a,b as n,e,d as t,r as d}from"./app.4d248835.js";const c={},o=a("h1",{id:"\u624B\u52A8\u5B89\u88C5-arthas",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u624B\u52A8\u5B89\u88C5-arthas","aria-hidden":"true"},"#"),e(" \u624B\u52A8\u5B89\u88C5 Arthas")],-1),p=a("ol",null,[a("li",null,"\u4E0B\u8F7D\u6700\u65B0\u7248\u672C")],-1),h=a("p",null,"\u4ECE Github Releases \u9875\u4E0B\u8F7D",-1),u={href:"https://github.com/alibaba/arthas/releases",target:"_blank",rel:"noopener noreferrer"},v=e("https://github.com/alibaba/arthas/releases"),m=t(`
    1. \u89E3\u538B\u7F29 arthas \u7684\u538B\u7F29\u5305

      unzip arthas-packaging-bin.zip
      +
    2. \u5B89\u88C5 Arthas

      \u5B89\u88C5\u4E4B\u524D\u6700\u597D\u628A\u6240\u6709\u8001\u7248\u672C\u7684 Arthas \u5168\u90FD\u5220\u6389

      sudo su admin
      +rm -rf /home/admin/.arthas/lib/*
      +cd arthas
      +./install-local3.sh
      +

      \u6CE8\u610F

      \u6CE8\u610F\uFF0C\u8FD9\u91CC\u6839\u636E\u4F60\u9700\u8981\u8BCA\u65AD\u7684 Java \u8FDB\u7A0B\u7684\u6240\u5C5E\u7528\u6237\u8FDB\u884C\u5207\u6362

    3. \u542F\u52A8 Arthas

      \u542F\u52A8\u4E4B\u524D\uFF0C\u8BF7\u786E\u4FDD\u8001\u7248\u672C\u7684 Arthas \u5DF2\u7ECFstop.

      ./as3.sh
      +

    \u4EE5\u811A\u672C\u7684\u65B9\u5F0F\u542F\u52A8 as3.sh/as.bat

    Linux/Unix/Mac

    Arthas \u652F\u6301\u5728 Linux/Unix/Mac \u7B49\u5E73\u53F0\u4E0A\u4E00\u952E\u5B89\u88C5\uFF0C\u8BF7\u590D\u5236\u4EE5\u4E0B\u5185\u5BB9\uFF0C\u5E76\u7C98\u8D34\u5230\u547D\u4EE4\u884C\u4E2D\uFF0C\u6572 \u56DE\u8F66 \u6267\u884C\u5373\u53EF\uFF1A

    curl -L https://arthas.aliyun.com/install3.sh | sh
    +

    \u4E0A\u8FF0\u547D\u4EE4\u4F1A\u4E0B\u8F7D\u542F\u52A8\u811A\u672C\u6587\u4EF6 as3.sh \u5230\u5F53\u524D\u76EE\u5F55\uFF0C\u4F60\u53EF\u4EE5\u653E\u5728\u4EFB\u4F55\u5730\u65B9\u6216\u5C06\u5176\u52A0\u5165\u5230 $PATH \u4E2D\u3002

    \u76F4\u63A5\u5728 shell \u4E0B\u9762\u6267\u884C./as3.sh\uFF0C\u5C31\u4F1A\u8FDB\u5165\u4EA4\u4E92\u754C\u9762\u3002

    \u4E5F\u53EF\u4EE5\u6267\u884C./as3.sh -h\u6765\u83B7\u53D6\u66F4\u591A\u53C2\u6570\u4FE1\u606F\u3002

    Windows

    `,9),b=e("\u6700\u65B0\u7248\u672C\uFF0C\u70B9\u51FB\u4E0B\u8F7D\uFF1A"),g={href:"https://arthas.aliyun.com/download/latest_version?mirror=aliyun",target:"_blank",rel:"noopener noreferrer"},x=a("img",{src:"https://img.shields.io/maven-central/v/com.taobao.arthas/arthas-packaging.svg?style=flat-square",alt:"",title:"Arthas"},null,-1),k=t(`

    \u4E0B\u8F7D\u89E3\u538B\u540E\u5728 bin \u76EE\u5F55\u6709 as.bat\u3002\u6B64\u811A\u672C\u6682\u65F6\u53EA\u63A5\u53D7\u4E00\u4E2A\u53C2\u6570 pid\uFF0C\u5373\u53EA\u80FD\u8BCA\u65AD\u672C\u673A\u4E0A\u7684 Java \u8FDB\u7A0B\u3002\uFF08\u6B22\u8FCE\u7CBE\u901A bat \u811A\u672C\u7684\u5F00\u53D1\u8005\u6539\u8FDB\uFF09

    as.bat <pid>
    +

    \u4F7F\u7528\u4EE5\u4E0B\u547D\u4EE4\u8BCA\u65AD windows \u670D\u52A1\u6A21\u5F0F\u8FD0\u884C\u7684 Java \u8FDB\u7A0B (--interact \u6253\u5F00\u670D\u52A1 UI \u4EA4\u4E92\u6A21\u5F0F\uFF0C\u65B9\u4FBF\u8BCA\u65AD\u95EE\u9898)\uFF1A

    as-service.bat -port <port>
    +as-service.bat -pid <pid>
    +as-service.bat -pid <pid> --interact
    +

    \u6E05\u7406 arthas windows \u670D\u52A1\u6267\u884C\u4EE5\u4E0B\u547D\u4EE4\uFF1A

    as-service.bat -remove
    +

    \u624B\u52A8\u62FC\u63A5\u547D\u4EE4\u884C\u542F\u52A8

    \u5982\u679C\u542F\u52A8\u9047\u5230\u95EE\u9898\uFF0C\u53EF\u4EE5\u5C1D\u8BD5\u624B\u52A8\u62FC\u63A5\u51FA\u547D\u4EE4\u884C\u53C2\u6570\u6765\u542F\u52A8\u3002

    1. \u67E5\u627E\u76EE\u5F55 jvm \u7684 java \u6587\u4EF6\u8DEF\u5F84\u3002

      \u5728 linux/mac \u4E0A\u6267\u884Cps aux | grep java\uFF0C\u5728 windows \u4E0A\u53EF\u4EE5\u901A\u8FC7\u8FDB\u7A0B\u7BA1\u7406\u5668\u6765\u67E5\u770B\u3002\u5047\u8BBE\u662F/opt/jdk1.8/bin/java\u3002

    2. \u62FC\u63A5\u51FA\u547D\u4EE4\u884C

      /opt/jdk1.8/bin/java -Xbootclasspath/a:/opt/jdk1.8/lib/tools.jar \\
      + -jar /tmp/arthas-packaging/arthas-core.jar \\
      + -pid 15146 \\
      + -target-ip 127.0.0.1 -telnet-port 3658 -http-port 8563 \\
      + -core /tmp/arthas-packaging/arthas-core.jar \\
      + -agent /tmp/arthas-packaging/arthas/arthas-agent.jar
      +

      \u547D\u4EE4\u884C\u5206\u51E0\u90E8\u5206\u7EC4\u6210\uFF1A

      • -Xbootclasspath \u589E\u52A0 tools.jar
      • -jar /tmp/arthas-packaging/arthas-core.jar \u6307\u5B9A main \u51FD\u6570\u5165\u53E3
      • -pid 15146 \u6307\u5B9A\u76EE\u6807 java \u8FDB\u7A0B ID
      • -target-ip 127.0.0.1 \u6307\u5B9A IP
      • -telnet-port 3658 -http-port 8563 \u6307\u5B9A telnet \u548C http \u7AEF\u53E3
      • -core /tmp/arthas-packaging/arthas-core.jar -agent /tmp/arthas-packaging/arthas/arthas-agent.jar \u6307\u5B9A core/agent jar \u5305

      \u5982\u679C\u662Fjdk > 9\uFF0C\u5373 9/10/11 \u4EE5\u4E0A\u7684\u7248\u672C\uFF0C\u4E0D\u9700\u8981\u6307\u5B9Atools.jar\uFF0C\u76F4\u63A5\u53BB\u6389-Xbootclasspath \u7684\u914D\u7F6E\u5373\u53EF\u3002

      \u542F\u52A8\u76EE\u5FD7\u8F93\u51FA\u5728~/logs/arthas/arthas.log\u91CC\u3002

    3. attach \u6210\u529F\u4E4B\u540E\uFF0C\u4F7F\u7528 telnet \u8FDE\u63A5

      telnet 127.0.0.1 3658
      +
    `,9);function _(j,f){const s=d("ExternalLinkIcon");return l(),r("div",null,[o,p,h,a("p",null,[a("a",u,[v,n(s)])]),m,a("p",null,[b,a("a",g,[x,n(s)])]),k])}const A=i(c,[["render",_],["__file","manual-install.html.vue"]]);export{A as default}; diff --git a/3.x/assets/mbean.html.26631030.js b/3.x/assets/mbean.html.26631030.js new file mode 100644 index 00000000000..c40ea1737cb --- /dev/null +++ b/3.x/assets/mbean.html.26631030.js @@ -0,0 +1,9 @@ +import{_ as r,o as d,c as l,a as e,b as t,e as a,d as s,r as i}from"./app.4d248835.js";const o={},c=e("h1",{id:"mbean",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#mbean","aria-hidden":"true"},"#"),a(" mbean")],-1),p={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-mbean",target:"_blank",rel:"noopener noreferrer"},h=e("code",null,"mbean",-1),m=a("\u5728\u7EBF\u6559\u7A0B"),b=s(`

    \u63D0\u793A

    \u67E5\u770B Mbean \u7684\u4FE1\u606F

    \u8FD9\u4E2A\u547D\u4EE4\u53EF\u4EE5\u4FBF\u6377\u7684\u67E5\u770B\u6216\u76D1\u63A7 Mbean \u7684\u5C5E\u6027\u4FE1\u606F\u3002

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    name-pattern\u540D\u79F0\u8868\u8FBE\u5F0F\u5339\u914D
    attribute-pattern\u5C5E\u6027\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    [m]\u67E5\u770B\u5143\u4FE1\u606F
    [i:]\u5237\u65B0\u5C5E\u6027\u503C\u7684\u65F6\u95F4\u95F4\u9694 (ms)
    [n:]\u5237\u65B0\u5C5E\u6027\u503C\u7684\u6B21\u6570
    [E]\u5F00\u542F\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\uFF0C\u9ED8\u8BA4\u4E3A\u901A\u914D\u7B26\u5339\u914D\u3002\u4EC5\u5BF9\u5C5E\u6027\u540D\u6709\u6548

    \u4F7F\u7528\u53C2\u8003

    \u5217\u51FA\u6240\u6709 Mbean \u7684\u540D\u79F0\uFF1A

    mbean
    +

    \u67E5\u770B Mbean \u7684\u5143\u4FE1\u606F\uFF1A

    mbean -m java.lang:type=Threading
    +

    \u67E5\u770B mbean \u5C5E\u6027\u4FE1\u606F\uFF1A

    mbean java.lang:type=Threading
    +

    mbean \u7684 name \u652F\u6301\u901A\u914D\u7B26\u5339\u914D\uFF1A

    mbean java.lang:type=Th*
    +
    `,13),u={class:"custom-container warning"},g=e("p",{class:"custom-container-title"},"\u6CE8\u610F",-1),v=a("\u6CE8\u610F\uFF1AObjectName \u7684\u5339\u914D\u89C4\u5219\u4E0E\u6B63\u5E38\u7684\u901A\u914D\u7B26\u5B58\u5728\u5DEE\u5F02\uFF0C\u8BE6\u7EC6\u53C2\u89C1\uFF1A"),_={href:"https://docs.oracle.com/javase/8/docs/api/javax/management/ObjectName.html?is-external=true",target:"_blank",rel:"noopener noreferrer"},x=a("javax.management.ObjectName"),k=s(`

    \u901A\u914D\u7B26\u5339\u914D\u7279\u5B9A\u7684\u5C5E\u6027\u5B57\u6BB5\uFF1A

    mbean java.lang:type=Threading *Count
    +

    \u4F7F\u7528-E\u547D\u4EE4\u5207\u6362\u4E3A\u6B63\u5219\u5339\u914D\uFF1A

    mbean -E java.lang:type=Threading PeakThreadCount|ThreadCount|DaemonThreadCount
    +

    \u4F7F\u7528-i\u547D\u4EE4\u5B9E\u65F6\u76D1\u63A7\uFF1A

    mbean -i 1000 java.lang:type=Threading *Count
    +

    \u5B9E\u65F6\u76D1\u63A7\u4F7F\u7528-i\uFF0C\u4F7F\u7528-n\u547D\u4EE4\u6267\u884C\u547D\u4EE4\u7684\u6B21\u6570\uFF08\u9ED8\u8BA4\u4E3A 100 \u6B21\uFF09\uFF1A

    mbean -i 1000 -n 50 java.lang:type=Threading *Count
    +
    `,8);function y(f,j){const n=i("ExternalLinkIcon");return d(),l("div",null,[c,e("p",null,[e("a",p,[h,m,t(n)])]),b,e("div",u,[g,e("p",null,[v,e("a",_,[x,t(n)])])]),k])}const C=r(o,[["render",y],["__file","mbean.html.vue"]]);export{C as default}; diff --git a/3.x/assets/mbean.html.405141c1.js b/3.x/assets/mbean.html.405141c1.js new file mode 100644 index 00000000000..3d48ba34268 --- /dev/null +++ b/3.x/assets/mbean.html.405141c1.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-58d22ae0","path":"/en/doc/mbean.html","title":"mbean","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Parameters","slug":"parameters","link":"#parameters","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Almas Abdrazak","email":"almas337519@gmail.com","commits":1},{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/mbean.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/mbean.html.555cb2c7.js b/3.x/assets/mbean.html.555cb2c7.js new file mode 100644 index 00000000000..a8ea76dd3c2 --- /dev/null +++ b/3.x/assets/mbean.html.555cb2c7.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-8ebd6c68","path":"/doc/mbean.html","title":"mbean","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":2},{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1}]},"filePathRelative":"doc/mbean.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/mbean.html.7437cca3.js b/3.x/assets/mbean.html.7437cca3.js new file mode 100644 index 00000000000..b77321c7b59 --- /dev/null +++ b/3.x/assets/mbean.html.7437cca3.js @@ -0,0 +1,9 @@ +import{_ as r,o as i,c as l,a as e,b as n,e as a,d as s,r as d}from"./app.4d248835.js";const o={},c=e("h1",{id:"mbean",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#mbean","aria-hidden":"true"},"#"),a(" mbean")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-mbean",target:"_blank",rel:"noopener noreferrer"},p=e("code",null,"mbean",-1),h=a(" online tutorial"),u=s(`

    TIP

    show Mbean information

    This command can show or monitor Mbean attribute information.

    Parameters

    NameSpecification
    name-patternpattern for the Mbean name
    attribute-patternpattern for the attribute name
    [m]show meta information
    [i:]specify the interval to refresh attribute value (ms)
    [n:]execution times
    [E]turn on regex matching while the default mode is wildcard matching. Only effect on the attribute name

    Usage

    show all Mbean names:

    mbean
    +

    show meta data of Mbean:

    mbean -m java.lang:type=Threading
    +

    show attributes of Mbean:

    mbean java.lang:type=Threading
    +

    Mbean name support wildcard matcher:

    mbean java.lang:type=Th*
    +
    `,13),b={class:"custom-container warning"},g=e("p",{class:"custom-container-title"},"WARNING",-1),v=a("Notes\uFF1AObjectName matching rules differ from normal wildcards, Reference resources\uFF1A"),f={href:"https://docs.oracle.com/javase/8/docs/api/javax/management/ObjectName.html?is-external=true",target:"_blank",rel:"noopener noreferrer"},x=a("javax.management.ObjectName"),_=s(`

    Wildcards match specific attributes:

    mbean java.lang:type=Threading *Count
    +

    Switch to regular matching using the -E command:

    mbean -E java.lang:type=Threading PeakThreadCount|ThreadCount|DaemonThreadCount
    +

    Real-time monitoring using -i command:

    mbean -i 1000 java.lang:type=Threading *Count
    +

    Real-time monitoring using -i with number of times the command will be executed using -n command (100 times by default):

    mbean -i 1000 -n 50 java.lang:type=Threading *Count
    +
    `,8);function y(k,w){const t=d("ExternalLinkIcon");return i(),l("div",null,[c,e("p",null,[e("a",m,[p,h,n(t)])]),u,e("div",b,[g,e("p",null,[v,e("a",f,[x,n(t)])])]),_])}const T=r(o,[["render",y],["__file","mbean.html.vue"]]);export{T as default}; diff --git a/3.x/assets/mc.html.19c82f53.js b/3.x/assets/mc.html.19c82f53.js new file mode 100644 index 00000000000..6de4e0dc591 --- /dev/null +++ b/3.x/assets/mc.html.19c82f53.js @@ -0,0 +1,8 @@ +import{_ as r,o as d,c as l,a as e,b as a,w as o,e as s,d as i,r as t}from"./app.4d248835.js";const m={},p=e("h1",{id:"mc",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#mc","aria-hidden":"true"},"#"),s(" mc")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=cn&id=command-mc-retransform",target:"_blank",rel:"noopener noreferrer"},h=e("code",null,"mc-retransform",-1),_=s("\u5728\u7EBF\u6559\u7A0B"),v=i(`

    \u4F7F\u7528\u53C2\u8003

    \u63D0\u793A

    Memory Compiler/\u5185\u5B58\u7F16\u8BD1\u5668\uFF0C\u7F16\u8BD1.java\u6587\u4EF6\u751F\u6210.class\u3002

    mc /tmp/Test.java
    +

    \u53EF\u4EE5\u901A\u8FC7-c\u53C2\u6570\u6307\u5B9A classloader\uFF1A

    mc -c 327a647b /tmp/Test.java
    +

    \u4E5F\u53EF\u4EE5\u901A\u8FC7--classLoaderClass\u53C2\u6570\u6307\u5B9A ClassLoader\uFF1A

    $ mc --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader /tmp/UserController.java -d /tmp
    +Memory compiler output:
    +/tmp/com/example/demo/arthas/user/UserController.class
    +Affect(row-cnt:1) cost in 346 ms
    +

    \u53EF\u4EE5\u901A\u8FC7-d\u547D\u4EE4\u6307\u5B9A\u8F93\u51FA\u76EE\u5F55\uFF1A

    mc -d /tmp/output /tmp/ClassA.java /tmp/ClassB.java
    +
    `,9),b=s("\u7F16\u8BD1\u751F\u6210"),f=e("code",null,".class",-1),g=s("\u6587\u4EF6\u4E4B\u540E\uFF0C\u53EF\u4EE5\u7ED3\u5408"),k=s("retransform"),x=s("\u547D\u4EE4\u5B9E\u73B0\u70ED\u66F4\u65B0\u4EE3\u7801\u3002"),C={class:"custom-container warning"},L=e("p",{class:"custom-container-title"},"\u6CE8\u610F",-1),j=s("\u6CE8\u610F\uFF0Cmc \u547D\u4EE4\u6709\u53EF\u80FD\u5931\u8D25\u3002\u5982\u679C\u7F16\u8BD1\u5931\u8D25\u53EF\u4EE5\u5728\u672C\u5730\u7F16\u8BD1\u597D"),w=e("code",null,".class",-1),y=s("\u6587\u4EF6\uFF0C\u518D\u4E0A\u4F20\u5230\u670D\u52A1\u5668\u3002\u5177\u4F53\u53C2\u8003"),B=s("retransform"),N=s("\u547D\u4EE4\u8BF4\u660E\u3002");function V(E,R){const c=t("ExternalLinkIcon"),n=t("RouterLink");return d(),l("div",null,[p,e("p",null,[e("a",u,[h,_,a(c)])]),v,e("p",null,[b,f,g,a(n,{to:"/doc/retransform.html"},{default:o(()=>[k]),_:1}),x]),e("div",C,[L,e("p",null,[j,w,y,a(n,{to:"/doc/retransform.html"},{default:o(()=>[B]),_:1}),N])])])}const U=r(m,[["render",V],["__file","mc.html.vue"]]);export{U as default}; diff --git a/3.x/assets/mc.html.70645c5e.js b/3.x/assets/mc.html.70645c5e.js new file mode 100644 index 00000000000..f03b6632795 --- /dev/null +++ b/3.x/assets/mc.html.70645c5e.js @@ -0,0 +1 @@ +const a=JSON.parse('{"key":"v-3b401ada","path":"/doc/mc.html","title":"mc","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/mc.md","version":"3.7.3"}');export{a as data}; diff --git a/3.x/assets/mc.html.89ccac82.js b/3.x/assets/mc.html.89ccac82.js new file mode 100644 index 00000000000..2a81ebde688 --- /dev/null +++ b/3.x/assets/mc.html.89ccac82.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-2ac66c02","path":"/en/doc/mc.html","title":"mc","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/mc.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/mc.html.ac459852.js b/3.x/assets/mc.html.ac459852.js new file mode 100644 index 00000000000..0be4750a15f --- /dev/null +++ b/3.x/assets/mc.html.ac459852.js @@ -0,0 +1,8 @@ +import{_ as i,o as r,c as l,a as e,b as a,w as o,e as s,d,r as t}from"./app.4d248835.js";const m={},p=e("h1",{id:"mc",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#mc","aria-hidden":"true"},"#"),s(" mc")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=en&id=command-mc-retransform",target:"_blank",rel:"noopener noreferrer"},h=e("code",null,"mc-retransform",-1),_=s(" online tutorial"),v=d(`

    Usage

    TIP

    Memory compiler, compiles .java files into .class files in memory.

    mc /tmp/Test.java
    +

    The classloader can be specified with the -c option:

    mc -c 327a647b /tmp/Test.java
    +

    You can also specify the ClassLoader with the --classLoaderClass option:

    $ mc --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader /tmp/UserController.java -d /tmp
    +Memory compiler output:
    +/tmp/com/example/demo/arthas/user/UserController.class
    +Affect(row-cnt:1) cost in 346 ms
    +

    The output directory can be specified with the -d option:

    mc -d /tmp/output /tmp/ClassA.java /tmp/ClassB.java
    +
    `,9),f=s("After compiling the "),b=e("code",null,".class",-1),g=s(" file, you can use the "),k=s("retransform"),x=s(" command to re-define the loaded classes in JVM."),y={class:"custom-container warning"},C=e("p",{class:"custom-container-title"},"WARNING",-1),L=s("Note that the mc command may fail. If the compilation fails, the "),w=e("code",null,".class",-1),N=s(" file can be compiled locally and uploaded to the server. Refer to the "),j=s("retransform"),T=s(" command description for details.");function I(R,V){const c=t("ExternalLinkIcon"),n=t("RouterLink");return r(),l("div",null,[p,e("p",null,[e("a",u,[h,_,a(c)])]),v,e("p",null,[f,b,g,a(n,{to:"/en/doc/retransform.html"},{default:o(()=>[k]),_:1}),x]),e("div",y,[C,e("p",null,[L,w,N,a(n,{to:"/en/doc/retransform.html"},{default:o(()=>[j]),_:1}),T])])])}const B=i(m,[["render",I],["__file","mc.html.vue"]]);export{B as default}; diff --git a/3.x/assets/memory.html.078c4658.js b/3.x/assets/memory.html.078c4658.js new file mode 100644 index 00000000000..dc85382efc0 --- /dev/null +++ b/3.x/assets/memory.html.078c4658.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-4d9433f0","path":"/doc/memory.html","title":"memory","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/memory.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/memory.html.7bfef615.js b/3.x/assets/memory.html.7bfef615.js new file mode 100644 index 00000000000..2a23d53cefa --- /dev/null +++ b/3.x/assets/memory.html.7bfef615.js @@ -0,0 +1,15 @@ +import{_ as e,o as n,c as s,d as a}from"./app.4d248835.js";const r={},i=a(`

    memory

    View the JVM memory information.

    Usage

    $ memory
    +Memory                           used      total      max        usage
    +heap                             32M       256M       4096M      0.79%
    +g1_eden_space                    11M       68M        -1         16.18%
    +g1_old_gen                       17M       184M       4096M      0.43%
    +g1_survivor_space                4M        4M         -1         100.00%
    +nonheap                          35M       39M        -1         89.55%
    +codeheap_'non-nmethods'          1M        2M         5M         20.53%
    +metaspace                        26M       27M        -1         96.88%
    +codeheap_'profiled_nmethods'     4M        4M         117M       3.57%
    +compressed_class_space           2M        3M         1024M      0.29%
    +codeheap_'non-profiled_nmethods' 685K      2496K      120032K    0.57%
    +mapped                           0K        0K         -          0.00%
    +direct                           48M       48M        -          100.00%
    +
    `,4),l=[i];function c(d,o){return n(),s("div",null,l)}const m=e(r,[["render",c],["__file","memory.html.vue"]]);export{m as default}; diff --git a/3.x/assets/memory.html.9926de30.js b/3.x/assets/memory.html.9926de30.js new file mode 100644 index 00000000000..1f919e1c546 --- /dev/null +++ b/3.x/assets/memory.html.9926de30.js @@ -0,0 +1,15 @@ +import{_ as e,o as n,c as i,d}from"./app.4d248835.js";const s={},a=d(`

    memory

    \u67E5\u770B JVM \u5185\u5B58\u4FE1\u606F\u3002

    \u4F7F\u7528\u53C2\u8003

    $ memory
    +Memory                           used      total      max        usage
    +heap                             32M       256M       4096M      0.79%
    +g1_eden_space                    11M       68M        -1         16.18%
    +g1_old_gen                       17M       184M       4096M      0.43%
    +g1_survivor_space                4M        4M         -1         100.00%
    +nonheap                          35M       39M        -1         89.55%
    +codeheap_'non-nmethods'          1M        2M         5M         20.53%
    +metaspace                        26M       27M        -1         96.88%
    +codeheap_'profiled_nmethods'     4M        4M         117M       3.57%
    +compressed_class_space           2M        3M         1024M      0.29%
    +codeheap_'non-profiled_nmethods' 685K      2496K      120032K    0.57%
    +mapped                           0K        0K         -          0.00%
    +direct                           48M       48M        -          100.00%
    +
    `,4),r=[a];function l(c,m){return n(),i("div",null,r)}const t=e(s,[["render",l],["__file","memory.html.vue"]]);export{t as default}; diff --git a/3.x/assets/memory.html.e3c4914e.js b/3.x/assets/memory.html.e3c4914e.js new file mode 100644 index 00000000000..162dd253be9 --- /dev/null +++ b/3.x/assets/memory.html.e3c4914e.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-3f212774","path":"/en/doc/memory.html","title":"memory","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/memory.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/monitor.html.0b324722.js b/3.x/assets/monitor.html.0b324722.js new file mode 100644 index 00000000000..465e64e095d --- /dev/null +++ b/3.x/assets/monitor.html.0b324722.js @@ -0,0 +1,81 @@ +import{_ as e,o as t,c as l,a as s,b as i,e as n,d as r,r as o}from"./app.4d248835.js";const c={},p=s("h1",{id:"monitor",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#monitor","aria-hidden":"true"},"#"),n(" monitor")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-monitor",target:"_blank",rel:"noopener noreferrer"},d=s("code",null,"monitor",-1),u=n(" online tutorial"),b=r(`

    TIP

    Monitor method invocation.

    Monitor invocation for the method matched with class-pattern and method-pattern and filter by condition-expression.

    monitor is not a command returning immediately.

    A command returning immediately is a command immediately returns with the result after the command is input, while a non-immediate returning command will keep outputting the information from the target JVM process until user presses Ctrl+C.

    On Arthas's server side, the command is running as a background job, but the weaved code will not take further effect once the job is terminated, therefore, it will not impact the performance after the job quits. Furthermore, Arthas is designed to have no side effect to the business logic.

    Items to monitor

    ItemSpecification
    timestamptimestamp
    classJava class
    methodmethod (constructor and regular methods)
    totalcalling times
    successsuccess count
    failfailure count
    rtaverage RT
    fail-ratefailure ratio

    Parameters

    Parameter [c:] stands for cycles of statistics. Its value is an integer value in seconds.

    NameSpecification
    class-patternpattern for the class name
    method-patternpattern for the method name
    condition-expressioncondition expression for filtering method calls
    [E]turn on regex matching while the default is wildcard matching
    [c:]cycle of statistics, the default value: 120s
    [b]evaluate the condition-expression before method invoke
    [m <arg>]Specify the max number of matched Classes, the default value is 50. Long format is [maxMatch <arg>].

    Usage

    $ monitor -c 5 demo.MathGame primeFactors
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 94 ms.
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:38  demo.MathGame  primeFactors  5      1        4     1.15        80.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:43  demo.MathGame  primeFactors  5      3        2     42.29       40.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:48  demo.MathGame  primeFactors  5      3        2     67.92       40.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:53  demo.MathGame  primeFactors  5      2        3     0.25        60.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:58  demo.MathGame  primeFactors  1      1        0     0.45        0.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:07:03  demo.MathGame  primeFactors  2      2        0     3182.72     0.00%
    +

    Specify the max number of matched Classes

    $ monitor -c 1 -m 1 demo.MathGame primeFactors
    +Press Q or Ctrl+C to abort.
    +Affect(class count:1 , method count:1) cost in 384 ms, listenerId: 6.
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2022-12-25 21:12:58  demo.MathGame  primeFactors  1      1        0     0.18        0.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2022-12-25 21:12:59  demo.MathGame  primeFactors  0      0        0     0.00       0.00%
    +

    Evaluate condition-express to filter method (after method call)

    monitor -c 5 demo.MathGame primeFactors "params[0] <= 2"
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 19 ms, listenerId: 5
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:36  demo.MathGame  primeFactors    5       3       2      0.09       40.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:41  demo.MathGame  primeFactors    5       2       3      0.11       60.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:46  demo.MathGame  primeFactors    5       1       4      0.06       80.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:51  demo.MathGame  primeFactors    5       1       4      0.12       80.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:56  demo.MathGame  primeFactors    5       3       2      0.15       40.00%
    +

    Evaluate condition-express to filter method (before method call)

    monitor -b -c 5 com.test.testes.MathGame primeFactors "params[0] <= 2"
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 21 ms, listenerId: 4
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:41:57  demo.MathGame  primeFactors    1       0        1      0.10      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:02  demo.MathGame  primeFactors    3       0        3      0.06      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:07  demo.MathGame  primeFactors    2       0        2      0.06      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:12  demo.MathGame  primeFactors    1       0        1      0.05      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:17  demo.MathGame  primeFactors    2       0        2      0.10      100.00%
    +
    `,18);function v(h,k){const a=o("ExternalLinkIcon");return t(),l("div",null,[p,s("p",null,[s("a",m,[d,u,i(a)])]),b])}const g=e(c,[["render",v],["__file","monitor.html.vue"]]);export{g as default}; diff --git a/3.x/assets/monitor.html.30828325.js b/3.x/assets/monitor.html.30828325.js new file mode 100644 index 00000000000..d84aa663312 --- /dev/null +++ b/3.x/assets/monitor.html.30828325.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-20388043","path":"/en/doc/monitor.html","title":"monitor","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Items to monitor","slug":"items-to-monitor","link":"#items-to-monitor","children":[]},{"level":2,"title":"Parameters","slug":"parameters","link":"#parameters","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"Specify the max number of matched Classes","slug":"specify-the-max-number-of-matched-classes","link":"#specify-the-max-number-of-matched-classes","children":[]},{"level":3,"title":"Evaluate condition-express to filter method (after method call)","slug":"evaluate-condition-express-to-filter-method-after-method-call","link":"#evaluate-condition-express-to-filter-method-after-method-call","children":[]},{"level":3,"title":"Evaluate condition-express to filter method (before method call)","slug":"evaluate-condition-express-to-filter-method-before-method-call","link":"#evaluate-condition-express-to-filter-method-before-method-call","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1},{"name":"pandaapo","email":"35672972+pandaapo@users.noreply.github.com","commits":1}]},"filePathRelative":"en/doc/monitor.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/monitor.html.5f496a09.js b/3.x/assets/monitor.html.5f496a09.js new file mode 100644 index 00000000000..8a2ef72d0aa --- /dev/null +++ b/3.x/assets/monitor.html.5f496a09.js @@ -0,0 +1,81 @@ +import{_ as e,o as t,c as l,a as s,b as i,e as n,d as c,r as p}from"./app.4d248835.js";const r={},o=s("h1",{id:"monitor",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#monitor","aria-hidden":"true"},"#"),n(" monitor")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-monitor",target:"_blank",rel:"noopener noreferrer"},d=s("code",null,"monitor",-1),u=n("\u5728\u7EBF\u6559\u7A0B"),b=c(`

    \u63D0\u793A

    \u65B9\u6CD5\u6267\u884C\u76D1\u63A7

    \u5BF9\u5339\u914D class-pattern\uFF0Fmethod-pattern\uFF0Fcondition-express\u7684\u7C7B\u3001\u65B9\u6CD5\u7684\u8C03\u7528\u8FDB\u884C\u76D1\u63A7\u3002

    monitor \u547D\u4EE4\u662F\u4E00\u4E2A\u975E\u5B9E\u65F6\u8FD4\u56DE\u547D\u4EE4.

    \u5B9E\u65F6\u8FD4\u56DE\u547D\u4EE4\u662F\u8F93\u5165\u4E4B\u540E\u7ACB\u5373\u8FD4\u56DE\uFF0C\u800C\u975E\u5B9E\u65F6\u8FD4\u56DE\u7684\u547D\u4EE4\uFF0C\u5219\u662F\u4E0D\u65AD\u7684\u7B49\u5F85\u76EE\u6807 Java \u8FDB\u7A0B\u8FD4\u56DE\u4FE1\u606F\uFF0C\u76F4\u5230\u7528\u6237\u8F93\u5165 Ctrl+C \u4E3A\u6B62\u3002

    \u670D\u52A1\u7AEF\u662F\u4EE5\u4EFB\u52A1\u7684\u5F62\u5F0F\u5728\u540E\u53F0\u8DD1\u4EFB\u52A1\uFF0C\u690D\u5165\u7684\u4EE3\u7801\u968F\u7740\u4EFB\u52A1\u7684\u4E2D\u6B62\u800C\u4E0D\u4F1A\u88AB\u6267\u884C\uFF0C\u6240\u4EE5\u4EFB\u52A1\u5173\u95ED\u540E\uFF0C\u4E0D\u4F1A\u5BF9\u539F\u6709\u6027\u80FD\u4EA7\u751F\u592A\u5927\u5F71\u54CD\uFF0C\u800C\u4E14\u539F\u5219\u4E0A\uFF0C\u4EFB\u4F55 Arthas \u547D\u4EE4\u4E0D\u4F1A\u5F15\u8D77\u539F\u6709\u4E1A\u52A1\u903B\u8F91\u7684\u6539\u53D8\u3002

    \u76D1\u63A7\u7684\u7EF4\u5EA6\u8BF4\u660E

    \u76D1\u63A7\u9879\u8BF4\u660E
    timestamp\u65F6\u95F4\u6233
    classJava \u7C7B
    method\u65B9\u6CD5\uFF08\u6784\u9020\u65B9\u6CD5\u3001\u666E\u901A\u65B9\u6CD5\uFF09
    total\u8C03\u7528\u6B21\u6570
    success\u6210\u529F\u6B21\u6570
    fail\u5931\u8D25\u6B21\u6570
    rt\u5E73\u5747 RT
    fail-rate\u5931\u8D25\u7387

    \u53C2\u6570\u8BF4\u660E

    \u65B9\u6CD5\u62E5\u6709\u4E00\u4E2A\u547D\u540D\u53C2\u6570 [c:]\uFF0C\u610F\u601D\u662F\u7EDF\u8BA1\u5468\u671F\uFF08cycle of output\uFF09\uFF0C\u62E5\u6709\u4E00\u4E2A\u6574\u578B\u7684\u53C2\u6570\u503C

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    class-pattern\u7C7B\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    method-pattern\u65B9\u6CD5\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    condition-express\u6761\u4EF6\u8868\u8FBE\u5F0F
    [E]\u5F00\u542F\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\uFF0C\u9ED8\u8BA4\u4E3A\u901A\u914D\u7B26\u5339\u914D
    [c:]\u7EDF\u8BA1\u5468\u671F\uFF0C\u9ED8\u8BA4\u503C\u4E3A 120 \u79D2
    [b]\u5728\u65B9\u6CD5\u8C03\u7528\u4E4B\u524D\u8BA1\u7B97 condition-express
    [m <arg>]\u6307\u5B9A Class \u6700\u5927\u5339\u914D\u6570\u91CF\uFF0C\u9ED8\u8BA4\u503C\u4E3A 50\u3002\u957F\u683C\u5F0F\u4E3A[maxMatch <arg>]\u3002

    \u4F7F\u7528\u53C2\u8003

    $ monitor -c 5 demo.MathGame primeFactors
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 94 ms.
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:38  demo.MathGame  primeFactors  5      1        4     1.15        80.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:43  demo.MathGame  primeFactors  5      3        2     42.29       40.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:48  demo.MathGame  primeFactors  5      3        2     67.92       40.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:53  demo.MathGame  primeFactors  5      2        3     0.25        60.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:58  demo.MathGame  primeFactors  1      1        0     0.45        0.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:07:03  demo.MathGame  primeFactors  2      2        0     3182.72     0.00%
    +

    \u6307\u5B9A Class \u6700\u5927\u5339\u914D\u6570\u91CF

    $ monitor -c 1 -m 1 demo.MathGame primeFactors
    +Press Q or Ctrl+C to abort.
    +Affect(class count:1 , method count:1) cost in 384 ms, listenerId: 6.
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2022-12-25 21:12:58  demo.MathGame  primeFactors  1      1        0     0.18        0.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2022-12-25 21:12:59  demo.MathGame  primeFactors  0      0        0     0.00       0.00%
    +

    \u8BA1\u7B97\u6761\u4EF6\u8868\u8FBE\u5F0F\u8FC7\u6EE4\u7EDF\u8BA1\u7ED3\u679C(\u65B9\u6CD5\u6267\u884C\u5B8C\u6BD5\u4E4B\u540E)

    monitor -c 5 demo.MathGame primeFactors "params[0] <= 2"
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 19 ms, listenerId: 5
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:36  demo.MathGame  primeFactors    5       3       2      0.09       40.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:41  demo.MathGame  primeFactors    5       2       3      0.11       60.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:46  demo.MathGame  primeFactors    5       1       4      0.06       80.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:51  demo.MathGame  primeFactors    5       1       4      0.12       80.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:56  demo.MathGame  primeFactors    5       3       2      0.15       40.00%
    +

    \u8BA1\u7B97\u6761\u4EF6\u8868\u8FBE\u5F0F\u8FC7\u6EE4\u7EDF\u8BA1\u7ED3\u679C(\u65B9\u6CD5\u6267\u884C\u5B8C\u6BD5\u4E4B\u524D)

    monitor -b -c 5 com.test.testes.MathGame primeFactors "params[0] <= 2"
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 21 ms, listenerId: 4
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:41:57  demo.MathGame  primeFactors    1       0        1      0.10      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:02  demo.MathGame  primeFactors    3       0        3      0.06      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:07  demo.MathGame  primeFactors    2       0        2      0.06      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:12  demo.MathGame  primeFactors    1       0        1      0.05      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:17  demo.MathGame  primeFactors    2       0        2      0.10      100.00%
    +
    `,18);function v(k,h){const a=p("ExternalLinkIcon");return t(),l("div",null,[o,s("p",null,[s("a",m,[d,u,i(a)])]),b])}const f=e(r,[["render",v],["__file","monitor.html.vue"]]);export{f as default}; diff --git a/3.x/assets/monitor.html.d6717549.js b/3.x/assets/monitor.html.d6717549.js new file mode 100644 index 00000000000..3f39903e3ac --- /dev/null +++ b/3.x/assets/monitor.html.d6717549.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-6e88d7a2","path":"/doc/monitor.html","title":"monitor","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u76D1\u63A7\u7684\u7EF4\u5EA6\u8BF4\u660E","slug":"\u76D1\u63A7\u7684\u7EF4\u5EA6\u8BF4\u660E","link":"#\u76D1\u63A7\u7684\u7EF4\u5EA6\u8BF4\u660E","children":[]},{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"\u6307\u5B9A Class \u6700\u5927\u5339\u914D\u6570\u91CF","slug":"\u6307\u5B9A-class-\u6700\u5927\u5339\u914D\u6570\u91CF","link":"#\u6307\u5B9A-class-\u6700\u5927\u5339\u914D\u6570\u91CF","children":[]},{"level":3,"title":"\u8BA1\u7B97\u6761\u4EF6\u8868\u8FBE\u5F0F\u8FC7\u6EE4\u7EDF\u8BA1\u7ED3\u679C(\u65B9\u6CD5\u6267\u884C\u5B8C\u6BD5\u4E4B\u540E)","slug":"\u8BA1\u7B97\u6761\u4EF6\u8868\u8FBE\u5F0F\u8FC7\u6EE4\u7EDF\u8BA1\u7ED3\u679C-\u65B9\u6CD5\u6267\u884C\u5B8C\u6BD5\u4E4B\u540E","link":"#\u8BA1\u7B97\u6761\u4EF6\u8868\u8FBE\u5F0F\u8FC7\u6EE4\u7EDF\u8BA1\u7ED3\u679C-\u65B9\u6CD5\u6267\u884C\u5B8C\u6BD5\u4E4B\u540E","children":[]},{"level":3,"title":"\u8BA1\u7B97\u6761\u4EF6\u8868\u8FBE\u5F0F\u8FC7\u6EE4\u7EDF\u8BA1\u7ED3\u679C(\u65B9\u6CD5\u6267\u884C\u5B8C\u6BD5\u4E4B\u524D)","slug":"\u8BA1\u7B97\u6761\u4EF6\u8868\u8FBE\u5F0F\u8FC7\u6EE4\u7EDF\u8BA1\u7ED3\u679C-\u65B9\u6CD5\u6267\u884C\u5B8C\u6BD5\u4E4B\u524D","link":"#\u8BA1\u7B97\u6761\u4EF6\u8868\u8FBE\u5F0F\u8FC7\u6EE4\u7EDF\u8BA1\u7ED3\u679C-\u65B9\u6CD5\u6267\u884C\u5B8C\u6BD5\u4E4B\u524D","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1},{"name":"pandaapo","email":"35672972+pandaapo@users.noreply.github.com","commits":1}]},"filePathRelative":"doc/monitor.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/ognl.html.59679ee9.js b/3.x/assets/ognl.html.59679ee9.js new file mode 100644 index 00000000000..05c69595e4b --- /dev/null +++ b/3.x/assets/ognl.html.59679ee9.js @@ -0,0 +1,46 @@ +import{_ as o,o as l,c as i,a as n,b as e,e as a,d as t,r as p}from"./app.4d248835.js";const r={},c=n("h1",{id:"ognl",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#ognl","aria-hidden":"true"},"#"),a(" ognl")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=cn&id=command-ognl",target:"_blank",rel:"noopener noreferrer"},d=n("code",null,"ognl",-1),g=a("\u5728\u7EBF\u6559\u7A0B"),v=t('

    \u63D0\u793A

    \u6267\u884C ognl \u8868\u8FBE\u5F0F

    \u4ECE 3.0.5 \u7248\u672C\u589E\u52A0

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    express\u6267\u884C\u7684\u8868\u8FBE\u5F0F
    [c:]\u6267\u884C\u8868\u8FBE\u5F0F\u7684 ClassLoader \u7684 hashcode\uFF0C\u9ED8\u8BA4\u503C\u662F SystemClassLoader
    [classLoaderClass:]\u6307\u5B9A\u6267\u884C\u8868\u8FBE\u5F0F\u7684 ClassLoader \u7684 class name
    [x]\u7ED3\u679C\u5BF9\u8C61\u7684\u5C55\u5F00\u5C42\u6B21\uFF0C\u9ED8\u8BA4\u503C 1

    \u4F7F\u7528\u53C2\u8003

    ',5),k=a("OGNL \u7279\u6B8A\u7528\u6CD5\u8BF7\u53C2\u8003\uFF1A"),m={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},b=a("https://github.com/alibaba/arthas/issues/71"),h=a("OGNL \u8868\u8FBE\u5F0F\u5B98\u65B9\u6307\u5357\uFF1A"),f={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},L=a("https://commons.apache.org/proper/commons-ognl/language-guide.html"),_=t(`

    \u8C03\u7528\u9759\u6001\u51FD\u6570\uFF1A

    $ ognl '@java.lang.System@out.println("hello")'
    +null
    +

    \u83B7\u53D6\u9759\u6001\u7C7B\u7684\u9759\u6001\u5B57\u6BB5\uFF1A

    $ ognl '@demo.MathGame@random'
    +@Random[
    +    serialVersionUID=@Long[3905348978240129619],
    +    seed=@AtomicLong[125451474443703],
    +    multiplier=@Long[25214903917],
    +    addend=@Long[11],
    +    mask=@Long[281474976710655],
    +    DOUBLE_UNIT=@Double[1.1102230246251565E-16],
    +    BadBound=@String[bound must be positive],
    +    BadRange=@String[bound must be greater than origin],
    +    BadSize=@String[size must be non-negative],
    +    seedUniquifier=@AtomicLong[-3282039941672302964],
    +    nextNextGaussian=@Double[0.0],
    +    haveNextNextGaussian=@Boolean[false],
    +    serialPersistentFields=@ObjectStreamField[][isEmpty=false;size=3],
    +    unsafe=@Unsafe[sun.misc.Unsafe@28ea5898],
    +    seedOffset=@Long[24],
    +]
    +

    \u901A\u8FC7 hashcode \u6307\u5B9A ClassLoader\uFF1A

    $ classloader -t
    ++-BootstrapClassLoader
    ++-jdk.internal.loader.ClassLoaders$PlatformClassLoader@301ec38b
    +  +-com.taobao.arthas.agent.ArthasClassloader@472067c7
    +  +-jdk.internal.loader.ClassLoaders$AppClassLoader@4b85612c
    +    +-org.springframework.boot.loader.LaunchedURLClassLoader@7f9a81e8
    +
    +$ ognl -c 7f9a81e8 @org.springframework.boot.SpringApplication@logger
    +@Slf4jLocationAwareLog[
    +    FQCN=@String[org.apache.commons.logging.LogAdapter$Slf4jLocationAwareLog],
    +    name=@String[org.springframework.boot.SpringApplication],
    +    logger=@Logger[Logger[org.springframework.boot.SpringApplication]],
    +]
    +$
    +

    \u6CE8\u610F hashcode \u662F\u53D8\u5316\u7684\uFF0C\u9700\u8981\u5148\u67E5\u770B\u5F53\u524D\u7684 ClassLoader \u4FE1\u606F\uFF0C\u63D0\u53D6\u5BF9\u5E94 ClassLoader \u7684 hashcode\u3002

    \u5BF9\u4E8E\u53EA\u6709\u552F\u4E00\u5B9E\u4F8B\u7684 ClassLoader \u53EF\u4EE5\u901A\u8FC7 class name \u6307\u5B9A\uFF0C\u4F7F\u7528\u8D77\u6765\u66F4\u52A0\u65B9\u4FBF\uFF1A

    $ ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader  @org.springframework.boot.SpringApplication@logger
    +@Slf4jLocationAwareLog[
    +    FQCN=@String[org.apache.commons.logging.LogAdapter$Slf4jLocationAwareLog],
    +    name=@String[org.springframework.boot.SpringApplication],
    +    logger=@Logger[Logger[org.springframework.boot.SpringApplication]],
    +]
    +

    \u6267\u884C\u591A\u884C\u8868\u8FBE\u5F0F\uFF0C\u8D4B\u503C\u7ED9\u4E34\u65F6\u53D8\u91CF\uFF0C\u8FD4\u56DE\u4E00\u4E2A List\uFF1A

    $ ognl '#value1=@System@getProperty("java.home"), #value2=@System@getProperty("java.runtime.name"), {#value1, #value2}'
    +@ArrayList[
    +    @String[/opt/java/8.0.181-zulu/jre],
    +    @String[OpenJDK Runtime Environment],
    +]
    +
    `,11);function x(S,y){const s=p("ExternalLinkIcon");return l(),i("div",null,[c,n("p",null,[n("a",u,[d,g,e(s)])]),v,n("ul",null,[n("li",null,[k,n("a",m,[b,e(s)])]),n("li",null,[h,n("a",f,[L,e(s)])])]),_])}const A=o(r,[["render",x],["__file","ognl.html.vue"]]);export{A as default}; diff --git a/3.x/assets/ognl.html.a04123af.js b/3.x/assets/ognl.html.a04123af.js new file mode 100644 index 00000000000..b91409ca54c --- /dev/null +++ b/3.x/assets/ognl.html.a04123af.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-627e52da","path":"/doc/ognl.html","title":"ognl","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/ognl.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/ognl.html.a2f5b795.js b/3.x/assets/ognl.html.a2f5b795.js new file mode 100644 index 00000000000..eabea0262e6 --- /dev/null +++ b/3.x/assets/ognl.html.a2f5b795.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-89b4fa02","path":"/en/doc/ognl.html","title":"ognl","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Parameters","slug":"parameters","link":"#parameters","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/ognl.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/ognl.html.c5956d1f.js b/3.x/assets/ognl.html.c5956d1f.js new file mode 100644 index 00000000000..4069e19d402 --- /dev/null +++ b/3.x/assets/ognl.html.c5956d1f.js @@ -0,0 +1,46 @@ +import{_ as o,o as l,c as i,a as n,b as e,e as a,d as t,r as p}from"./app.4d248835.js";const r={},c=n("h1",{id:"ognl",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#ognl","aria-hidden":"true"},"#"),a(" ognl")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=en&id=command-ognl",target:"_blank",rel:"noopener noreferrer"},d=n("code",null,"ognl",-1),g=a(" online tutorial"),v=t('

    TIP

    Execute ognl expression.

    Since 3.0.5.

    Parameters

    NameSpecification
    expressexpression to be executed
    [c:]The hashcode of the ClassLoader that executes the expression, default ClassLoader is SystemClassLoader.
    [classLoaderClass:]The class name of the ClassLoader that executes the expression.
    [x]Expand level of object (1 by default).

    Usage

    ',5),k={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},b=a("Special usages"),m={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},h=a("OGNL official guide"),f=t(`

    Call static method:

    $ ognl '@java.lang.System@out.println("hello")'
    +null
    +

    Get static field:

    $ ognl '@demo.MathGame@random'
    +@Random[
    +    serialVersionUID=@Long[3905348978240129619],
    +    seed=@AtomicLong[125451474443703],
    +    multiplier=@Long[25214903917],
    +    addend=@Long[11],
    +    mask=@Long[281474976710655],
    +    DOUBLE_UNIT=@Double[1.1102230246251565E-16],
    +    BadBound=@String[bound must be positive],
    +    BadRange=@String[bound must be greater than origin],
    +    BadSize=@String[size must be non-negative],
    +    seedUniquifier=@AtomicLong[-3282039941672302964],
    +    nextNextGaussian=@Double[0.0],
    +    haveNextNextGaussian=@Boolean[false],
    +    serialPersistentFields=@ObjectStreamField[][isEmpty=false;size=3],
    +    unsafe=@Unsafe[sun.misc.Unsafe@28ea5898],
    +    seedOffset=@Long[24],
    +]
    +

    Specify ClassLoader by hashcode:

    $ classloader -t
    ++-BootstrapClassLoader
    ++-jdk.internal.loader.ClassLoaders$PlatformClassLoader@301ec38b
    +  +-com.taobao.arthas.agent.ArthasClassloader@472067c7
    +  +-jdk.internal.loader.ClassLoaders$AppClassLoader@4b85612c
    +    +-org.springframework.boot.loader.LaunchedURLClassLoader@7f9a81e8
    +
    +$ ognl -c 7f9a81e8 @org.springframework.boot.SpringApplication@logger
    +@Slf4jLocationAwareLog[
    +    FQCN=@String[org.apache.commons.logging.LogAdapter$Slf4jLocationAwareLog],
    +    name=@String[org.springframework.boot.SpringApplication],
    +    logger=@Logger[Logger[org.springframework.boot.SpringApplication]],
    +]
    +$
    +

    Note that the hashcode changes, you need to check the current ClassLoader information first, and extract the hashcode corresponding to the ClassLoader.

    For ClassLoader with only unique instance, it can be specified by class name, which is more convenient to use:

    $ ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader  @org.springframework.boot.SpringApplication@logger
    +@Slf4jLocationAwareLog[
    +    FQCN=@String[org.apache.commons.logging.LogAdapter$Slf4jLocationAwareLog],
    +    name=@String[org.springframework.boot.SpringApplication],
    +    logger=@Logger[Logger[org.springframework.boot.SpringApplication]],
    +]
    +

    Execute a multi-line expression, and return a list:

    $ ognl '#value1=@System@getProperty("java.home"), #value2=@System@getProperty("java.runtime.name"), {#value1, #value2}'
    +@ArrayList[
    +    @String[/opt/java/8.0.181-zulu/jre],
    +    @String[OpenJDK Runtime Environment],
    +]
    +
    `,11);function L(x,_){const s=p("ExternalLinkIcon");return l(),i("div",null,[c,n("p",null,[n("a",u,[d,g,e(s)])]),v,n("ul",null,[n("li",null,[n("a",k,[b,e(s)])]),n("li",null,[n("a",m,[h,e(s)])])]),f])}const y=o(r,[["render",L],["__file","ognl.html.vue"]]);export{y as default}; diff --git a/3.x/assets/options.html.39ae73d3.js b/3.x/assets/options.html.39ae73d3.js new file mode 100644 index 00000000000..00bf042c3e7 --- /dev/null +++ b/3.x/assets/options.html.39ae73d3.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-43a1e17f","path":"/en/doc/options.html","title":"options","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"View all options","slug":"view-all-options","link":"#view-all-options","children":[]},{"level":2,"title":"Get special option value","slug":"get-special-option-value","link":"#get-special-option-value","children":[]},{"level":2,"title":"Set special option value","slug":"set-special-option-value","link":"#set-special-option-value","children":[]},{"level":2,"title":"Set unsafe to true to enhance the classes under the java.* package","slug":"set-unsafe-to-true-to-enhance-the-classes-under-the-java-package","link":"#set-unsafe-to-true-to-enhance-the-classes-under-the-java-package","children":[]},{"level":2,"title":"Turn off strict mode, allow setting object properties in ognl expressions","slug":"turn-off-strict-mode-allow-setting-object-properties-in-ognl-expressions","link":"#turn-off-strict-mode-allow-setting-object-properties-in-ognl-expressions","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/options.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/options.html.6ca60b92.js b/3.x/assets/options.html.6ca60b92.js new file mode 100644 index 00000000000..3eb2c000832 --- /dev/null +++ b/3.x/assets/options.html.6ca60b92.js @@ -0,0 +1,61 @@ +import{_ as a,o,c as l,a as e,b as t,e as n,d as i,r as c}from"./app.4d248835.js";const r={},d=e("h1",{id:"options",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#options","aria-hidden":"true"},"#"),n(" options")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-options",target:"_blank",rel:"noopener noreferrer"},p=e("code",null,"options",-1),h=n(" online tutorial"),m=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"TIP"),e("p",null,"Global options")],-1),b=e("thead",null,[e("tr",null,[e("th",null,"Name"),e("th",null,"Default Value"),e("th",null,"Description")])],-1),v=e("tr",null,[e("td",null,"unsafe"),e("td",null,"false"),e("td",null,"whether to enhance to system-level class. Use it with caution since JVM may hang")],-1),f=e("tr",null,[e("td",null,"dump"),e("td",null,"false"),e("td",null,[n("whether to dump enhanced class to the external files. If it's on, enhanced class will be dumped into "),e("code",null,"/${application dir}/arthas-class-dump/"),n(", the specific output path will be output in the console")])],-1),g=e("tr",null,[e("td",null,"batch-re-transform"),e("td",null,"true"),e("td",null,"whether to re-transform matched classes in batch")],-1),k=e("tr",null,[e("td",null,"json-format"),e("td",null,"false"),e("td",null,"whether to output in JSON format")],-1),_=e("tr",null,[e("td",null,"disable-sub-class"),e("td",null,"false"),e("td",null,[n("whether to enable matching child classes. The default value is "),e("code",null,"true"),n(". If exact match is desire, turn off this flag")])],-1),w=e("td",null,"support-default-method",-1),x=e("td",null,"true",-1),j=n("whether to enable matching default method in interface. The default value is "),y=e("code",null,"true",-1),T=n(". Refer to "),E={href:"https://github.com/alibaba/arthas/issues/1105",target:"_blank",rel:"noopener noreferrer"},O=n("#1105"),A=e("tr",null,[e("td",null,"save-result"),e("td",null,"false"),e("td",null,[n("whether to save execution result. All execution results will be saved to "),e("code",null,"~/logs/arthas-cache/result.log"),n(" when it's turned on")])],-1),V=e("tr",null,[e("td",null,"job-timeout"),e("td",null,"1d"),e("td",null,"default timeout for background jobs. Background job will be terminated once it's timed out (i.e. 1d, 2h, 3m, 25s)")],-1),I=e("tr",null,[e("td",null,"print-parent-fields"),e("td",null,"true"),e("td",null,"This option enables print files in parent class, default value true.")],-1),N=e("tr",null,[e("td",null,"verbose"),e("td",null,"false"),e("td",null,"This option enables print verbose information")],-1),S=e("tr",null,[e("td",null,"strict"),e("td",null,"true"),e("td",null,"whether to enable strict mode")],-1),M=i(`

    View all options

    $ options
    + LEVEL  TYPE    NAME          VALUE   SUMMARY               DESCRIPTION
    +-------------------------------------------------------------------------------------------------------
    + 0      boolea  unsafe        false   Option to support sy  This option enables to proxy functionality
    +        n                             stem-level class       of JVM classes. Due to serious security r
    +                                                            isk a JVM crash is possibly be introduced.
    +                                                             Do not activate it unless you are able to
    +                                                             manage.
    + 1      boolea  dump          false   Option to dump the e  This option enables the enhanced classes t
    +        n                             nhanced classes       o be dumped to external file for further d
    +                                                            e-compilation and analysis.
    + 1      boolea  batch-re-tra  true    Option to support ba  This options enables to reTransform classe
    +        n       nsform                tch reTransform Clas  s with batch mode.
    +                                      s
    + 2      boolea  json-format   false   Option to support JS  This option enables to format object outpu
    +        n                             ON format of object   t with JSON when -x option selected.
    +                                      output
    + 1      boolea  disable-sub-  false   Option to control in  This option disable to include sub class w
    +        n       class                 clude sub class when  hen matching class.
    +                                       class matching
    + 1      boolea  support-defa  true    Option to control in  This option disable to include default met
    +        n       ult-method            clude default method  hod in interface when matching class.
    +                                       in interface when c
    +                                      lass matching
    + 1      boolea  save-result   false   Option to print comm  This option enables to save each command's
    +        n                             and's result to log    result to log file, which path is \${user.
    +                                      file                  home}/logs/arthas-cache/result.log.
    + 2      String  job-timeout   1d      Option to job timeou  This option setting job timeout,The unit c
    +                                      t                     an be d, h, m, s for day, hour, minute, se
    +                                                            cond. 1d is one day in default
    + 1      boolea  print-parent  true    Option to print all   This option enables print files in parent
    +        n       -fields               fileds in parent cla  class, default value true.
    +                                      ss
    + 1      boolea  verbose       false   Option to print verb  This option enables print verbose informat
    +        n                             ose information       ion, default value false.
    + 1      boolea  strict        true    Option to strict mod  By default, strict mode is true, not allow
    +        n                             e                     ed to set object properties. Want to set o
    +                                                            bject properties, execute \`options strict
    +                                                            false\`
    +

    Get special option value

    $ options json-format
    + LEVEL  TYPE  NAME         VALUE  SUMMARY             DESCRIPTION
    +--------------------------------------------------------------------------------------------
    + 2      bool  json-format  false  Option to support   This option enables to format object
    +        ean                       JSON format of obj  output with JSON when -x option selec
    +                                  ect output          ted.
    +

    TIP

    By default, json-format is false. When set json-format to true, commands like wathc/tt will print result with json format.

    Set special option value

    For example, to enable saving command execution result, input the command below:

    $ options save-result true
    + NAME         BEFORE-VALUE  AFTER-VALUE
    +----------------------------------------
    + save-result  false         true
    +

    Set unsafe to true to enhance the classes under the java.* package

    By default, watch/trace/tt/trace/monitor command do not support classes under java.* package. You can set unsafe to true to enhance the classes under the java.* package.

    $ options unsafe true
    + NAME    BEFORE-VALUE  AFTER-VALUE
    +-----------------------------------
    + unsafe  false         true
    +
    $ watch java.lang.invoke.Invokers callSiteForm
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 61 ms, listenerId: 1
    +

    Turn off strict mode, allow setting object properties in ognl expressions

    TIP

    since 3.6.0

    For new users, there may be misuses when writing ognl expressions.

    For example, for Student, when judging the age is equal to 18, the conditional expression may be mistakenly written as target.age=18, which actually sets the age of the current object to 18. The correct spelling is target.age==18.

    In order to prevent misuse like the above, Arthas enables strict mode by default, in ognl expressions, it is forbidden to update the property of the object or call the setter method.

    Take MathGame as an example, the following error message will appear.

    $ watch demo.MathGame primeFactors 'target' 'target.illegalArgumentCount=1'
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 206 ms, listenerId: 1
    +watch failed, condition is: target.illegalArgumentCount=1, express is: target, By default, strict mode is true, not allowed to set object properties. Want to set object properties, execute \`options strict false\`, visit /Users/admin/logs/arthas/arthas.log for more details.
    +

    If the user want to change the object properties in the ognl expression, you can execute options strict false to turn off the strict mode.

    • For more information, please refer to: https://github.com/alibaba/arthas/issues/2128
    `,21);function L(B,C){const s=c("ExternalLinkIcon");return o(),l("div",null,[d,e("p",null,[e("a",u,[p,h,t(s)])]),m,e("table",null,[b,e("tbody",null,[v,f,g,k,_,e("tr",null,[w,x,e("td",null,[j,y,T,e("a",E,[O,t(s)])])]),A,V,I,N,S])]),M])}const U=a(r,[["render",L],["__file","options.html.vue"]]);export{U as default}; diff --git a/3.x/assets/options.html.76f0ad11.js b/3.x/assets/options.html.76f0ad11.js new file mode 100644 index 00000000000..4c27c593c9d --- /dev/null +++ b/3.x/assets/options.html.76f0ad11.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-27b6152a","path":"/doc/options.html","title":"options","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u67E5\u770B\u6240\u6709\u7684 options","slug":"\u67E5\u770B\u6240\u6709\u7684-options","link":"#\u67E5\u770B\u6240\u6709\u7684-options","children":[]},{"level":2,"title":"\u83B7\u53D6 option \u7684\u503C","slug":"\u83B7\u53D6-option-\u7684\u503C","link":"#\u83B7\u53D6-option-\u7684\u503C","children":[]},{"level":2,"title":"\u8BBE\u7F6E\u6307\u5B9A\u7684 option","slug":"\u8BBE\u7F6E\u6307\u5B9A\u7684-option","link":"#\u8BBE\u7F6E\u6307\u5B9A\u7684-option","children":[]},{"level":2,"title":"\u6253\u5F00 unsafe \u5F00\u5173\uFF0C\u652F\u6301 jdk package \u4E0B\u7684\u7C7B","slug":"\u6253\u5F00-unsafe-\u5F00\u5173-\u652F\u6301-jdk-package-\u4E0B\u7684\u7C7B","link":"#\u6253\u5F00-unsafe-\u5F00\u5173-\u652F\u6301-jdk-package-\u4E0B\u7684\u7C7B","children":[]},{"level":2,"title":"\u5173\u95ED strict \u6A21\u5F0F\uFF0C\u5141\u8BB8\u5728 ognl \u8868\u8FBE\u5F0F\u91CC\u8BBE\u7F6E\u5BF9\u8C61\u5C5E\u6027","slug":"\u5173\u95ED-strict-\u6A21\u5F0F-\u5141\u8BB8\u5728-ognl-\u8868\u8FBE\u5F0F\u91CC\u8BBE\u7F6E\u5BF9\u8C61\u5C5E\u6027","link":"#\u5173\u95ED-strict-\u6A21\u5F0F-\u5141\u8BB8\u5728-ognl-\u8868\u8FBE\u5F0F\u91CC\u8BBE\u7F6E\u5BF9\u8C61\u5C5E\u6027","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/options.md","version":"3.7.3"}');export{t as data}; diff --git a/3.x/assets/options.html.b8b42168.js b/3.x/assets/options.html.b8b42168.js new file mode 100644 index 00000000000..27ed307e323 --- /dev/null +++ b/3.x/assets/options.html.b8b42168.js @@ -0,0 +1,61 @@ +import{_ as t,o as l,c as o,a as e,b as a,e as n,d as i,r as d}from"./app.4d248835.js";const c={},r=e("h1",{id:"options",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#options","aria-hidden":"true"},"#"),n(" options")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-options",target:"_blank",rel:"noopener noreferrer"},p=e("code",null,"options",-1),b=n("\u5728\u7EBF\u6559\u7A0B"),m=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"\u63D0\u793A"),e("p",null,"\u5168\u5C40\u5F00\u5173")],-1),v=e("thead",null,[e("tr",null,[e("th",null,"\u540D\u79F0"),e("th",null,"\u9ED8\u8BA4\u503C"),e("th",null,"\u63CF\u8FF0")])],-1),h=e("tr",null,[e("td",null,"unsafe"),e("td",null,"false"),e("td",null,"\u662F\u5426\u652F\u6301\u5BF9\u7CFB\u7EDF\u7EA7\u522B\u7684\u7C7B\u8FDB\u884C\u589E\u5F3A\uFF0C\u6253\u5F00\u8BE5\u5F00\u5173\u53EF\u80FD\u5BFC\u81F4\u628A JVM \u641E\u6302\uFF0C\u8BF7\u614E\u91CD\u9009\u62E9\uFF01")],-1),f=e("tr",null,[e("td",null,"dump"),e("td",null,"false"),e("td",null,[n("\u662F\u5426\u652F\u6301\u88AB\u589E\u5F3A\u4E86\u7684\u7C7B dump \u5230\u5916\u90E8\u6587\u4EF6\u4E2D\uFF0C\u5982\u679C\u6253\u5F00\u5F00\u5173\uFF0Cclass \u6587\u4EF6\u4F1A\u88AB dump \u5230"),e("code",null,"/${application working dir}/arthas-class-dump/"),n("\u76EE\u5F55\u4E0B\uFF0C\u5177\u4F53\u4F4D\u7F6E\u8BE6\u89C1\u63A7\u5236\u53F0\u8F93\u51FA")])],-1),k=e("tr",null,[e("td",null,"batch-re-transform"),e("td",null,"true"),e("td",null,"\u662F\u5426\u652F\u6301\u6279\u91CF\u5BF9\u5339\u914D\u5230\u7684\u7C7B\u6267\u884C retransform \u64CD\u4F5C")],-1),g=e("tr",null,[e("td",null,"json-format"),e("td",null,"false"),e("td",null,"\u662F\u5426\u652F\u6301 json \u5316\u7684\u8F93\u51FA")],-1),_=e("tr",null,[e("td",null,"disable-sub-class"),e("td",null,"false"),e("td",null,"\u662F\u5426\u7981\u7528\u5B50\u7C7B\u5339\u914D\uFF0C\u9ED8\u8BA4\u5728\u5339\u914D\u76EE\u6807\u7C7B\u7684\u65F6\u5019\u4F1A\u9ED8\u8BA4\u5339\u914D\u5230\u5176\u5B50\u7C7B\uFF0C\u5982\u679C\u60F3\u7CBE\u786E\u5339\u914D\uFF0C\u53EF\u4EE5\u5173\u95ED\u6B64\u5F00\u5173")],-1),x=e("td",null,"support-default-method",-1),w=e("td",null,"true",-1),E=n("\u662F\u5426\u652F\u6301\u5339\u914D\u5230 default method\uFF0C \u9ED8\u8BA4\u4F1A\u67E5\u627E interface\uFF0C\u5339\u914D\u91CC\u9762\u7684 default method\u3002\u53C2\u8003 "),j={href:"https://github.com/alibaba/arthas/issues/1105",target:"_blank",rel:"noopener noreferrer"},y=n("#1105"),T=e("tr",null,[e("td",null,"save-result"),e("td",null,"false"),e("td",null,[n("\u662F\u5426\u6253\u5F00\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7\u529F\u80FD\uFF0C\u6253\u5F00\u4E4B\u540E\u6240\u6709\u547D\u4EE4\u7684\u8FD0\u884C\u7ED3\u679C\u90FD\u5C06\u4FDD\u5B58\u5230"),e("code",null,"~/logs/arthas-cache/result.log"),n("\u4E2D")])],-1),O=e("tr",null,[e("td",null,"job-timeout"),e("td",null,"1d"),e("td",null,"\u5F02\u6B65\u540E\u53F0\u4EFB\u52A1\u7684\u9ED8\u8BA4\u8D85\u65F6\u65F6\u95F4\uFF0C\u8D85\u8FC7\u8FD9\u4E2A\u65F6\u95F4\uFF0C\u4EFB\u52A1\u81EA\u52A8\u505C\u6B62\uFF1B\u6BD4\u5982\u8BBE\u7F6E 1d, 2h, 3m, 25s\uFF0C\u5206\u522B\u4EE3\u8868\u5929\u3001\u5C0F\u65F6\u3001\u5206\u3001\u79D2")],-1),A=e("tr",null,[e("td",null,"print-parent-fields"),e("td",null,"true"),e("td",null,"\u662F\u5426\u6253\u5370\u5728 parent class \u91CC\u7684 filed")],-1),V=e("tr",null,[e("td",null,"verbose"),e("td",null,"false"),e("td",null,"\u662F\u5426\u6253\u5370\u66F4\u591A\u8BE6\u7EC6\u4FE1\u606F")],-1),N=e("tr",null,[e("td",null,"strict"),e("td",null,"true"),e("td",null,"\u662F\u5426\u542F\u7528 strict \u6A21\u5F0F")],-1),M=i(`

    \u67E5\u770B\u6240\u6709\u7684 options

    $ options
    + LEVEL  TYPE    NAME          VALUE   SUMMARY               DESCRIPTION
    +-------------------------------------------------------------------------------------------------------
    + 0      boolea  unsafe        false   Option to support sy  This option enables to proxy functionality
    +        n                             stem-level class       of JVM classes. Due to serious security r
    +                                                            isk a JVM crash is possibly be introduced.
    +                                                             Do not activate it unless you are able to
    +                                                             manage.
    + 1      boolea  dump          false   Option to dump the e  This option enables the enhanced classes t
    +        n                             nhanced classes       o be dumped to external file for further d
    +                                                            e-compilation and analysis.
    + 1      boolea  batch-re-tra  true    Option to support ba  This options enables to reTransform classe
    +        n       nsform                tch reTransform Clas  s with batch mode.
    +                                      s
    + 2      boolea  json-format   false   Option to support JS  This option enables to format object outpu
    +        n                             ON format of object   t with JSON when -x option selected.
    +                                      output
    + 1      boolea  disable-sub-  false   Option to control in  This option disable to include sub class w
    +        n       class                 clude sub class when  hen matching class.
    +                                       class matching
    + 1      boolea  support-defa  true    Option to control in  This option disable to include default met
    +        n       ult-method            clude default method  hod in interface when matching class.
    +                                       in interface when c
    +                                      lass matching
    + 1      boolea  save-result   false   Option to print comm  This option enables to save each command's
    +        n                             and's result to log    result to log file, which path is \${user.
    +                                      file                  home}/logs/arthas-cache/result.log.
    + 2      String  job-timeout   1d      Option to job timeou  This option setting job timeout,The unit c
    +                                      t                     an be d, h, m, s for day, hour, minute, se
    +                                                            cond. 1d is one day in default
    + 1      boolea  print-parent  true    Option to print all   This option enables print files in parent
    +        n       -fields               fileds in parent cla  class, default value true.
    +                                      ss
    + 1      boolea  verbose       false   Option to print verb  This option enables print verbose informat
    +        n                             ose information       ion, default value false.
    + 1      boolea  strict        true    Option to strict mod  By default, strict mode is true, not allow
    +        n                             e                     ed to set object properties. Want to set o
    +                                                            bject properties, execute \`options strict
    +                                                            false\`
    +

    \u83B7\u53D6 option \u7684\u503C

    $ options json-format
    + LEVEL  TYPE  NAME         VALUE  SUMMARY             DESCRIPTION
    +--------------------------------------------------------------------------------------------
    + 2      bool  json-format  false  Option to support   This option enables to format object
    +        ean                       JSON format of obj  output with JSON when -x option selec
    +                                  ect output          ted.
    +

    \u63D0\u793A

    \u9ED8\u8BA4\u60C5\u51B5\u4E0Bjson-format\u4E3A false\uFF0C\u5982\u679C\u5E0C\u671Bwatch/tt\u7B49\u547D\u4EE4\u7ED3\u679C\u4EE5 json \u683C\u5F0F\u8F93\u51FA\uFF0C\u5219\u53EF\u4EE5\u8BBE\u7F6Ejson-format\u4E3A true\u3002

    \u8BBE\u7F6E\u6307\u5B9A\u7684 option

    \u4F8B\u5982\uFF0C\u60F3\u6253\u5F00\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7\u529F\u80FD\uFF0C\u8F93\u5165\u5982\u4E0B\u547D\u4EE4\u5373\u53EF\uFF1A

    $ options save-result true
    + NAME         BEFORE-VALUE  AFTER-VALUE
    +----------------------------------------
    + save-result  false         true
    +

    \u6253\u5F00 unsafe \u5F00\u5173\uFF0C\u652F\u6301 jdk package \u4E0B\u7684\u7C7B

    \u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0Cwatch/trace/tt/trace/monitor\u7B49\u547D\u4EE4\u4E0D\u652F\u6301java.* package \u4E0B\u7684\u7C7B\u3002\u53EF\u4EE5\u8BBE\u7F6Eunsafe\u4E3A true\uFF0C\u5219\u53EF\u4EE5\u589E\u5F3A\u3002

    $ options unsafe true
    + NAME    BEFORE-VALUE  AFTER-VALUE
    +-----------------------------------
    + unsafe  false         true
    +
    $ watch java.lang.invoke.Invokers callSiteForm
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 61 ms, listenerId: 1
    +

    \u5173\u95ED strict \u6A21\u5F0F\uFF0C\u5141\u8BB8\u5728 ognl \u8868\u8FBE\u5F0F\u91CC\u8BBE\u7F6E\u5BF9\u8C61\u5C5E\u6027

    \u63D0\u793A

    since 3.6.0

    \u5BF9\u4E8E\u65B0\u7528\u6237\uFF0C\u5728\u7F16\u5199 ognl \u8868\u8FBE\u5F0F\u65F6\uFF0C\u53EF\u80FD\u4F1A\u51FA\u73B0\u8BEF\u7528\u3002

    \u6BD4\u5982\u5BF9\u4E8EStudent\uFF0C\u5224\u65AD\u5E74\u9F84\u7B49\u4E8E 18 \u65F6\uFF0C\u53EF\u80FD\u6761\u4EF6\u8868\u8FBE\u5F0F\u4F1A\u8BEF\u5199\u4E3Atarget.age=18\uFF0C\u8FD9\u4E2A\u8868\u8FBE\u5F0F\u5B9E\u9645\u4E0A\u662F\u628A\u5F53\u524D\u5BF9\u8C61\u7684age\u8BBE\u7F6E\u4E3A 18 \u4E86\u3002\u6B63\u786E\u7684\u5199\u6CD5\u662Ftarget.age==18\u3002

    \u4E3A\u4E86\u9632\u6B62\u51FA\u73B0\u7C7B\u4F3C\u4E0A\u9762\u7684\u8BEF\u7528\uFF0CArthas \u9ED8\u8BA4\u542F\u7528strict\u6A21\u5F0F\uFF0C\u5728ognl\u8868\u8FBE\u5F0F\u91CC\uFF0C\u7981\u6B62\u66F4\u65B0\u5BF9\u8C61\u7684 Property \u6216\u8005\u8C03\u7528setter\u51FD\u6570\u3002

    \u4EE5MathGame\u4E3A\u4F8B\uFF0C\u4F1A\u51FA\u73B0\u4EE5\u4E0B\u7684\u9519\u8BEF\u63D0\u793A\u3002

    $ watch demo.MathGame primeFactors 'target' 'target.illegalArgumentCount=1'
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 206 ms, listenerId: 1
    +watch failed, condition is: target.illegalArgumentCount=1, express is: target, By default, strict mode is true, not allowed to set object properties. Want to set object properties, execute \`options strict false\`, visit /Users/admin/logs/arthas/arthas.log for more details.
    +

    \u7528\u6237\u5982\u679C\u786E\u5B9A\u8981\u5728ognl\u8868\u8FBE\u5F0F\u91CC\u66F4\u65B0\u5BF9\u8C61\uFF0C\u53EF\u4EE5\u6267\u884Coptions strict false\uFF0C\u5173\u95EDstrict\u6A21\u5F0F\u3002

    • \u66F4\u591A\u4FE1\u606F\u53C2\u8003\uFF1A https://github.com/alibaba/arthas/issues/2128
    `,21);function L(S,C){const s=d("ExternalLinkIcon");return l(),o("div",null,[r,e("p",null,[e("a",u,[p,b,a(s)])]),m,e("table",null,[v,e("tbody",null,[h,f,k,g,_,e("tr",null,[x,w,e("td",null,[E,e("a",j,[y,a(s)])])]),T,O,A,V,N])]),M])}const U=t(c,[["render",L],["__file","options.html.vue"]]);export{U as default}; diff --git a/3.x/assets/perfcounter.html.04486209.js b/3.x/assets/perfcounter.html.04486209.js new file mode 100644 index 00000000000..6698f23ae42 --- /dev/null +++ b/3.x/assets/perfcounter.html.04486209.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-6746784a","path":"/en/doc/perfcounter.html","title":"perfcounter","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]},{"level":2,"title":"JVM above JDK9","slug":"jvm-above-jdk9","link":"#jvm-above-jdk9","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"GGGGGHT","email":"wz9712203617@gmail.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/perfcounter.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/perfcounter.html.3794d77f.js b/3.x/assets/perfcounter.html.3794d77f.js new file mode 100644 index 00000000000..bcc31922fcc --- /dev/null +++ b/3.x/assets/perfcounter.html.3794d77f.js @@ -0,0 +1,20 @@ +import{_ as s,o as d,c as i,a as e,b as r,e as a,d as t,r as l}from"./app.4d248835.js";const c={},o=e("h1",{id:"perfcounter",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#perfcounter","aria-hidden":"true"},"#"),a(" perfcounter")],-1),v={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-perfcounter",target:"_blank",rel:"noopener noreferrer"},u=e("code",null,"perfcounter",-1),m=a("\u5728\u7EBF\u6559\u7A0B"),p=t(`

    \u63D0\u793A

    \u67E5\u770B\u5F53\u524D JVM \u7684 Perf Counter \u4FE1\u606F

    \u4F7F\u7528\u53C2\u8003

    $ perfcounter
    + java.ci.totalTime                            2325637411
    + java.cls.loadedClasses                       3403
    + java.cls.sharedLoadedClasses                 0
    + java.cls.sharedUnloadedClasses               0
    + java.cls.unloadedClasses                     0
    + java.property.java.version                   11.0.4
    + java.property.java.vm.info                   mixed mode
    + java.property.java.vm.name                   OpenJDK 64-Bit Server VM
    +...
    +

    \u53EF\u4EE5\u7528-d\u53C2\u6570\u6253\u5370\u66F4\u591A\u4FE1\u606F\uFF1A

    $ perfcounter -d
    + Name                                   Variability   Units        Value
    +---------------------------------------------------------------------------------
    + java.ci.totalTime                      Monotonic     Ticks        3242526906
    + java.cls.loadedClasses                 Monotonic     Events       3404
    + java.cls.sharedLoadedClasses           Monotonic     Events       0
    + java.cls.sharedUnloadedClasses         Monotonic     Events       0
    + java.cls.unloadedClasses               Monotonic     Events       0
    +

    jdk9 \u4EE5\u4E0A\u7684\u5E94\u7528

    \u5982\u679C\u6CA1\u6709\u6253\u5370\u51FA\u4FE1\u606F\uFF0C\u5E94\u7528\u5728\u542F\u52A8\u65F6\uFF0C\u52A0\u4E0B\u9762\u7684\u53C2\u6570\uFF1A

    --add-opens java.base/jdk.internal.perf=ALL-UNNAMED --add-exports java.base/jdk.internal.perf=ALL-UNNAMED --add-opens java.management/sun.management.counter.perf=ALL-UNNAMED --add-opens java.management/sun.management.counter=ALL-UNNAMED
    +
    `,8);function h(b,f){const n=l("ExternalLinkIcon");return d(),i("div",null,[o,e("p",null,[e("a",v,[u,m,r(n)])]),p])}const _=s(c,[["render",h],["__file","perfcounter.html.vue"]]);export{_ as default}; diff --git a/3.x/assets/perfcounter.html.a2008d46.js b/3.x/assets/perfcounter.html.a2008d46.js new file mode 100644 index 00000000000..1ee4613112f --- /dev/null +++ b/3.x/assets/perfcounter.html.a2008d46.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-2f05b636","path":"/doc/perfcounter.html","title":"perfcounter","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]},{"level":2,"title":"jdk9 \u4EE5\u4E0A\u7684\u5E94\u7528","slug":"jdk9-\u4EE5\u4E0A\u7684\u5E94\u7528","link":"#jdk9-\u4EE5\u4E0A\u7684\u5E94\u7528","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"GGGGGHT","email":"wz9712203617@gmail.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/perfcounter.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/perfcounter.html.c8d6f07e.js b/3.x/assets/perfcounter.html.c8d6f07e.js new file mode 100644 index 00000000000..2e5b1d78ce7 --- /dev/null +++ b/3.x/assets/perfcounter.html.c8d6f07e.js @@ -0,0 +1,20 @@ +import{_ as s,o as i,c as d,a as e,b as t,e as a,d as r,r as o}from"./app.4d248835.js";const l={},c=e("h1",{id:"perfcounter",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#perfcounter","aria-hidden":"true"},"#"),a(" perfcounter")],-1),v={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-perfcounter",target:"_blank",rel:"noopener noreferrer"},u=e("code",null,"perfcounter",-1),m=a(" online tutorial"),p=r(`

    TIP

    Check the current JVM Perf Counter information.

    Usage

    $ perfcounter
    + java.ci.totalTime                            2325637411
    + java.cls.loadedClasses                       3403
    + java.cls.sharedLoadedClasses                 0
    + java.cls.sharedUnloadedClasses               0
    + java.cls.unloadedClasses                     0
    + java.property.java.version                   11.0.4
    + java.property.java.vm.info                   mixed mode
    + java.property.java.vm.name                   OpenJDK 64-Bit Server VM
    +...
    +

    Print more information with the -d option:

    $ perfcounter -d
    + Name                                   Variability   Units        Value
    +---------------------------------------------------------------------------------
    + java.ci.totalTime                      Monotonic     Ticks        3242526906
    + java.cls.loadedClasses                 Monotonic     Events       3404
    + java.cls.sharedLoadedClasses           Monotonic     Events       0
    + java.cls.sharedUnloadedClasses         Monotonic     Events       0
    + java.cls.unloadedClasses               Monotonic     Events       0
    +

    JVM above JDK9

    If the information is not printed, when the application starts, add the following parameters:

    --add-opens java.base/jdk.internal.perf=ALL-UNNAMED --add-exports java.base/jdk.internal.perf=ALL-UNNAMED --add-opens java.management/sun.management.counter.perf=ALL-UNNAMED --add-opens java.management/sun.management.counter=ALL-UNNAMED
    +
    `,8);function h(b,f){const n=o("ExternalLinkIcon");return i(),d("div",null,[c,e("p",null,[e("a",v,[u,m,t(n)])]),p])}const _=s(l,[["render",h],["__file","perfcounter.html.vue"]]);export{_ as default}; diff --git a/3.x/assets/profiler.html.2fe5463f.js b/3.x/assets/profiler.html.2fe5463f.js new file mode 100644 index 00000000000..4ed7b140777 --- /dev/null +++ b/3.x/assets/profiler.html.2fe5463f.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-13eae420","path":"/doc/profiler.html","title":"profiler","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u542F\u52A8 profiler","slug":"\u542F\u52A8-profiler","link":"#\u542F\u52A8-profiler","children":[]},{"level":2,"title":"\u83B7\u53D6\u5DF2\u91C7\u96C6\u7684 sample \u7684\u6570\u91CF","slug":"\u83B7\u53D6\u5DF2\u91C7\u96C6\u7684-sample-\u7684\u6570\u91CF","link":"#\u83B7\u53D6\u5DF2\u91C7\u96C6\u7684-sample-\u7684\u6570\u91CF","children":[]},{"level":2,"title":"\u67E5\u770B profiler \u72B6\u6001","slug":"\u67E5\u770B-profiler-\u72B6\u6001","link":"#\u67E5\u770B-profiler-\u72B6\u6001","children":[]},{"level":2,"title":"\u505C\u6B62 profiler","slug":"\u505C\u6B62-profiler","link":"#\u505C\u6B62-profiler","children":[{"level":3,"title":"\u751F\u6210 html \u683C\u5F0F\u7ED3\u679C","slug":"\u751F\u6210-html-\u683C\u5F0F\u7ED3\u679C","link":"#\u751F\u6210-html-\u683C\u5F0F\u7ED3\u679C","children":[]}]},{"level":2,"title":"\u901A\u8FC7\u6D4F\u89C8\u5668\u67E5\u770B arthas-output \u4E0B\u9762\u7684 profiler \u7ED3\u679C","slug":"\u901A\u8FC7\u6D4F\u89C8\u5668\u67E5\u770B-arthas-output-\u4E0B\u9762\u7684-profiler-\u7ED3\u679C","link":"#\u901A\u8FC7\u6D4F\u89C8\u5668\u67E5\u770B-arthas-output-\u4E0B\u9762\u7684-profiler-\u7ED3\u679C","children":[]},{"level":2,"title":"profiler \u652F\u6301\u7684 events","slug":"profiler-\u652F\u6301\u7684-events","link":"#profiler-\u652F\u6301\u7684-events","children":[]},{"level":2,"title":"\u6062\u590D\u91C7\u6837","slug":"\u6062\u590D\u91C7\u6837","link":"#\u6062\u590D\u91C7\u6837","children":[]},{"level":2,"title":"\u4F7F\u7528execute\u6765\u6267\u884C\u590D\u6742\u7684\u547D\u4EE4","slug":"\u4F7F\u7528execute\u6765\u6267\u884C\u590D\u6742\u7684\u547D\u4EE4","link":"#\u4F7F\u7528execute\u6765\u6267\u884C\u590D\u6742\u7684\u547D\u4EE4","children":[]},{"level":2,"title":"\u67E5\u770B\u6240\u6709\u652F\u6301\u7684 action","slug":"\u67E5\u770B\u6240\u6709\u652F\u6301\u7684-action","link":"#\u67E5\u770B\u6240\u6709\u652F\u6301\u7684-action","children":[]},{"level":2,"title":"\u67E5\u770B\u7248\u672C","slug":"\u67E5\u770B\u7248\u672C","link":"#\u67E5\u770B\u7248\u672C","children":[]},{"level":2,"title":"\u914D\u7F6E framebuf \u53C2\u6570","slug":"\u914D\u7F6E-framebuf-\u53C2\u6570","link":"#\u914D\u7F6E-framebuf-\u53C2\u6570","children":[]},{"level":2,"title":"\u914D\u7F6E include/exclude \u6765\u8FC7\u6EE4\u6570\u636E","slug":"\u914D\u7F6E-include-exclude-\u6765\u8FC7\u6EE4\u6570\u636E","link":"#\u914D\u7F6E-include-exclude-\u6765\u8FC7\u6EE4\u6570\u636E","children":[]},{"level":2,"title":"\u6307\u5B9A\u6267\u884C\u65F6\u95F4","slug":"\u6307\u5B9A\u6267\u884C\u65F6\u95F4","link":"#\u6307\u5B9A\u6267\u884C\u65F6\u95F4","children":[]},{"level":2,"title":"\u751F\u6210 jfr \u683C\u5F0F\u7ED3\u679C","slug":"\u751F\u6210-jfr-\u683C\u5F0F\u7ED3\u679C","link":"#\u751F\u6210-jfr-\u683C\u5F0F\u7ED3\u679C","children":[]},{"level":2,"title":"\u751F\u6210\u7684\u706B\u7130\u56FE\u91CC\u7684 unknown","slug":"\u751F\u6210\u7684\u706B\u7130\u56FE\u91CC\u7684-unknown","link":"#\u751F\u6210\u7684\u706B\u7130\u56FE\u91CC\u7684-unknown","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/profiler.md","version":"3.7.3"}');export{l as data}; diff --git a/3.x/assets/profiler.html.95a82517.js b/3.x/assets/profiler.html.95a82517.js new file mode 100644 index 00000000000..aece792378b --- /dev/null +++ b/3.x/assets/profiler.html.95a82517.js @@ -0,0 +1,53 @@ +import{_ as n,a as r}from"./arthas-output-svg.30f64f53.js";import{_ as l,o,c as d,a as e,b as t,e as s,d as i,r as c}from"./app.4d248835.js";const u={},p=e("h1",{id:"profiler",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#profiler","aria-hidden":"true"},"#"),s(" profiler")],-1),h={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-profiler",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"profiler",-1),f=s(" online tutorial"),v={class:"custom-container tip"},b=e("p",{class:"custom-container-title"},"TIP",-1),g=s("Generate a flame graph using "),x={href:"https://github.com/jvm-profiling-tools/async-profiler",target:"_blank",rel:"noopener noreferrer"},_=s("async-profiler"),y=i(`

    The profiler command supports generate flame graph for application hotspots.

    The basic usage of the profiler command is profiler action [actionArg]

    Supported Options

    NameSpecification
    actionAction to execute
    actionArgAttribute name pattern
    [i:]sampling interval in ns (default: 10'000'000, i.e. 10 ms)
    [f:]dump output to specified directory
    [d:]run profiling for specified seconds
    [e:]which event to trace (cpu, alloc, lock, cache-misses etc.), default value is cpu

    Start profiler

    $ profiler start
    +Started [cpu] profiling
    +

    TIP

    By default, the sample event is cpu. Can be specified with the --event parameter.

    Get the number of samples collected

    $ profiler getSamples
    +23
    +

    View profiler status

    $ profiler status
    +[cpu] profiling is running for 4 seconds
    +

    Can view which event and sampling time.

    Stop profiler

    Generating html format results

    By default, the result file is html format. You can also specify it with the --format parameter:

    $ profiler stop --format html
    +profiler output file: /tmp/test/arthas-output/20211207-111550.html
    +OK
    +

    Or use the file name name format in the --file parameter. For example, --file /tmp/result.html.

    View profiler results under arthas-output via browser

    `,18),k=s("By default, arthas uses port 3658, which can be opened: "),w={href:"http://localhost:3658/arthas-output/",target:"_blank",rel:"noopener noreferrer"},S=s("http://localhost:3658/arthas-output/"),j=s(" View the "),T=e("code",null,"arthas-output",-1),I=s(" directory below Profiler results:"),B=i('

    Click to view specific results:

    TIP

    If using the chrome browser, may need to be refreshed multiple times.

    Profiler supported events

    Under different platforms and different OSs, the supported events are different. For example, under macos:

    $ profiler list
    +Basic events:
    +  cpu
    +  alloc
    +  lock
    +  wall
    +  itimer
    +

    Under linux

    $ profiler list
    +Basic events:
    +  cpu
    +  alloc
    +  lock
    +  wall
    +  itimer
    +Perf events:
    +  page-faults
    +  context-switches
    +  cycles
    +  instructions
    +  cache-references
    +  cache-misses
    +  branches
    +  branch-misses
    +  bus-cycles
    +  L1-dcache-load-misses
    +  LLC-load-misses
    +  dTLB-load-misses
    +  mem:breakpoint
    +  trace:tracepoint
    +
    `,9),C=s("If you encounter the permissions/configuration issues of the OS itself and then missing some events, you can refer to the "),P={href:"https://github.com/jvm-profiling-tools/async-profiler",target:"_blank",rel:"noopener noreferrer"},$=s("async-profiler"),V=s(" documentation."),A=i(`

    You can use the --event parameter to specify the event to sample, such as sampling the alloc event:

    $ profiler start --event alloc
    +

    Resume sampling

    $ profiler resume
    +Started [cpu] profiling
    +

    The difference between start and resume is: start is the new start sampling, resume will retain the data of the last stop.

    You can verify the number of samples by executing profiler getSamples.

    Use execute action to execute complex commands

    For example, start sampling:

    profiler execute 'start,framebuf=5000000'
    +

    Stop sampling and save to the specified file:

    profiler execute 'stop,file=/tmp/result.html'
    +
    `,11),L=s("Specific format reference: "),N={href:"https://github.com/jvm-profiling-tools/async-profiler/blob/v2.5/src/arguments.cpp#L50",target:"_blank",rel:"noopener noreferrer"},F=s("arguments.cpp"),O=i(`

    View all supported actions

    $ profiler actions
    +Supported Actions: [resume, dumpCollapsed, getSamples, start, list, execute, version, stop, load, dumpFlat, actions, dumpTraces, status]
    +

    View version

    $ profiler version
    +Async-profiler 1.6 built on Sep  9 2019
    +Copyright 2019 Andrei Pangin
    +

    Configure framebuf option

    TIP

    you encounter [frame_buffer_overflow] in the generated result, you need to increase the framebuf (the default value is 1'000'000), which can be configured explicitly, such as:

    profiler start --framebuf 5000000
    +

    Configure include/exclude to filter data

    If the application is complex and generates a lot of content, and you want to focus on only part of the data, you can filter by include/exclude. such as

    profiler start --include'java/*' --include'demo/*' --exclude'*Unsafe.park*'
    +

    Both include/exclude support setting multiple values, but need to be configured at the end of the command line.

    Specify execution time

    For example, if you want the profiler to automatically end after 300 seconds, you can specify it with the -d/--duration parameter:

    profiler start --duration 300
    +

    Generate jfr format result

    Note that jfr only supports configuration at start. If it is specified at stop, it will not take effect.

    profiler start --file /tmp/test.jfr
    +

    The file parameter supports some variables:

    • Timestamp: --file /tmp/test-%t.jfr
    • Process ID: --file /tmp/test-%p.jfr

    The generated results can be viewed with tools that support the jfr format. such as:

    • JDK Mission Control: https://github.com/openjdk/jmc
    • JProfiler: https://github.com/alibaba/arthas/issues/1416

    The 'unknown' in profiler result

    • https://github.com/jvm-profiling-tools/async-profiler/discussions/409
    `,23);function q(G,U){const a=c("ExternalLinkIcon");return o(),d("div",null,[p,e("p",null,[e("a",h,[m,f,t(a)])]),e("div",v,[b,e("p",null,[g,e("a",x,[_,t(a)])])]),y,e("p",null,[k,e("a",w,[S,t(a)]),j,T,I]),B,e("p",null,[C,e("a",P,[$,t(a)]),V]),A,e("p",null,[L,e("a",N,[F,t(a)])]),O])}const D=l(u,[["render",q],["__file","profiler.html.vue"]]);export{D as default}; diff --git a/3.x/assets/profiler.html.e7f88019.js b/3.x/assets/profiler.html.e7f88019.js new file mode 100644 index 00000000000..305024c3050 --- /dev/null +++ b/3.x/assets/profiler.html.e7f88019.js @@ -0,0 +1,53 @@ +import{_ as r,a as t}from"./arthas-output-svg.30f64f53.js";import{_ as l,o as d,c,a as e,b as n,e as a,d as i,r as o}from"./app.4d248835.js";const p={},u=e("h1",{id:"profiler",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#profiler","aria-hidden":"true"},"#"),a(" profiler")],-1),h={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-profiler",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"profiler",-1),v=a("\u5728\u7EBF\u6559\u7A0B"),b={class:"custom-container tip"},f=e("p",{class:"custom-container-title"},"\u63D0\u793A",-1),g=a("\u4F7F\u7528"),_={href:"https://github.com/jvm-profiling-tools/async-profiler",target:"_blank",rel:"noopener noreferrer"},x=a("async-profiler"),k=a("\u751F\u6210\u706B\u7130\u56FE"),y=i(`

    profiler \u547D\u4EE4\u652F\u6301\u751F\u6210\u5E94\u7528\u70ED\u70B9\u7684\u706B\u7130\u56FE\u3002\u672C\u8D28\u4E0A\u662F\u901A\u8FC7\u4E0D\u65AD\u7684\u91C7\u6837\uFF0C\u7136\u540E\u628A\u6536\u96C6\u5230\u7684\u91C7\u6837\u7ED3\u679C\u751F\u6210\u706B\u7130\u56FE\u3002

    profiler \u547D\u4EE4\u57FA\u672C\u8FD0\u884C\u7ED3\u6784\u662F profiler action [actionArg]

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    action\u8981\u6267\u884C\u7684\u64CD\u4F5C
    actionArg\u5C5E\u6027\u540D\u6A21\u5F0F
    [i:]\u91C7\u6837\u95F4\u9694\uFF08\u5355\u4F4D\uFF1Ans\uFF09\uFF08\u9ED8\u8BA4\u503C\uFF1A10'000'000\uFF0C\u5373 10 ms\uFF09
    [f:]\u5C06\u8F93\u51FA\u8F6C\u50A8\u5230\u6307\u5B9A\u8DEF\u5F84
    [d:]\u8FD0\u884C\u8BC4\u6D4B\u6307\u5B9A\u79D2
    [e:]\u8981\u8DDF\u8E2A\u54EA\u4E2A\u4E8B\u4EF6\uFF08cpu, alloc, lock, cache-misses \u7B49\uFF09\uFF0C\u9ED8\u8BA4\u662F cpu

    \u542F\u52A8 profiler

    $ profiler start
    +Started [cpu] profiling
    +

    \u63D0\u793A

    \u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u751F\u6210\u7684\u662F cpu \u7684\u706B\u7130\u56FE\uFF0C\u5373 event \u4E3Acpu\u3002\u53EF\u4EE5\u7528--event\u53C2\u6570\u6765\u6307\u5B9A\u3002

    \u83B7\u53D6\u5DF2\u91C7\u96C6\u7684 sample \u7684\u6570\u91CF

    $ profiler getSamples
    +23
    +

    \u67E5\u770B profiler \u72B6\u6001

    $ profiler status
    +[cpu] profiling is running for 4 seconds
    +

    \u53EF\u4EE5\u67E5\u770B\u5F53\u524D profiler \u5728\u91C7\u6837\u54EA\u79CDevent\u548C\u91C7\u6837\u65F6\u95F4\u3002

    \u505C\u6B62 profiler

    \u751F\u6210 html \u683C\u5F0F\u7ED3\u679C

    \u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u7ED3\u679C\u6587\u4EF6\u662Fhtml\u683C\u5F0F\uFF0C\u4E5F\u53EF\u4EE5\u7528--format\u53C2\u6570\u6307\u5B9A\uFF1A

    $ profiler stop --format html
    +profiler output file: /tmp/test/arthas-output/20211207-111550.html
    +OK
    +

    \u6216\u8005\u5728--file\u53C2\u6570\u91CC\u7528\u6587\u4EF6\u540D\u6307\u540D\u683C\u5F0F\u3002\u6BD4\u5982--file /tmp/result.html \u3002

    \u901A\u8FC7\u6D4F\u89C8\u5668\u67E5\u770B arthas-output \u4E0B\u9762\u7684 profiler \u7ED3\u679C

    `,18),j=a("\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0Carthas \u4F7F\u7528 3658 \u7AEF\u53E3\uFF0C\u5219\u53EF\u4EE5\u6253\u5F00\uFF1A "),S={href:"http://localhost:3658/arthas-output/",target:"_blank",rel:"noopener noreferrer"},$=a("http://localhost:3658/arthas-output/"),w=a(" \u67E5\u770B\u5230"),L=e("code",null,"arthas-output",-1),q=a("\u76EE\u5F55\u4E0B\u9762\u7684 profiler \u7ED3\u679C\uFF1A"),B=i('

    \u70B9\u51FB\u53EF\u4EE5\u67E5\u770B\u5177\u4F53\u7684\u7ED3\u679C\uFF1A

    \u63D0\u793A

    \u5982\u679C\u662F chrome \u6D4F\u89C8\u5668\uFF0C\u53EF\u80FD\u9700\u8981\u591A\u6B21\u5237\u65B0\u3002

    profiler \u652F\u6301\u7684 events

    \u5728\u4E0D\u540C\u7684\u5E73\u53F0\uFF0C\u4E0D\u540C\u7684 OS \u4E0B\u9762\uFF0C\u652F\u6301\u7684 events \u5404\u6709\u4E0D\u540C\u3002\u6BD4\u5982\u5728 macos \u4E0B\u9762\uFF1A

    $ profiler list
    +Basic events:
    +  cpu
    +  alloc
    +  lock
    +  wall
    +  itimer
    +

    \u5728 linux \u4E0B\u9762

    $ profiler list
    +Basic events:
    +  cpu
    +  alloc
    +  lock
    +  wall
    +  itimer
    +Perf events:
    +  page-faults
    +  context-switches
    +  cycles
    +  instructions
    +  cache-references
    +  cache-misses
    +  branches
    +  branch-misses
    +  bus-cycles
    +  L1-dcache-load-misses
    +  LLC-load-misses
    +  dTLB-load-misses
    +  mem:breakpoint
    +  trace:tracepoint
    +
    `,9),A=a("\u5982\u679C\u9047\u5230 OS \u672C\u8EAB\u7684\u6743\u9650/\u914D\u7F6E\u95EE\u9898\uFF0C\u7136\u540E \b \u7F3A\u5C11\u90E8\u5206 event\uFF0C\u53EF\u4EE5\u53C2\u8003"),C=e("code",null,"async-profiler",-1),N=a("\u672C\u8EAB\u6587\u6863\uFF1A"),V={href:"https://github.com/jvm-profiling-tools/async-profiler",target:"_blank",rel:"noopener noreferrer"},E=a("async-profiler"),I=i(`

    \u53EF\u4EE5\u7528--event\u53C2\u6570\u6307\u5B9A\u8981\u91C7\u6837\u7684\u4E8B\u4EF6\uFF0C\u6BD4\u5982\u5BF9alloc\u4E8B\u4EF6\u8FDB\u5165\u91C7\u6837\uFF1A

    $ profiler start --event alloc
    +

    \u6062\u590D\u91C7\u6837

    $ profiler resume
    +Started [cpu] profiling
    +

    start\u548Cresume\u7684\u533A\u522B\u662F\uFF1Astart\u662F\u65B0\u5F00\u59CB\u91C7\u6837\uFF0Cresume\u4F1A\u4FDD\u7559\u4E0A\u6B21stop\u65F6\u7684\u6570\u636E\u3002

    \u901A\u8FC7\u6267\u884Cprofiler getSamples\u53EF\u4EE5\u67E5\u770B samples \u7684\u6570\u91CF\u6765\u9A8C\u8BC1\u3002

    \u4F7F\u7528execute\u6765\u6267\u884C\u590D\u6742\u7684\u547D\u4EE4

    \u6BD4\u5982\u5F00\u59CB\u91C7\u6837\uFF1A

    profiler execute 'start,framebuf=5000000'
    +

    \u505C\u6B62\u91C7\u6837\uFF0C\u5E76\u4FDD\u5B58\u5230\u6307\u5B9A\u6587\u4EF6\u91CC\uFF1A

    profiler execute 'stop,file=/tmp/result.html'
    +
    `,11),O=a("\u5177\u4F53\u7684\u683C\u5F0F\u53C2\u8003\uFF1A "),P={href:"https://github.com/jvm-profiling-tools/async-profiler/blob/v2.5/src/arguments.cpp#L50",target:"_blank",rel:"noopener noreferrer"},T=a("arguments.cpp"),D=i(`

    \u67E5\u770B\u6240\u6709\u652F\u6301\u7684 action

    $ profiler actions
    +Supported Actions: [resume, dumpCollapsed, getSamples, start, list, execute, version, stop, load, dumpFlat, actions, dumpTraces, status]
    +

    \u67E5\u770B\u7248\u672C

    $ profiler version
    +Async-profiler 1.6 built on Sep  9 2019
    +Copyright 2019 Andrei Pangin
    +

    \u914D\u7F6E framebuf \u53C2\u6570

    \u5982\u679C\u9047\u5230\u751F\u6210\u7684\u706B\u7130\u56FE\u6709 [frame_buffer_overflow]\uFF0C\u5219\u9700\u8981\u589E\u5927 framebuf\uFF08\u9ED8\u8BA4\u503C\u662F 1'000'000\uFF09\uFF0C\u53EF\u4EE5\u663E\u5F0F\u914D\u7F6E\uFF0C\u6BD4\u5982\uFF1A

    profiler start --framebuf 5000000
    +

    \u914D\u7F6E include/exclude \u6765\u8FC7\u6EE4\u6570\u636E

    \u5982\u679C\u5E94\u7528\u6BD4\u8F83\u590D\u6742\uFF0C\u751F\u6210\u7684\u5185\u5BB9\u5F88\u591A\uFF0C\u60F3\u53EA\u5173\u6CE8\u90E8\u5206\u6570\u636E\uFF0C\u53EF\u4EE5\u901A\u8FC7 include/exclude \u6765\u8FC7\u6EE4\u3002\u6BD4\u5982

    profiler start --include 'java/*' --include 'demo/*' --exclude '*Unsafe.park*'
    +

    include/exclude \u90FD\u652F\u6301\u8BBE\u7F6E\u591A\u4E2A\u503C \uFF0C\u4F46\u662F\u9700\u8981\u914D\u7F6E\u5728\u547D\u4EE4\u884C\u7684\u6700\u540E\u3002

    \u6307\u5B9A\u6267\u884C\u65F6\u95F4

    \u6BD4\u5982\uFF0C\u5E0C\u671B profiler \u6267\u884C 300 \u79D2\u81EA\u52A8\u7ED3\u675F\uFF0C\u53EF\u4EE5\u7528 -d/--duration \u53C2\u6570\u6307\u5B9A\uFF1A

    profiler start --duration 300
    +

    \u751F\u6210 jfr \u683C\u5F0F\u7ED3\u679C

    \u6CE8\u610F\uFF0Cjfr \u53EA\u652F\u6301\u5728 start\u65F6\u914D\u7F6E\u3002\u5982\u679C\u662F\u5728stop\u65F6\u6307\u5B9A\uFF0C\u5219\u4E0D\u4F1A\u751F\u6548\u3002

    profiler start --file /tmp/test.jfr
    +

    file\u53C2\u6570\u652F\u6301\u4E00\u4E9B\u53D8\u91CF\uFF1A

    • \u65F6\u95F4\u6233\uFF1A --file /tmp/test-%t.jfr
    • \u8FDB\u7A0B ID\uFF1A --file /tmp/test-%p.jfr

    \u751F\u6210\u7684\u7ED3\u679C\u53EF\u4EE5\u7528\u652F\u6301 jfr \u683C\u5F0F\u7684\u5DE5\u5177\u6765\u67E5\u770B\u3002\u6BD4\u5982\uFF1A

    • JDK Mission Control \uFF1A https://github.com/openjdk/jmc
    • JProfiler \uFF1A https://github.com/alibaba/arthas/issues/1416

    \u751F\u6210\u7684\u706B\u7130\u56FE\u91CC\u7684 unknown

    • https://github.com/jvm-profiling-tools/async-profiler/discussions/409
    `,23);function J(K,F){const s=o("ExternalLinkIcon");return d(),c("div",null,[u,e("p",null,[e("a",h,[m,v,n(s)])]),e("div",b,[f,e("p",null,[g,e("a",_,[x,n(s)]),k])]),y,e("p",null,[j,e("a",S,[$,n(s)]),w,L,q]),B,e("p",null,[A,C,N,e("a",V,[E,n(s)])]),I,e("p",null,[O,e("a",P,[T,n(s)])]),D])}const z=l(p,[["render",J],["__file","profiler.html.vue"]]);export{z as default}; diff --git a/3.x/assets/profiler.html.ecb6c417.js b/3.x/assets/profiler.html.ecb6c417.js new file mode 100644 index 00000000000..cf75eacd443 --- /dev/null +++ b/3.x/assets/profiler.html.ecb6c417.js @@ -0,0 +1 @@ +const e=JSON.parse(`{"key":"v-a7e90ae8","path":"/en/doc/profiler.html","title":"profiler","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Supported Options","slug":"supported-options","link":"#supported-options","children":[]},{"level":2,"title":"Start profiler","slug":"start-profiler","link":"#start-profiler","children":[]},{"level":2,"title":"Get the number of samples collected","slug":"get-the-number-of-samples-collected","link":"#get-the-number-of-samples-collected","children":[]},{"level":2,"title":"View profiler status","slug":"view-profiler-status","link":"#view-profiler-status","children":[]},{"level":2,"title":"Stop profiler","slug":"stop-profiler","link":"#stop-profiler","children":[{"level":3,"title":"Generating html format results","slug":"generating-html-format-results","link":"#generating-html-format-results","children":[]}]},{"level":2,"title":"View profiler results under arthas-output via browser","slug":"view-profiler-results-under-arthas-output-via-browser","link":"#view-profiler-results-under-arthas-output-via-browser","children":[]},{"level":2,"title":"Profiler supported events","slug":"profiler-supported-events","link":"#profiler-supported-events","children":[]},{"level":2,"title":"Resume sampling","slug":"resume-sampling","link":"#resume-sampling","children":[]},{"level":2,"title":"Use execute action to execute complex commands","slug":"use-execute-action-to-execute-complex-commands","link":"#use-execute-action-to-execute-complex-commands","children":[]},{"level":2,"title":"View all supported actions","slug":"view-all-supported-actions","link":"#view-all-supported-actions","children":[]},{"level":2,"title":"View version","slug":"view-version","link":"#view-version","children":[]},{"level":2,"title":"Configure framebuf option","slug":"configure-framebuf-option","link":"#configure-framebuf-option","children":[]},{"level":2,"title":"Configure include/exclude to filter data","slug":"configure-include-exclude-to-filter-data","link":"#configure-include-exclude-to-filter-data","children":[]},{"level":2,"title":"Specify execution time","slug":"specify-execution-time","link":"#specify-execution-time","children":[]},{"level":2,"title":"Generate jfr format result","slug":"generate-jfr-format-result","link":"#generate-jfr-format-result","children":[]},{"level":2,"title":"The 'unknown' in profiler result","slug":"the-unknown-in-profiler-result","link":"#the-unknown-in-profiler-result","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/profiler.md","version":"3.7.3"}`);export{e as data}; diff --git a/3.x/assets/pwd.html.4f686509.js b/3.x/assets/pwd.html.4f686509.js new file mode 100644 index 00000000000..cc6045d9917 --- /dev/null +++ b/3.x/assets/pwd.html.4f686509.js @@ -0,0 +1,2 @@ +import{_ as s,o as t,c as o,a as e,b as r,e as a,d as c,r as d}from"./app.4d248835.js";const i={},l=e("h1",{id:"pwd",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#pwd","aria-hidden":"true"},"#"),a(" pwd")],-1),h={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-pwd",target:"_blank",rel:"noopener noreferrer"},p=e("code",null,"pwd",-1),u=a(" online tutorial"),_=c(`

    TIP

    Return working directory name

    Usage

    $ pwd
    +
    `,3);function m(f,g){const n=d("ExternalLinkIcon");return t(),o("div",null,[l,e("p",null,[e("a",h,[p,u,r(n)])]),_])}const b=s(i,[["render",m],["__file","pwd.html.vue"]]);export{b as default}; diff --git a/3.x/assets/pwd.html.5c70637d.js b/3.x/assets/pwd.html.5c70637d.js new file mode 100644 index 00000000000..a5916b31ffa --- /dev/null +++ b/3.x/assets/pwd.html.5c70637d.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-1b8ba240","path":"/en/doc/pwd.html","title":"pwd","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/pwd.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/pwd.html.b8813280.js b/3.x/assets/pwd.html.b8813280.js new file mode 100644 index 00000000000..33deb797ce0 --- /dev/null +++ b/3.x/assets/pwd.html.b8813280.js @@ -0,0 +1 @@ +const a=JSON.parse('{"key":"v-1c2d8c2c","path":"/doc/pwd.html","title":"pwd","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/pwd.md","version":"3.7.3"}');export{a as data}; diff --git a/3.x/assets/pwd.html.d34432c3.js b/3.x/assets/pwd.html.d34432c3.js new file mode 100644 index 00000000000..04c3ffa6259 --- /dev/null +++ b/3.x/assets/pwd.html.d34432c3.js @@ -0,0 +1,2 @@ +import{_ as s,o as t,c as o,a as e,b as c,e as a,d,r}from"./app.4d248835.js";const i={},l=e("h1",{id:"pwd",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#pwd","aria-hidden":"true"},"#"),a(" pwd")],-1),h={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-pwd",target:"_blank",rel:"noopener noreferrer"},p=e("code",null,"pwd",-1),_=a("\u5728\u7EBF\u6559\u7A0B"),u=d(`

    \u63D0\u793A

    \u8FD4\u56DE\u5F53\u524D\u7684\u5DE5\u4F5C\u76EE\u5F55\uFF0C\u548C linux \u547D\u4EE4\u7C7B\u4F3C

    \u4F7F\u7528\u53C2\u8003

    $ pwd
    +
    `,3);function m(f,v){const n=r("ExternalLinkIcon");return t(),o("div",null,[l,e("p",null,[e("a",h,[p,_,c(n)])]),u])}const b=s(i,[["render",m],["__file","pwd.html.vue"]]);export{b as default}; diff --git a/3.x/assets/qqgroup3_qr.f82e3fd0.js b/3.x/assets/qqgroup3_qr.f82e3fd0.js new file mode 100644 index 00000000000..7d9c67f70be --- /dev/null +++ b/3.x/assets/qqgroup3_qr.f82e3fd0.js @@ -0,0 +1 @@ +const s="/3.x/images/dingding_qr.jpg",g="/3.x/images/dingding2_qr.jpg",i="/3.x/images/dingding3_qr.jpg",_="/3.x/images/qqgroup_qr.jpg",o="/3.x/images/qqgroup3_qr.jpg";export{s as _,g as a,i as b,_ as c,o as d}; diff --git a/3.x/assets/quick-start.html.2afac43e.js b/3.x/assets/quick-start.html.2afac43e.js new file mode 100644 index 00000000000..1770609f2dc --- /dev/null +++ b/3.x/assets/quick-start.html.2afac43e.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-d98607ca","path":"/en/doc/quick-start.html","title":"Quick Start","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"1. Start math-game","slug":"_1-start-math-game","link":"#_1-start-math-game","children":[]},{"level":2,"title":"2. Start Arthas","slug":"_2-start-arthas","link":"#_2-start-arthas","children":[{"level":3,"title":"Linux/Unix/Mac","slug":"linux-unix-mac","link":"#linux-unix-mac","children":[]}]},{"level":2,"title":"3. Check the Dashboard","slug":"_3-check-the-dashboard","link":"#_3-check-the-dashboard","children":[]},{"level":2,"title":"4. Get the Main Class of the math-game process with the thread command","slug":"_4-get-the-main-class-of-the-math-game-process-with-the-thread-command","link":"#_4-get-the-main-class-of-the-math-game-process-with-the-thread-command","children":[]},{"level":2,"title":"5. Decompile Main Class with jad command","slug":"_5-decompile-main-class-with-jad-command","link":"#_5-decompile-main-class-with-jad-command","children":[]},{"level":2,"title":"6. watch","slug":"_6-watch","link":"#_6-watch","children":[]},{"level":2,"title":"7. Exit Arthas","slug":"_7-exit-arthas","link":"#_7-exit-arthas","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/quick-start.md","version":"3.7.3"}');export{t as data}; diff --git a/3.x/assets/quick-start.html.463266ab.js b/3.x/assets/quick-start.html.463266ab.js new file mode 100644 index 00000000000..931a202758b --- /dev/null +++ b/3.x/assets/quick-start.html.463266ab.js @@ -0,0 +1 @@ +const a=JSON.parse('{"key":"v-5afc3a07","path":"/doc/quick-start.html","title":"\u5FEB\u901F\u5165\u95E8","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"1. \u542F\u52A8 math-game","slug":"_1-\u542F\u52A8-math-game","link":"#_1-\u542F\u52A8-math-game","children":[]},{"level":2,"title":"2. \u542F\u52A8 arthas","slug":"_2-\u542F\u52A8-arthas","link":"#_2-\u542F\u52A8-arthas","children":[]},{"level":2,"title":"3. \u67E5\u770B dashboard","slug":"_3-\u67E5\u770B-dashboard","link":"#_3-\u67E5\u770B-dashboard","children":[]},{"level":2,"title":"4. \u901A\u8FC7 thread \u547D\u4EE4\u6765\u83B7\u53D6\u5230math-game\u8FDB\u7A0B\u7684 Main Class","slug":"_4-\u901A\u8FC7-thread-\u547D\u4EE4\u6765\u83B7\u53D6\u5230math-game\u8FDB\u7A0B\u7684-main-class","link":"#_4-\u901A\u8FC7-thread-\u547D\u4EE4\u6765\u83B7\u53D6\u5230math-game\u8FDB\u7A0B\u7684-main-class","children":[]},{"level":2,"title":"5. \u901A\u8FC7 jad \u6765\u53CD\u7F16\u8BD1 Main Class","slug":"_5-\u901A\u8FC7-jad-\u6765\u53CD\u7F16\u8BD1-main-class","link":"#_5-\u901A\u8FC7-jad-\u6765\u53CD\u7F16\u8BD1-main-class","children":[]},{"level":2,"title":"6. watch","slug":"_6-watch","link":"#_6-watch","children":[]},{"level":2,"title":"7. \u9000\u51FA arthas","slug":"_7-\u9000\u51FA-arthas","link":"#_7-\u9000\u51FA-arthas","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/quick-start.md","version":"3.7.3"}');export{a as data}; diff --git a/3.x/assets/quick-start.html.70301235.js b/3.x/assets/quick-start.html.70301235.js new file mode 100644 index 00000000000..f8c497d88ac --- /dev/null +++ b/3.x/assets/quick-start.html.70301235.js @@ -0,0 +1,165 @@ +import{_ as l,o as i,c as u,a as s,b as a,w as o,e as n,d as e,r as c}from"./app.4d248835.js";const r={},k=s("h1",{id:"quick-start",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#quick-start","aria-hidden":"true"},"#"),n(" Quick Start")],-1),d=n("You can practice it yourself by following the instructions below, or you can use our "),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=arthas-basics",target:"_blank",rel:"noopener noreferrer"},b=n("online tutorials"),v=n(" to get started quickly."),h=e(`

    1. Start math-game

    curl -O https://arthas.aliyun.com/math-game.jar
    +java -jar math-game.jar
    +

    math-game is a simple program that generates a random number every second, then it finds all prime factors of that number.

    `,3),g=n("The source code of "),f=s("code",null,"math-game",-1),_=n(": "),w={href:"https://github.com/alibaba/arthas/blob/master/math-game/src/main/java/demo/MathGame.java",target:"_blank",rel:"noopener noreferrer"},y=n("View"),I=e(`

    2. Start Arthas

    Linux/Unix/Mac

    Execute the following command in the command line:

    curl -O https://arthas.aliyun.com/arthas-boot3.jar
    +java -jar arthas-boot3.jar
    +
    • The user to run this command MUST have the same privilege as the owner of the target process, as a simple example you can try the following command if the target process is managed by user admin: sudo su admin && java -jar arthas-boot3.jar or sudo -u admin -EH java -jar arthas-boot3.jar
    • If you cannot be able to attach to the target process, please check the logs under ~/logs/arthas for troubleshooting.
    • java -jar arthas-boot3.jar -h print usage.

    Select the target Java process to attach:

    $ $ java -jar arthas-boot3.jar
    +* [1]: 35542
    +  [2]: 71560 math-game.jar
    +

    The math-game process is the second as shown above, press '2' then 'Enter'. Arthas will attach to the target process, and start to output:

    [INFO] Try to attach process 71560
    +[INFO] Attach process 71560 success.
    +[INFO] arthas-client connect 127.0.0.1 3658
    +  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \\ |  .--. ''--.  .--'|  '--'  | /  O  \\ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |\`.  \`-.
    +|  | |  ||  |\\  \\    |  |   |  |  |  ||  | |  |.-'    |
    +\`--' \`--'\`--' '--'   \`--'   \`--'  \`--'\`--' \`--'\`-----'
    +
    +
    +wiki: https://arthas.aliyun.com/3.x/doc
    +version: 3.0.5.20181127201536
    +pid: 71560
    +time: 2018-11-28 19:16:24
    +
    +$
    +

    3. Check the Dashboard

    `,10),x=n("Type '"),j=n("dashboard"),A=n("' and hit 'ENTER', a brief report on the current process will be shown as below, pls. "),M=s("code",null,"Ctrl+C",-1),N=n(" to stop:"),L=e(`
    $ dashboard
    +ID     NAME                   GROUP          PRIORI STATE  %CPU    TIME   INTERRU DAEMON
    +17     pool-2-thread-1        system         5      WAITIN 67      0:0    false   false
    +27     Timer-for-arthas-dashb system         10     RUNNAB 32      0:0    false   true
    +11     AsyncAppender-Worker-a system         9      WAITIN 0       0:0    false   true
    +9      Attach Listener        system         9      RUNNAB 0       0:0    false   true
    +3      Finalizer              system         8      WAITIN 0       0:0    false   true
    +2      Reference Handler      system         10     WAITIN 0       0:0    false   true
    +4      Signal Dispatcher      system         9      RUNNAB 0       0:0    false   true
    +26     as-command-execute-dae system         10     TIMED_ 0       0:0    false   true
    +13     job-timeout            system         9      TIMED_ 0       0:0    false   true
    +1      main                   main           5      TIMED_ 0       0:0    false   false
    +14     nioEventLoopGroup-2-1  system         10     RUNNAB 0       0:0    false   false
    +18     nioEventLoopGroup-2-2  system         10     RUNNAB 0       0:0    false   false
    +23     nioEventLoopGroup-2-3  system         10     RUNNAB 0       0:0    false   false
    +15     nioEventLoopGroup-3-1  system         10     RUNNAB 0       0:0    false   false
    +Memory             used   total max    usage GC
    +heap               32M    155M  1820M  1.77% gc.ps_scavenge.count  4
    +ps_eden_space      14M    65M   672M   2.21% gc.ps_scavenge.time(m 166
    +ps_survivor_space  4M     5M    5M           s)
    +ps_old_gen         12M    85M   1365M  0.91% gc.ps_marksweep.count 0
    +nonheap            20M    23M   -1           gc.ps_marksweep.time( 0
    +code_cache         3M     5M    240M   1.32% ms )
    +Runtime
    +os.name                Mac OS X
    +os.version             10.13.4
    +java.version           1.8.0_162
    +java.home              /Library/Java/JavaVir
    +                       tualMachines/jdk1.8.0
    +                       _162.jdk/Contents/Hom
    +                       e/jre
    +

    4. Get the Main Class of the math-game process with the thread command

    thread 1 will print the stack of the thread with ID 1, which usually the main function thread.

    $ thread 1 | grep 'main('
    +    at demo.MathGame.main(MathGame.java:17)
    +

    5. Decompile Main Class with jad command

    $ jad demo.MathGame
    +
    +ClassLoader:
    ++-sun.misc.Launcher$AppClassLoader@3d4eac69
    +  +-sun.misc.Launcher$ExtClassLoader@66350f69
    +
    +Location:
    +/tmp/math-game.jar
    +
    +/*
    + * Decompiled with CFR 0_132.
    + */
    +package demo;
    +
    +import java.io.PrintStream;
    +import java.util.ArrayList;
    +import java.util.Iterator;
    +import java.util.List;
    +import java.util.Random;
    +import java.util.concurrent.TimeUnit;
    +
    +public class MathGame {
    +    private static Random random = new Random();
    +    private int illegalArgumentCount = 0;
    +
    +    public static void main(String[] args) throws InterruptedException {
    +        MathGame game = new MathGame();
    +        do {
    +            game.run();
    +            TimeUnit.SECONDS.sleep(1L);
    +        } while (true);
    +    }
    +
    +    public void run() throws InterruptedException {
    +        try {
    +            int number = random.nextInt();
    +            List<Integer> primeFactors = this.primeFactors(number);
    +            MathGame.print(number, primeFactors);
    +        }
    +        catch (Exception e) {
    +            System.out.println(String.format("illegalArgumentCount:%3d, ", this.illegalArgumentCount) + e.getMessage());
    +        }
    +    }
    +
    +    public static void print(int number, List<Integer> primeFactors) {
    +        StringBuffer sb = new StringBuffer("" + number + "=");
    +        Iterator<Integer> iterator = primeFactors.iterator();
    +        while (iterator.hasNext()) {
    +            int factor = iterator.next();
    +            sb.append(factor).append('*');
    +        }
    +        if (sb.charAt(sb.length() - 1) == '*') {
    +            sb.deleteCharAt(sb.length() - 1);
    +        }
    +        System.out.println(sb);
    +    }
    +
    +    public List<Integer> primeFactors(int number) {
    +        if (number < 2) {
    +            ++this.illegalArgumentCount;
    +            throw new IllegalArgumentException("number is: " + number + ", need >= 2");
    +        }
    +        ArrayList<Integer> result = new ArrayList<Integer>();
    +        int i = 2;
    +        while (i <= number) {
    +            if (number % i == 0) {
    +                result.add(i);
    +                number /= i;
    +                i = 2;
    +                continue;
    +            }
    +            ++i;
    +        }
    +        return result;
    +    }
    +}
    +
    +Affect(row-cnt:1) cost in 970 ms.
    +

    6. watch

    `,7),E=n("Use '"),T=n("watch"),C=n("' to view the return object of "),R=s("code",null,"demo.MathGame#primeFactors",-1),S=n(":"),q=e(`
    $ watch demo.MathGame primeFactors returnObj
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 107 ms.
    +ts=2018-11-28 19:22:30; [cost=1.715367ms] result=null
    +ts=2018-11-28 19:22:31; [cost=0.185203ms] result=null
    +ts=2018-11-28 19:22:32; [cost=19.012416ms] result=@ArrayList[
    +    @Integer[5],
    +    @Integer[47],
    +    @Integer[2675531],
    +]
    +ts=2018-11-28 19:22:33; [cost=0.311395ms] result=@ArrayList[
    +    @Integer[2],
    +    @Integer[5],
    +    @Integer[317],
    +    @Integer[503],
    +    @Integer[887],
    +]
    +ts=2018-11-28 19:22:34; [cost=10.136007ms] result=@ArrayList[
    +    @Integer[2],
    +    @Integer[2],
    +    @Integer[3],
    +    @Integer[3],
    +    @Integer[31],
    +    @Integer[717593],
    +]
    +ts=2018-11-28 19:22:35; [cost=29.969732ms] result=@ArrayList[
    +    @Integer[5],
    +    @Integer[29],
    +    @Integer[7651739],
    +]
    +
    `,1),G=n("Pls. refer to "),U={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=arthas-advanced",target:"_blank",rel:"noopener noreferrer"},F=n("Arthas advanced"),O=n(" for more information."),B=s("h2",{id:"_7-exit-arthas",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#_7-exit-arthas","aria-hidden":"true"},"#"),n(" 7. Exit Arthas")],-1),D=s("p",null,[n("Use "),s("code",null,"quit"),n(" or "),s("code",null,"exit"),n(" to disconnect from the current process. The Arthas instance attached to the target process continues to live inside the process, and its port is standby for further connection.")],-1),$=s("p",null,[n("Use "),s("code",null,"stop"),n(" command to have Arthas completely quit from the target process.")],-1);function P(V,W){const t=c("ExternalLinkIcon"),p=c("RouterLink");return i(),u("div",null,[k,s("p",null,[d,s("a",m,[b,a(t)]),v]),h,s("p",null,[g,f,_,s("a",w,[y,a(t)])]),I,s("p",null,[x,a(p,{to:"/en/doc/dashboard.html"},{default:o(()=>[j]),_:1}),A,M,N]),L,s("p",null,[E,a(p,{to:"/en/doc/watch.html"},{default:o(()=>[T]),_:1}),C,R,S]),q,s("p",null,[G,s("a",U,[F,a(t)]),O]),B,D,$])}const J=l(r,[["render",P],["__file","quick-start.html.vue"]]);export{J as default}; diff --git a/3.x/assets/quick-start.html.cbab3d30.js b/3.x/assets/quick-start.html.cbab3d30.js new file mode 100644 index 00000000000..f629bc926c4 --- /dev/null +++ b/3.x/assets/quick-start.html.cbab3d30.js @@ -0,0 +1,165 @@ +import{_ as l,o as i,c as u,a as s,b as a,w as o,e as n,d as e,r as c}from"./app.4d248835.js";const r={},k=s("h1",{id:"\u5FEB\u901F\u5165\u95E8",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#\u5FEB\u901F\u5165\u95E8","aria-hidden":"true"},"#"),n(" \u5FEB\u901F\u5165\u95E8")],-1),d=n("\u53EF\u4EE5\u901A\u8FC7\u4E0B\u9762\u7684\u65B9\u5F0F\u81EA\u5DF1\u52A8\u624B\u5B9E\u8DF5\uFF0C\u4E5F\u53EF\u4EE5\u901A\u8FC7\u6211\u4EEC\u7684"),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=arthas-basics",target:"_blank",rel:"noopener noreferrer"},b=n("\u5728\u7EBF\u6559\u7A0B"),v=n("\uFF0C\u8DDF\u968F\u6559\u7A0B\u5FEB\u901F\u5165\u95E8\u3002"),h=e(`

    1. \u542F\u52A8 math-game

    curl -O https://arthas.aliyun.com/math-game.jar
    +java -jar math-game.jar
    +

    math-game\u662F\u4E00\u4E2A\u7B80\u5355\u7684\u7A0B\u5E8F\uFF0C\u6BCF\u9694\u4E00\u79D2\u751F\u6210\u4E00\u4E2A\u968F\u673A\u6570\uFF0C\u518D\u6267\u884C\u8D28\u56E0\u6570\u5206\u89E3\uFF0C\u5E76\u6253\u5370\u51FA\u5206\u89E3\u7ED3\u679C\u3002

    `,3),g=s("code",null,"math-game",-1),_=n("\u6E90\u4EE3\u7801\uFF1A"),f={href:"https://github.com/alibaba/arthas/blob/master/math-game/src/main/java/demo/MathGame.java",target:"_blank",rel:"noopener noreferrer"},y=n("\u67E5\u770B"),w=e(`

    2. \u542F\u52A8 arthas

    \u5728\u547D\u4EE4\u884C\u4E0B\u9762\u6267\u884C\uFF08\u4F7F\u7528\u548C\u76EE\u6807\u8FDB\u7A0B\u4E00\u81F4\u7684\u7528\u6237\u542F\u52A8\uFF0C\u5426\u5219\u53EF\u80FD attach \u5931\u8D25\uFF09\uFF1A

    curl -O https://arthas.aliyun.com/arthas-boot3.jar
    +java -jar arthas-boot3.jar
    +
    • \u6267\u884C\u8BE5\u7A0B\u5E8F\u7684\u7528\u6237\u9700\u8981\u548C\u76EE\u6807\u8FDB\u7A0B\u5177\u6709\u76F8\u540C\u7684\u6743\u9650\u3002\u6BD4\u5982\u4EE5admin\u7528\u6237\u6765\u6267\u884C\uFF1Asudo su admin && java -jar arthas-boot3.jar \u6216 sudo -u admin -EH java -jar arthas-boot3.jar\u3002
    • \u5982\u679C attach \u4E0D\u4E0A\u76EE\u6807\u8FDB\u7A0B\uFF0C\u53EF\u4EE5\u67E5\u770B~/logs/arthas/ \u76EE\u5F55\u4E0B\u7684\u65E5\u5FD7\u3002
    • \u5982\u679C\u4E0B\u8F7D\u901F\u5EA6\u6BD4\u8F83\u6162\uFF0C\u53EF\u4EE5\u4F7F\u7528 aliyun \u7684\u955C\u50CF\uFF1Ajava -jar arthas-boot3.jar --repo-mirror aliyun --use-http
    • java -jar arthas-boot3.jar -h \u6253\u5370\u66F4\u591A\u53C2\u6570\u4FE1\u606F\u3002

    \u9009\u62E9\u5E94\u7528 java \u8FDB\u7A0B\uFF1A

    $ $ java -jar arthas-boot3.jar
    +* [1]: 35542
    +  [2]: 71560 math-game.jar
    +

    math-game\u8FDB\u7A0B\u662F\u7B2C 2 \u4E2A\uFF0C\u5219\u8F93\u5165 2\uFF0C\u518D\u8F93\u5165\u56DE\u8F66/enter\u3002Arthas \u4F1A attach \u5230\u76EE\u6807\u8FDB\u7A0B\u4E0A\uFF0C\u5E76\u8F93\u51FA\u65E5\u5FD7\uFF1A

    [INFO] Try to attach process 71560
    +[INFO] Attach process 71560 success.
    +[INFO] arthas-client connect 127.0.0.1 3658
    +  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \\ |  .--. ''--.  .--'|  '--'  | /  O  \\ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |\`.  \`-.
    +|  | |  ||  |\\  \\    |  |   |  |  |  ||  | |  |.-'    |
    +\`--' \`--'\`--' '--'   \`--'   \`--'  \`--'\`--' \`--'\`-----'
    +
    +
    +wiki: https://arthas.aliyun.com/3.x/doc
    +version: 3.0.5.20181127201536
    +pid: 71560
    +time: 2018-11-28 19:16:24
    +
    +$
    +

    3. \u67E5\u770B dashboard

    `,9),I=n("\u8F93\u5165"),j=n("dashboard"),M=n("\uFF0C\u6309"),x=s("code",null,"\u56DE\u8F66/enter",-1),A=n("\uFF0C\u4F1A\u5C55\u793A\u5F53\u524D\u8FDB\u7A0B\u7684\u4FE1\u606F\uFF0C\u6309"),N=s("code",null,"ctrl+c",-1),L=n("\u53EF\u4EE5\u4E2D\u65AD\u6267\u884C\u3002"),E=e(`
    $ dashboard
    +ID     NAME                   GROUP          PRIORI STATE  %CPU    TIME   INTERRU DAEMON
    +17     pool-2-thread-1        system         5      WAITIN 67      0:0    false   false
    +27     Timer-for-arthas-dashb system         10     RUNNAB 32      0:0    false   true
    +11     AsyncAppender-Worker-a system         9      WAITIN 0       0:0    false   true
    +9      Attach Listener        system         9      RUNNAB 0       0:0    false   true
    +3      Finalizer              system         8      WAITIN 0       0:0    false   true
    +2      Reference Handler      system         10     WAITIN 0       0:0    false   true
    +4      Signal Dispatcher      system         9      RUNNAB 0       0:0    false   true
    +26     as-command-execute-dae system         10     TIMED_ 0       0:0    false   true
    +13     job-timeout            system         9      TIMED_ 0       0:0    false   true
    +1      main                   main           5      TIMED_ 0       0:0    false   false
    +14     nioEventLoopGroup-2-1  system         10     RUNNAB 0       0:0    false   false
    +18     nioEventLoopGroup-2-2  system         10     RUNNAB 0       0:0    false   false
    +23     nioEventLoopGroup-2-3  system         10     RUNNAB 0       0:0    false   false
    +15     nioEventLoopGroup-3-1  system         10     RUNNAB 0       0:0    false   false
    +Memory             used   total max    usage GC
    +heap               32M    155M  1820M  1.77% gc.ps_scavenge.count  4
    +ps_eden_space      14M    65M   672M   2.21% gc.ps_scavenge.time(m 166
    +ps_survivor_space  4M     5M    5M           s)
    +ps_old_gen         12M    85M   1365M  0.91% gc.ps_marksweep.count 0
    +nonheap            20M    23M   -1           gc.ps_marksweep.time( 0
    +code_cache         3M     5M    240M   1.32% ms)
    +Runtime
    +os.name                Mac OS X
    +os.version             10.13.4
    +java.version           1.8.0_162
    +java.home              /Library/Java/JavaVir
    +                       tualMachines/jdk1.8.0
    +                       _162.jdk/Contents/Hom
    +                       e/jre
    +

    4. \u901A\u8FC7 thread \u547D\u4EE4\u6765\u83B7\u53D6\u5230math-game\u8FDB\u7A0B\u7684 Main Class

    thread 1\u4F1A\u6253\u5370\u7EBF\u7A0B ID 1 \u7684\u6808\uFF0C\u901A\u5E38\u662F main \u51FD\u6570\u7684\u7EBF\u7A0B\u3002

    $ thread 1 | grep 'main('
    +    at demo.MathGame.main(MathGame.java:17)
    +

    5. \u901A\u8FC7 jad \u6765\u53CD\u7F16\u8BD1 Main Class

    $ jad demo.MathGame
    +
    +ClassLoader:
    ++-sun.misc.Launcher$AppClassLoader@3d4eac69
    +  +-sun.misc.Launcher$ExtClassLoader@66350f69
    +
    +Location:
    +/tmp/math-game.jar
    +
    +/*
    + * Decompiled with CFR 0_132.
    + */
    +package demo;
    +
    +import java.io.PrintStream;
    +import java.util.ArrayList;
    +import java.util.Iterator;
    +import java.util.List;
    +import java.util.Random;
    +import java.util.concurrent.TimeUnit;
    +
    +public class MathGame {
    +    private static Random random = new Random();
    +    private int illegalArgumentCount = 0;
    +
    +    public static void main(String[] args) throws InterruptedException {
    +        MathGame game = new MathGame();
    +        do {
    +            game.run();
    +            TimeUnit.SECONDS.sleep(1L);
    +        } while (true);
    +    }
    +
    +    public void run() throws InterruptedException {
    +        try {
    +            int number = random.nextInt();
    +            List<Integer> primeFactors = this.primeFactors(number);
    +            MathGame.print(number, primeFactors);
    +        }
    +        catch (Exception e) {
    +            System.out.println(String.format("illegalArgumentCount:%3d, ", this.illegalArgumentCount) + e.getMessage());
    +        }
    +    }
    +
    +    public static void print(int number, List<Integer> primeFactors) {
    +        StringBuffer sb = new StringBuffer("" + number + "=");
    +        Iterator<Integer> iterator = primeFactors.iterator();
    +        while (iterator.hasNext()) {
    +            int factor = iterator.next();
    +            sb.append(factor).append('*');
    +        }
    +        if (sb.charAt(sb.length() - 1) == '*') {
    +            sb.deleteCharAt(sb.length() - 1);
    +        }
    +        System.out.println(sb);
    +    }
    +
    +    public List<Integer> primeFactors(int number) {
    +        if (number < 2) {
    +            ++this.illegalArgumentCount;
    +            throw new IllegalArgumentException("number is: " + number + ", need >= 2");
    +        }
    +        ArrayList<Integer> result = new ArrayList<Integer>();
    +        int i = 2;
    +        while (i <= number) {
    +            if (number % i == 0) {
    +                result.add(i);
    +                number /= i;
    +                i = 2;
    +                continue;
    +            }
    +            ++i;
    +        }
    +        return result;
    +    }
    +}
    +
    +Affect(row-cnt:1) cost in 970 ms.
    +

    6. watch

    `,7),R=n("\u901A\u8FC7"),C=n("watch"),G=n("\u547D\u4EE4\u6765\u67E5\u770B"),T=s("code",null,"demo.MathGame#primeFactors",-1),S=n("\u51FD\u6570\u7684\u8FD4\u56DE\u503C\uFF1A"),q=e(`
    $ watch demo.MathGame primeFactors returnObj
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 107 ms.
    +ts=2018-11-28 19:22:30; [cost=1.715367ms] result=null
    +ts=2018-11-28 19:22:31; [cost=0.185203ms] result=null
    +ts=2018-11-28 19:22:32; [cost=19.012416ms] result=@ArrayList[
    +    @Integer[5],
    +    @Integer[47],
    +    @Integer[2675531],
    +]
    +ts=2018-11-28 19:22:33; [cost=0.311395ms] result=@ArrayList[
    +    @Integer[2],
    +    @Integer[5],
    +    @Integer[317],
    +    @Integer[503],
    +    @Integer[887],
    +]
    +ts=2018-11-28 19:22:34; [cost=10.136007ms] result=@ArrayList[
    +    @Integer[2],
    +    @Integer[2],
    +    @Integer[3],
    +    @Integer[3],
    +    @Integer[31],
    +    @Integer[717593],
    +]
    +ts=2018-11-28 19:22:35; [cost=29.969732ms] result=@ArrayList[
    +    @Integer[5],
    +    @Integer[29],
    +    @Integer[7651739],
    +]
    +
    `,1),F=n("\u66F4\u591A\u7684\u529F\u80FD\u53EF\u4EE5\u67E5\u770B"),O={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=arthas-advanced",target:"_blank",rel:"noopener noreferrer"},B=n("\u8FDB\u9636\u6559\u7A0B"),U=n("\u3002"),D=s("h2",{id:"_7-\u9000\u51FA-arthas",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#_7-\u9000\u51FA-arthas","aria-hidden":"true"},"#"),n(" 7. \u9000\u51FA arthas")],-1),$=s("p",null,[n("\u5982\u679C\u53EA\u662F\u9000\u51FA\u5F53\u524D\u7684\u8FDE\u63A5\uFF0C\u53EF\u4EE5\u7528"),s("code",null,"quit"),n("\u6216\u8005"),s("code",null,"exit"),n("\u547D\u4EE4\u3002Attach \u5230\u76EE\u6807\u8FDB\u7A0B\u4E0A\u7684 arthas \u8FD8\u4F1A\u7EE7\u7EED\u8FD0\u884C\uFF0C\u7AEF\u53E3\u4F1A\u4FDD\u6301\u5F00\u653E\uFF0C\u4E0B\u6B21\u8FDE\u63A5\u65F6\u53EF\u4EE5\u76F4\u63A5\u8FDE\u63A5\u4E0A\u3002")],-1),P=s("p",null,[n("\u5982\u679C\u60F3\u5B8C\u5168\u9000\u51FA arthas\uFF0C\u53EF\u4EE5\u6267\u884C"),s("code",null,"stop"),n("\u547D\u4EE4\u3002")],-1);function V(W,H){const t=c("ExternalLinkIcon"),p=c("RouterLink");return i(),u("div",null,[k,s("p",null,[d,s("a",m,[b,a(t)]),v]),h,s("p",null,[g,_,s("a",f,[y,a(t)])]),w,s("p",null,[I,a(p,{to:"/doc/dashboard.html"},{default:o(()=>[j]),_:1}),M,x,A,N,L]),E,s("p",null,[R,a(p,{to:"/doc/watch.html"},{default:o(()=>[C]),_:1}),G,T,S]),q,s("p",null,[F,s("a",O,[B,a(t)]),U]),D,$,P])}const z=l(r,[["render",V],["__file","quick-start.html.vue"]]);export{z as default}; diff --git a/3.x/assets/quit.html.052c6b91.js b/3.x/assets/quit.html.052c6b91.js new file mode 100644 index 00000000000..72e92273d97 --- /dev/null +++ b/3.x/assets/quit.html.052c6b91.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-aa7c750c","path":"/doc/quit.html","title":"quit","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1658120060000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/quit.md","version":"3.7.3"}');export{t as data}; diff --git a/3.x/assets/quit.html.125451fe.js b/3.x/assets/quit.html.125451fe.js new file mode 100644 index 00000000000..2dcdf2d03be --- /dev/null +++ b/3.x/assets/quit.html.125451fe.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-d1b31c34","path":"/en/doc/quit.html","title":"quit","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1658120060000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/quit.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/quit.html.64b41fb3.js b/3.x/assets/quit.html.64b41fb3.js new file mode 100644 index 00000000000..874503f37f5 --- /dev/null +++ b/3.x/assets/quit.html.64b41fb3.js @@ -0,0 +1 @@ +import{_ as t,o as s,c as e,d as o}from"./app.4d248835.js";const r={},a=o('

    quit

    \u9000\u51FA\u5F53\u524D Arthas \u5BA2\u6237\u7AEF\uFF0C\u5176\u4ED6 Arthas \u5BA2\u6237\u7AEF\u4E0D\u53D7\u5F71\u54CD\u3002\u7B49\u540C\u4E8Eexit\u3001logout\u3001q\u4E09\u4E2A\u6307\u4EE4\u3002

    \u63D0\u793A

    \u53EA\u662F\u9000\u51FA\u5F53\u524D Arthas \u5BA2\u6237\u7AEF\uFF0CArthas \u7684\u670D\u52A1\u5668\u7AEF\u5E76\u6CA1\u6709\u5173\u95ED\uFF0C\u6240\u505A\u7684\u4FEE\u6539\u4E5F\u4E0D\u4F1A\u88AB\u91CD\u7F6E\u3002

    ',3),n=[a];function c(i,_){return s(),e("div",null,n)}const h=t(r,[["render",c],["__file","quit.html.vue"]]);export{h as default}; diff --git a/3.x/assets/quit.html.adcbca9c.js b/3.x/assets/quit.html.adcbca9c.js new file mode 100644 index 00000000000..80079e9dc38 --- /dev/null +++ b/3.x/assets/quit.html.adcbca9c.js @@ -0,0 +1 @@ +import{_ as t,o as e,c as s,d as o}from"./app.4d248835.js";const n={},i=o('

    quit

    exit the current Arthas client without affecting other clients. equals exit\u3001logout\u3001q command.

    TIP

    just exit Arthas client,it means Arthas server is not closed,so the changes you do will not be reseted.

    ',3),r=[i];function c(a,l){return e(),s("div",null,r)}const h=t(n,[["render",c],["__file","quit.html.vue"]]);export{h as default}; diff --git a/3.x/assets/redefine.html.2e16ab41.js b/3.x/assets/redefine.html.2e16ab41.js new file mode 100644 index 00000000000..9e25584e7ff --- /dev/null +++ b/3.x/assets/redefine.html.2e16ab41.js @@ -0,0 +1,35 @@ +import{_ as l,o as p,c as i,a as n,b as a,w as c,e as s,d,r as o}from"./app.4d248835.js";const r={},u=n("h1",{id:"redefine",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#redefine","aria-hidden":"true"},"#"),s(" redefine")],-1),m={class:"custom-container tip"},k=n("p",{class:"custom-container-title"},"\u63D0\u793A",-1),v=s("\u63A8\u8350\u4F7F\u7528 "),h=s("retransform"),b=s(" \u547D\u4EE4"),f={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=cn&id=command-mc-redefine",target:"_blank",rel:"noopener noreferrer"},_=n("code",null,"mc-redefine",-1),g=s("\u5728\u7EBF\u6559\u7A0B"),x=n("div",{class:"custom-container tip"},[n("p",{class:"custom-container-title"},"\u63D0\u793A"),n("p",null,[s("\u52A0\u8F7D\u5916\u90E8\u7684"),n("code",null,".class"),s("\u6587\u4EF6\uFF0Credefine jvm \u5DF2\u52A0\u8F7D\u7684\u7C7B\u3002")])],-1),y=s("\u53C2\u8003\uFF1A"),w={href:"https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/Instrumentation.html#redefineClasses-java.lang.instrument.ClassDefinition...-",target:"_blank",rel:"noopener noreferrer"},j=s("Instrumentation#redefineClasses"),C=n("h2",{id:"\u5E38\u89C1\u95EE\u9898",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#\u5E38\u89C1\u95EE\u9898","aria-hidden":"true"},"#"),s(" \u5E38\u89C1\u95EE\u9898")],-1),L={class:"custom-container tip"},I=n("p",{class:"custom-container-title"},"\u63D0\u793A",-1),S=s("\u63A8\u8350\u4F7F\u7528 "),T=s("retransform"),E=s(" \u547D\u4EE4"),q=d(`
    • redefine \u7684 class \u4E0D\u80FD\u4FEE\u6539\u3001\u6DFB\u52A0\u3001\u5220\u9664\u7C7B\u7684 field \u548C method\uFF0C\u5305\u62EC\u65B9\u6CD5\u53C2\u6570\u3001\u65B9\u6CD5\u540D\u79F0\u53CA\u8FD4\u56DE\u503C

    • \u5982\u679C mc \u5931\u8D25\uFF0C\u53EF\u4EE5\u5728\u672C\u5730\u5F00\u53D1\u73AF\u5883\u7F16\u8BD1\u597D class \u6587\u4EF6\uFF0C\u4E0A\u4F20\u5230\u76EE\u6807\u7CFB\u7EDF\uFF0C\u4F7F\u7528 redefine \u70ED\u52A0\u8F7D class

    • \u76EE\u524D redefine \u548C watch/trace/jad/tt \u7B49\u547D\u4EE4\u51B2\u7A81\uFF0C\u4EE5\u540E\u91CD\u65B0\u5B9E\u73B0 redefine \u529F\u80FD\u4F1A\u89E3\u51B3\u6B64\u95EE\u9898

    \u6CE8\u610F

    \u6CE8\u610F\uFF0C redefine \u540E\u7684\u539F\u6765\u7684\u7C7B\u4E0D\u80FD\u6062\u590D\uFF0Credefine \u6709\u53EF\u80FD\u5931\u8D25\uFF08\u6BD4\u5982\u589E\u52A0\u4E86\u65B0\u7684 field\uFF09\uFF0C\u53C2\u8003 jdk \u672C\u8EAB\u7684\u6587\u6863\u3002

    \u63D0\u793A

    reset\u547D\u4EE4\u5BF9redefine\u7684\u7C7B\u65E0\u6548\u3002\u5982\u679C\u60F3\u91CD\u7F6E\uFF0C\u9700\u8981redefine\u539F\u59CB\u7684\u5B57\u8282\u7801\u3002

    \u63D0\u793A

    redefine\u547D\u4EE4\u548Cjad/watch/trace/monitor/tt\u7B49\u547D\u4EE4\u4F1A\u51B2\u7A81\u3002\u6267\u884C\u5B8Credefine\u4E4B\u540E\uFF0C\u5982\u679C\u518D\u6267\u884C\u4E0A\u9762\u63D0\u5230\u7684\u547D\u4EE4\uFF0C\u5219\u4F1A\u628Aredefine\u7684\u5B57\u8282\u7801\u91CD\u7F6E\u3002 \u539F\u56E0\u662F jdk \u672C\u8EAB redefine \u548C Retransform \u662F\u4E0D\u540C\u7684\u673A\u5236\uFF0C\u540C\u65F6\u4F7F\u7528\u4E24\u79CD\u673A\u5236\u6765\u66F4\u65B0\u5B57\u8282\u7801\uFF0C\u53EA\u6709\u6700\u540E\u4FEE\u6539\u7684\u4F1A\u751F\u6548\u3002

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    [c:]ClassLoader \u7684 hashcode
    [classLoaderClass:]\u6307\u5B9A\u6267\u884C\u8868\u8FBE\u5F0F\u7684 ClassLoader \u7684 class name

    \u4F7F\u7528\u53C2\u8003

       redefine /tmp/Test.class
    +   redefine -c 327a647b /tmp/Test.class /tmp/Test\\$Inner.class
    +   redefine --classLoaderClass sun.misc.Launcher$AppClassLoader /tmp/Test.class /tmp/Test\\$Inner.class
    +

    \u7ED3\u5408 jad/mc \u547D\u4EE4\u4F7F\u7528

    jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
    +
    +mc /tmp/UserController.java -d /tmp
    +
    +redefine /tmp/com/example/demo/arthas/user/UserController.class
    +
    • jad \u547D\u4EE4\u53CD\u7F16\u8BD1\uFF0C\u7136\u540E\u53EF\u4EE5\u7528\u5176\u5B83\u7F16\u8BD1\u5668\uFF0C\u6BD4\u5982 vim \u6765\u4FEE\u6539\u6E90\u7801
    • mc \u547D\u4EE4\u6765\u5185\u5B58\u7F16\u8BD1\u4FEE\u6539\u8FC7\u7684\u4EE3\u7801
    • \u7528 redefine \u547D\u4EE4\u52A0\u8F7D\u65B0\u7684\u5B57\u8282\u7801

    \u4E0A\u4F20 .class \u6587\u4EF6\u5230\u670D\u52A1\u5668\u7684\u6280\u5DE7

    \u4F7F\u7528mc\u547D\u4EE4\u6765\u7F16\u8BD1jad\u7684\u53CD\u7F16\u8BD1\u7684\u4EE3\u7801\u6709\u53EF\u80FD\u5931\u8D25\u3002\u53EF\u4EE5\u5728\u672C\u5730\u4FEE\u6539\u4EE3\u7801\uFF0C\u7F16\u8BD1\u597D\u540E\u518D\u4E0A\u4F20\u5230\u670D\u52A1\u5668\u4E0A\u3002\u6709\u7684\u670D\u52A1\u5668\u4E0D\u5141\u8BB8\u76F4\u63A5\u4E0A\u4F20\u6587\u4EF6\uFF0C\u53EF\u4EE5\u4F7F\u7528base64\u547D\u4EE4\u6765\u7ED5\u8FC7\u3002

    1. \u5728\u672C\u5730\u5148\u8F6C\u6362.class\u6587\u4EF6\u4E3A base64\uFF0C\u518D\u4FDD\u5B58\u4E3A result.txt

      base64 < Test.class > result.txt
      +
    2. \u5230\u670D\u52A1\u5668\u4E0A\uFF0C\u65B0\u5EFA\u5E76\u7F16\u8F91result.txt\uFF0C\u590D\u5236\u672C\u5730\u7684\u5185\u5BB9\uFF0C\u7C98\u8D34\u518D\u4FDD\u5B58

    3. \u628A\u670D\u52A1\u5668\u4E0A\u7684 result.txt\u8FD8\u539F\u4E3A.class

      base64 -d < result.txt > Test.class
      +
    4. \u7528 md5 \u547D\u4EE4\u8BA1\u7B97\u54C8\u5E0C\u503C\uFF0C\u6821\u9A8C\u662F\u5426\u4E00\u81F4

    redefine \u7684\u9650\u5236

    • \u4E0D\u5141\u8BB8\u65B0\u589E\u52A0 field/method
    • \u6B63\u5728\u8DD1\u7684\u51FD\u6570\uFF0C\u6CA1\u6709\u9000\u51FA\u4E0D\u80FD\u751F\u6548\uFF0C\u6BD4\u5982\u4E0B\u9762\u65B0\u589E\u52A0\u7684System.out.println\uFF0C\u53EA\u6709run()\u51FD\u6570\u91CC\u7684\u4F1A\u751F\u6548
    public class MathGame {
    +    public static void main(String[] args) throws InterruptedException {
    +        MathGame game = new MathGame();
    +        while (true) {
    +            game.run();
    +            TimeUnit.SECONDS.sleep(1);
    +            // \u8FD9\u4E2A\u4E0D\u751F\u6548\uFF0C\u56E0\u4E3A\u4EE3\u7801\u4E00\u76F4\u8DD1\u5728 while\u91CC
    +            System.out.println("in loop");
    +        }
    +    }
    +
    +    public void run() throws InterruptedException {
    +        // \u8FD9\u4E2A\u751F\u6548\uFF0C\u56E0\u4E3Arun()\u51FD\u6570\u6BCF\u6B21\u90FD\u53EF\u4EE5\u5B8C\u6574\u7ED3\u675F
    +        System.out.println("call run()");
    +        try {
    +            int number = random.nextInt();
    +            List<Integer> primeFactors = primeFactors(number);
    +            print(number, primeFactors);
    +
    +        } catch (Exception e) {
    +            System.out.println(String.format("illegalArgumentCount:%3d, ", illegalArgumentCount) + e.getMessage());
    +        }
    +    }
    +}
    +
    `,17);function N(U,M){const e=o("RouterLink"),t=o("ExternalLinkIcon");return p(),i("div",null,[u,n("div",m,[k,n("p",null,[v,a(e,{to:"/doc/retransform.html"},{default:c(()=>[h]),_:1}),b])]),n("p",null,[n("a",f,[_,g,a(t)])]),x,n("p",null,[y,n("a",w,[j,a(t)])]),C,n("div",L,[I,n("p",null,[S,a(e,{to:"/doc/retransform.html"},{default:c(()=>[T]),_:1}),E])]),q])}const A=l(r,[["render",N],["__file","redefine.html.vue"]]);export{A as default}; diff --git a/3.x/assets/redefine.html.4f4236c3.js b/3.x/assets/redefine.html.4f4236c3.js new file mode 100644 index 00000000000..c2f0e74175f --- /dev/null +++ b/3.x/assets/redefine.html.4f4236c3.js @@ -0,0 +1,35 @@ +import{_ as i,o as l,c as p,a as n,b as e,w as o,e as s,d,r as c}from"./app.4d248835.js";const r={},u=n("h1",{id:"redefine",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#redefine","aria-hidden":"true"},"#"),s(" redefine")],-1),m={class:"custom-container tip"},h=n("p",{class:"custom-container-title"},"TIP",-1),k=s("Recommend to use the "),v=s("retransform"),f=s(" command."),b={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=en&id=command-mc-redefine",target:"_blank",rel:"noopener noreferrer"},g=n("code",null,"mc-redefine",-1),_=s(" online tutorial"),y=n("div",{class:"custom-container tip"},[n("p",{class:"custom-container-title"},"TIP"),n("p",null,[s("Load the external "),n("code",null,"*.class"),s(" files to re-define the loaded classes in JVM.")])],-1),w=s("Reference: "),x={href:"https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/Instrumentation.html#redefineClasses-java.lang.instrument.ClassDefinition...-",target:"_blank",rel:"noopener noreferrer"},T=s("Instrumentation#redefineClasses"),I=n("h2",{id:"frequently-asked-questions",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#frequently-asked-questions","aria-hidden":"true"},"#"),s(" Frequently asked questions")],-1),C={class:"custom-container tip"},j=n("p",{class:"custom-container-title"},"TIP",-1),L=s("Recommend to use the "),q=s("retransform"),S=s(" command."),N=d(`
    • The class of redefine cannot modify, add or delete the field and method of the class, including method parameters, method names and return values.

    • If mc fails, you can compile the class file in the local development environment, upload it to the target system, and use redefine to hot load the class.

    • At present, redefine conflicts with watch / trace / jad / tt commands. Reimplementing redefine function in the future will solve this problem.

    WARNING

    Notes: Re-defined classes cannot be restored. There are chances that redefining may fail due to some reasons, for example: there's new field introduced in the new version of the class, pls. refer to JDK's documentation for the limitations.

    TIP

    The reset command is not valid for classes that have been processed by redefine. If you want to reset, you need redefine the original bytecode.

    TIP

    The redefine command will conflict with the jad/watch/trace/monitor/tt commands. After executing redefine, if you execute the above mentioned command, the bytecode of the class will be reset. The reason is that in the JDK redefine and retransform are different mechanisms. When two mechanisms are both used to update the bytecode, only the last modified will take effect.

    Options

    NameSpecification
    [c:]hashcode of the class loader
    [classLoaderClass:]The class name of the ClassLoader that executes the expression.

    Usage

    redefine /tmp/Test.class
    +redefine -c 327a647b /tmp/Test.class /tmp/Test\\$Inner.class
    +redefine --classLoaderClass sun.misc.Launcher$AppClassLoader /tmp/Test.class /tmp/Test\\$Inner.class
    +

    Use with the jad/mc command

    jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
    +
    +mc /tmp/UserController.java -d /tmp
    +
    +redefine /tmp/com/example/demo/arthas/user/UserController.class
    +
    • Use jad command to decompile bytecode, and then you can use other editors, such as vim to modify the source code.
    • mc command to compile the modified code
    • Load new bytecode with redefine command

    Tips for uploading .class files to the server

    The mc command may fail. You can modify the code locally, compile it, and upload it to the server. Some servers do not allow direct uploading files, you can use the base64 command to bypass.

    1. Convert the .class file to base64 first, then save it as result.txt

      Base64 < Test.class > result.txt
      +
    2. Login the server, create and edit result.txt, copy the local content, paste and save

    3. Restore result.txt on the server to .class

      Base64 -d < result.txt > Test.class
      +
    4. Use the md5 command to verify that the .class files are consistent.

    Restrictions of the redefine command

    • New field/method is not allowed
    • The function that is running, no exit can not take effect, such as the new System.out.println added below, only the run() function will take effect.
    public class MathGame {
    +    public static void main(String[] args) throws InterruptedException {
    +        MathGame game = new MathGame();
    +        while (true) {
    +            game.run();
    +            TimeUnit.SECONDS.sleep(1);
    +            // This doesn't work because the code keeps running in while
    +            System.out.println("in loop");
    +        }
    +    }
    +
    +    public void run() throws InterruptedException {
    +        // This works because the run() function ends completely every time
    +        System.out.println("call run()");
    +        try {
    +            int number = random.nextInt();
    +            List<Integer> primeFactors = primeFactors(number);
    +            print(number, primeFactors);
    +
    +        } catch (Exception e) {
    +            System.out.println(String.format("illegalArgumentCount:%3d, ", illegalArgumentCount) + e.getMessage());
    +        }
    +    }
    +}
    +
    `,17);function R(U,E){const a=c("RouterLink"),t=c("ExternalLinkIcon");return l(),p("div",null,[u,n("div",m,[h,n("p",null,[k,e(a,{to:"/en/doc/retransform.html"},{default:o(()=>[v]),_:1}),f])]),n("p",null,[n("a",b,[g,_,e(t)])]),y,n("p",null,[w,n("a",x,[T,e(t)])]),I,n("div",C,[j,n("p",null,[L,e(a,{to:"/en/doc/retransform.html"},{default:o(()=>[q]),_:1}),S])]),N])}const B=i(r,[["render",R],["__file","redefine.html.vue"]]);export{B as default}; diff --git a/3.x/assets/redefine.html.a2b54a14.js b/3.x/assets/redefine.html.a2b54a14.js new file mode 100644 index 00000000000..f204f7adc67 --- /dev/null +++ b/3.x/assets/redefine.html.a2b54a14.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-0446ad7b","path":"/doc/redefine.html","title":"redefine","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u5E38\u89C1\u95EE\u9898","slug":"\u5E38\u89C1\u95EE\u9898","link":"#\u5E38\u89C1\u95EE\u9898","children":[]},{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]},{"level":2,"title":"\u7ED3\u5408 jad/mc \u547D\u4EE4\u4F7F\u7528","slug":"\u7ED3\u5408-jad-mc-\u547D\u4EE4\u4F7F\u7528","link":"#\u7ED3\u5408-jad-mc-\u547D\u4EE4\u4F7F\u7528","children":[]},{"level":2,"title":"\u4E0A\u4F20 .class \u6587\u4EF6\u5230\u670D\u52A1\u5668\u7684\u6280\u5DE7","slug":"\u4E0A\u4F20-class-\u6587\u4EF6\u5230\u670D\u52A1\u5668\u7684\u6280\u5DE7","link":"#\u4E0A\u4F20-class-\u6587\u4EF6\u5230\u670D\u52A1\u5668\u7684\u6280\u5DE7","children":[]},{"level":2,"title":"redefine \u7684\u9650\u5236","slug":"redefine-\u7684\u9650\u5236","link":"#redefine-\u7684\u9650\u5236","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/redefine.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/redefine.html.ee728e3e.js b/3.x/assets/redefine.html.ee728e3e.js new file mode 100644 index 00000000000..64d82f3e3b9 --- /dev/null +++ b/3.x/assets/redefine.html.ee728e3e.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-c7317832","path":"/en/doc/redefine.html","title":"redefine","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Frequently asked questions","slug":"frequently-asked-questions","link":"#frequently-asked-questions","children":[]},{"level":2,"title":"Options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]},{"level":2,"title":"Use with the jad/mc command","slug":"use-with-the-jad-mc-command","link":"#use-with-the-jad-mc-command","children":[]},{"level":2,"title":"Tips for uploading .class files to the server","slug":"tips-for-uploading-class-files-to-the-server","link":"#tips-for-uploading-class-files-to-the-server","children":[]},{"level":2,"title":"Restrictions of the redefine command","slug":"restrictions-of-the-redefine-command","link":"#restrictions-of-the-redefine-command","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/redefine.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/release-notes.html.5e40eac1.js b/3.x/assets/release-notes.html.5e40eac1.js new file mode 100644 index 00000000000..7ebd618f4a5 --- /dev/null +++ b/3.x/assets/release-notes.html.5e40eac1.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-e0bde47c","path":"/en/doc/release-notes.html","title":"Release Notes","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"v3.1.1","slug":"v3-1-1","link":"#v3-1-1","children":[]},{"level":2,"title":"v3.1.0","slug":"v3-1-0","link":"#v3-1-0","children":[]},{"level":2,"title":"v3.0.5","slug":"v3-0-5","link":"#v3-0-5","children":[]},{"level":2,"title":"v3.0.4","slug":"v3-0-4","link":"#v3-0-4","children":[]},{"level":2,"title":"v2017-11-03","slug":"v2017-11-03","link":"#v2017-11-03","children":[]},{"level":2,"title":"v2017-09-22","slug":"v2017-09-22","link":"#v2017-09-22","children":[]},{"level":2,"title":"v2017-09-11","slug":"v2017-09-11","link":"#v2017-09-11","children":[]},{"level":2,"title":"v2017-05-11","slug":"v2017-05-11","link":"#v2017-05-11","children":[]},{"level":2,"title":"v2017-05-12","slug":"v2017-05-12","link":"#v2017-05-12","children":[]},{"level":2,"title":"v2016-12-09","slug":"v2016-12-09","link":"#v2016-12-09","children":[]},{"level":2,"title":"v2016-06-07","slug":"v2016-06-07","link":"#v2016-06-07","children":[]},{"level":2,"title":"v2016-04-08","slug":"v2016-04-08","link":"#v2016-04-08","children":[]},{"level":2,"title":"v2016-03-07","slug":"v2016-03-07","link":"#v2016-03-07","children":[]},{"level":2,"title":"v2016-01-18","slug":"v2016-01-18","link":"#v2016-01-18","children":[]},{"level":2,"title":"v2016-01-08","slug":"v2016-01-08","link":"#v2016-01-08","children":[]},{"level":2,"title":"v2015-12-29","slug":"v2015-12-29","link":"#v2015-12-29","children":[]}],"git":{"updatedTime":1658120060000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/release-notes.md","version":"3.7.3"}');export{l as data}; diff --git a/3.x/assets/release-notes.html.79040020.js b/3.x/assets/release-notes.html.79040020.js new file mode 100644 index 00000000000..f30f37ab362 --- /dev/null +++ b/3.x/assets/release-notes.html.79040020.js @@ -0,0 +1 @@ +import{_ as d,o as r,c,a as e,b as o,w as i,e as t,d as l,r as a}from"./app.4d248835.js";const h={},_=e("h1",{id:"release-notes",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#release-notes","aria-hidden":"true"},"#"),t(" Release Notes")],-1),u=e("h2",{id:"v3-1-1",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#v3-1-1","aria-hidden":"true"},"#"),t(" v3.1.1")],-1),m={href:"https://github.com/alibaba/arthas/releases/tag/arthas-all-3.1.1",target:"_blank",rel:"noopener noreferrer"},f=t("https://github.com/alibaba/arthas/releases/tag/arthas-all-3.1.1"),g=e("h2",{id:"v3-1-0",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#v3-1-0","aria-hidden":"true"},"#"),t(" v3.1.0")],-1),p={href:"https://github.com/alibaba/arthas/releases/tag/3.1.0",target:"_blank",rel:"noopener noreferrer"},b=t("https://github.com/alibaba/arthas/releases/tag/3.1.0"),v=e("h2",{id:"v3-0-5",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#v3-0-5","aria-hidden":"true"},"#"),t(" v3.0.5")],-1),x={href:"https://github.com/alibaba/arthas/releases/tag/arthas-all-3.0.5",target:"_blank",rel:"noopener noreferrer"},k=t("https://github.com/alibaba/arthas/releases/tag/arthas-all-3.0.5"),w=e("h2",{id:"v3-0-4",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#v3-0-4","aria-hidden":"true"},"#"),t(" v3.0.4")],-1),y={href:"https://github.com/alibaba/arthas/releases/tag/arthas-all-3.0.4",target:"_blank",rel:"noopener noreferrer"},N=t("https://github.com/alibaba/arthas/releases/tag/arthas-all-3.0.4"),A=e("h2",{id:"v2017-11-03",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#v2017-11-03","aria-hidden":"true"},"#"),t(" v2017-11-03")],-1),j=t("[improvement] add "),L=e("code",null,"getstatic",-1),C=e("li",null,"[bug] fix Arthas class loader logs loading issues",-1),E=t("[improvement] introduce "),z={href:"https://en.wikipedia.org/wiki/OGNL",target:"_blank",rel:"noopener noreferrer"},B=t("OGNL"),O=t(" to customize "),q=e("code",null,"classloader",-1),D=t(" to invoke static methods"),G=l("
  • [improvement] optimise termd uppercase output performance
  • [improvement] classloader compile in class loader category by default
  • [bug] fix wc counting issue
  • [improvement] disable certain JDK classes e.g. Classloader, Method, Integer and the lik
  • ",4),I=t("[improvement] quit directly when encountering incorrect "),J={href:"https://en.wikipedia.org/wiki/OGNL",target:"_blank",rel:"noopener noreferrer"},P=t("OGNL"),V=t(" expression"),K=e("li",null,[t("[bug] fix "),e("code",null,"pipe"),t(" issues")],-1),R=e("li",null,"[improvement] optimize command re-direct features using asynchronous log",-1),U=t("[improvement] "),S=e("code",null,"trace",-1),T=t(" can filter JDK method calls"),X=e("h2",{id:"v2017-09-22",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#v2017-09-22","aria-hidden":"true"},"#"),t(" v2017-09-22")],-1),M=e("ul",null,[e("li",null,"[improvement] improve the error message when starting agent and server fails"),e("li",null,"[bug] fix some asynchronous issues")],-1),F=e("h2",{id:"v2017-09-11",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#v2017-09-11","aria-hidden":"true"},"#"),t(" v2017-09-11")],-1),H=t("[improvement] "),Q=e("code",null,"async",-1),W=t(" supported"),Y=t("[improvement] optimize "),Z=e("code",null,"jad",-1),$=t(" support JDK 8 and inner class"),ee=e("li",null,"[bug] fix Chinese encoding issues",-1),te=e("h2",{id:"v2017-05-11",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#v2017-05-11","aria-hidden":"true"},"#"),t(" v2017-05-11")],-1),oe=t("[improvement] "),se=e("code",null,"tt",-1),ie=t(" investigating/recording level one to avoid too much performance overhead"),ne=e("li",null,"[bug] fix Chinese characters can not be presented issue",-1),le=e("h2",{id:"v2017-05-12",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#v2017-05-12","aria-hidden":"true"},"#"),t(" v2017-05-12")],-1),ae=e("ul",null,[e("li",null,"Arthas 3.0 release \u{1F38A}")],-1),de=e("h2",{id:"v2016-12-09",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#v2016-12-09","aria-hidden":"true"},"#"),t(" v2016-12-09")],-1),re=t("[feature] "),ce={href:"https://github.com/alibaba/arthas/blob/master/bin/as.sh",target:"_blank",rel:"noopener noreferrer"},he=e("code",null,"as.sh",-1),_e=t(" support "),ue=e("code",null,"-h",-1),me=t(" to print help info"),fe=e("li",null,"[bug] [#121] fix leftover temp files causing Arthas cannot start issue",-1),ge=e("li",null,[t("[bug] [#123] fix "),e("code",null,"attach/shutdown"),t(" repeatedly causing Arthas classloader leakage issue")],-1),pe=e("li",null,"[improvement] make the help info more readable",-1),be=e("li",null,"[bug] [#126] fix the documents links issues",-1),ve=t("[bug] [#122] fix the "),xe=e("code",null,"classloader",-1),ke=t(" filtering out "),we=e("code",null,"sun.reflect.DelegatingClassLoader",-1),ye=t(" issue"),Ne=t("[bug] [#129] fix "),Ae=e("code",null,"classloader",-1),je=t(" presenting structure issues"),Le=e("li",null,"[improvement] [#125] make the Arthas log output more readable",-1),Ce=t("[improvement] [#96] "),Ee=e("code",null,"sc",-1),ze=t(" and more commands are supporting format as "),Be=e("code",null,"com/taobao/xxx/TestClass",-1),Oe=t("[bug] [#124] fix the negative values of "),qe=e("code",null,"trace",-1),De=t("[improvement] [#128] the output of "),Ge=e("code",null,"tt",-1),Ie=t(" will auto-expand now"),Je=e("li",null,"[bug] [#130] providing more meaningful error messages when port conflicts",-1),Pe=e("li",null,"[bug] [#98] fix Arthas starting issue: when updating/downloading failed, Arthas will fail to start",-1),Ve=e("li",null,"[bug] [#139] fix agent attaching fails under some scenarios issues",-1),Ke=e("li",null,[t("[improvement] [#156] delay "),e("code",null,"jd-core-java"),t(" initialization to avoid Arthas starting failure")],-1),Re=e("li",null,"[bug] avoid thread names duplicate issue",-1),Ue=t("[improvement] [#150] filtering by total time cost in "),Se=e("code",null,"trace",-1),Te=t("[bug] fix "),Xe=e("code",null,"sc",-1),Me=t(),Fe=e("code",null,"NPE",-1),He=t(" issue when searching "),Qe=e("code",null,"SystemClassloader",-1),We=e("li",null,"[bug] [#180] fix attach fails issues: attaching succeed at the first time, delete the Arthas installer, re-compile and package => attaching fails",-1),Ye=l('

    v2016-06-07

    • [bug] fix NPE when loading spy as resource
    • [improvement] locating the blocking thread
    • [improvement] print out thread in name order
    • [improvement] specify the refreshing interval when checking topN busiest threads

    v2016-04-08

    ',3),Ze=t("[feature] specify refreshing interval and execution times in "),$e=e("code",null,"dashboard",-1),et=l("
  • [feature] log the command execution result
  • [feature] speed up the booting and attaching while the first attaching is even quicker by 100% than before
  • [feature] batch supported; script supported
  • [feature] interactive mode used in Arthas
  • [feature] inheritance relation included in class searching; global option disable-sub-class can be used to turn it off
  • [feature] colorful and plain text modes both supported
  • [improvement] merge exit and quit commands
  • [improvement] help info enclosed with wiki links
  • ",8),tt=t("[improvement] optimize "),ot=e("code",null,"watch",-1),st=t(" using flow for better UX"),it=t("[improvement] add examples to "),nt=e("code",null,"thread",-1),lt=e("li",null,"[improvement] auto-completion ignores character case",-1),at=e("li",null,"[improvement] make the UI more beautiful/friendly",-1),dt=t("[bug] fix "),rt=e("code",null,"trace",-1),ct=t(" printing too much encountering loop issues"),ht=t("[bug] fix "),_t=e("code",null,"trace",-1),ut=t(" node twisting issues when method throwing exceptions"),mt=e("li",null,[t("[bug] fix injected/enhanced "),e("code",null,"BootstrapClassLoader"),t(" cannot locate "),e("code",null,"spy"),t(" issues")],-1),ft=e("h2",{id:"v2016-03-07",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#v2016-03-07","aria-hidden":"true"},"#"),t(" v2016-03-07")],-1),gt=e("li",null,"[feature] checking the topN thread and related stack traces",-1),pt=t("[bug] fix Arthas starting failure in OpenJdk issues (requiring to reinstall "),bt={href:"https://github.com/alibaba/arthas/blob/master/bin/as.sh",target:"_blank",rel:"noopener noreferrer"},vt=t("as.sh"),xt=t(")"),kt=e("li",null,"[improvement] optimize UX",-1),wt=e("h2",{id:"v2016-01-18",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#v2016-01-18","aria-hidden":"true"},"#"),t(" v2016-01-18")],-1),yt=t("[improvement] optimise "),Nt=e("code",null,"jad",-1),At=t("; dump memory byte array in real time; using "),jt=e("code",null,"jd-core-java",-1),Lt=t(" to decompile; line number presented;"),Ct=t("[bug] fix checking/re-producing issues when "),Et=e("code",null,"tt",-1),zt=t(" is watching thread-context related methods invoking"),Bt=e("h2",{id:"v2016-01-08",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#v2016-01-08","aria-hidden":"true"},"#"),t(" v2016-01-08")],-1),Ot=e("li",null,"[bug] jad NPE",-1),qt=e("li",null,"[bug] watch/monitor NPE",-1),Dt=e("li",null,"[bug] wrong escaping issues",-1),Gt=e("li",null,"[bug] wrong statistics",-1),It=t("[bug] "),Jt=e("code",null,"sc",-1),Pt=t(" checking internal structure issues"),Vt=e("h2",{id:"v2015-12-29",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#v2015-12-29","aria-hidden":"true"},"#"),t(" v2015-12-29")],-1),Kt=e("ul",null,[e("li",null,"Arthas 2.0 Beta \u{1F4A5}\uFF01")],-1);function Rt(Ut,St){const n=a("ExternalLinkIcon"),s=a("RouterLink");return r(),c("div",null,[_,u,e("ul",null,[e("li",null,[e("a",m,[f,o(n)])])]),g,e("ul",null,[e("li",null,[e("a",p,[b,o(n)])])]),v,e("ul",null,[e("li",null,[e("a",x,[k,o(n)])])]),w,e("ul",null,[e("li",null,[e("a",y,[N,o(n)])])]),A,e("ul",null,[e("li",null,[j,o(s,{to:"/en/doc/getstatic.html"},{default:i(()=>[L]),_:1})]),C,e("li",null,[E,e("a",z,[B,o(n)]),O,q,D]),G,e("li",null,[I,e("a",J,[P,o(n)]),V]),K,R,e("li",null,[U,o(s,{to:"/en/doc/trace.html"},{default:i(()=>[S]),_:1}),T])]),X,M,F,e("ul",null,[e("li",null,[H,o(s,{to:"/en/doc/async.html"},{default:i(()=>[Q]),_:1}),W]),e("li",null,[Y,o(s,{to:"/en/doc/jad.html"},{default:i(()=>[Z]),_:1}),$]),ee]),te,e("ul",null,[e("li",null,[oe,o(s,{to:"/en/doc/tt.html"},{default:i(()=>[se]),_:1}),ie]),ne]),le,ae,de,e("ul",null,[e("li",null,[re,e("a",ce,[he,o(n)]),_e,ue,me]),fe,ge,pe,be,e("li",null,[ve,o(s,{to:"/en/doc/classloader.html"},{default:i(()=>[xe]),_:1}),ke,we,ye]),e("li",null,[Ne,o(s,{to:"/en/doc/classloader.html"},{default:i(()=>[Ae]),_:1}),je]),Le,e("li",null,[Ce,o(s,{to:"/en/doc/sc.html"},{default:i(()=>[Ee]),_:1}),ze,Be]),e("li",null,[Oe,o(s,{to:"/en/doc/trace.html"},{default:i(()=>[qe]),_:1})]),e("li",null,[De,o(s,{to:"/en/doc/tt.html"},{default:i(()=>[Ge]),_:1}),Ie]),Je,Pe,Ve,Ke,Re,e("li",null,[Ue,o(s,{to:"/en/doc/trace.html"},{default:i(()=>[Se]),_:1})]),e("li",null,[Te,o(s,{to:"/en/doc/sc.html"},{default:i(()=>[Xe]),_:1}),Me,Fe,He,Qe]),We]),Ye,e("ul",null,[e("li",null,[Ze,o(s,{to:"/en/doc/dashboard.html"},{default:i(()=>[$e]),_:1})]),et,e("li",null,[tt,o(s,{to:"/en/doc/watch.html"},{default:i(()=>[ot]),_:1}),st]),e("li",null,[it,o(s,{to:"/en/doc/thread.html"},{default:i(()=>[nt]),_:1})]),lt,at,e("li",null,[dt,o(s,{to:"/en/doc/trace.html"},{default:i(()=>[rt]),_:1}),ct]),e("li",null,[ht,o(s,{to:"/en/doc/trace.html"},{default:i(()=>[_t]),_:1}),ut]),mt]),ft,e("ul",null,[gt,e("li",null,[pt,e("a",bt,[vt,o(n)]),xt]),kt]),wt,e("ul",null,[e("li",null,[yt,o(s,{to:"/en/doc/jad.html"},{default:i(()=>[Nt]),_:1}),At,jt,Lt]),e("li",null,[Ct,o(s,{to:"/en/doc/tt.html"},{default:i(()=>[Et]),_:1}),zt])]),Bt,e("ul",null,[Ot,qt,Dt,Gt,e("li",null,[It,o(s,{to:"/en/doc/sc.html"},{default:i(()=>[Jt]),_:1}),Pt])]),Vt,Kt])}const Xt=d(h,[["render",Rt],["__file","release-notes.html.vue"]]);export{Xt as default}; diff --git a/3.x/assets/release-notes.html.8810e03d.js b/3.x/assets/release-notes.html.8810e03d.js new file mode 100644 index 00000000000..8b7d9f3273d --- /dev/null +++ b/3.x/assets/release-notes.html.8810e03d.js @@ -0,0 +1 @@ +import{_ as h,o as d,c as o,a,b as e,w as n,e as l,d as r,r as t}from"./app.4d248835.js";const c={},u=a("h1",{id:"release-notes",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#release-notes","aria-hidden":"true"},"#"),l(" Release Notes")],-1),_=a("h2",{id:"v3-1-1",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#v3-1-1","aria-hidden":"true"},"#"),l(" v3.1.1")],-1),b={href:"https://github.com/alibaba/arthas/releases/tag/arthas-all-3.1.1",target:"_blank",rel:"noopener noreferrer"},v=l("https://github.com/alibaba/arthas/releases/tag/arthas-all-3.1.1"),f=a("h2",{id:"v3-1-0",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#v3-1-0","aria-hidden":"true"},"#"),l(" v3.1.0")],-1),p={href:"https://github.com/alibaba/arthas/releases/tag/3.1.0",target:"_blank",rel:"noopener noreferrer"},g=l("https://github.com/alibaba/arthas/releases/tag/3.1.0"),x=a("h2",{id:"v3-0-5",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#v3-0-5","aria-hidden":"true"},"#"),l(" v3.0.5")],-1),m={href:"https://github.com/alibaba/arthas/releases/tag/arthas-all-3.0.5",target:"_blank",rel:"noopener noreferrer"},N=l("https://github.com/alibaba/arthas/releases/tag/arthas-all-3.0.5"),k=a("h2",{id:"v3-0-4",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#v3-0-4","aria-hidden":"true"},"#"),l(" v3.0.4")],-1),j={href:"https://github.com/alibaba/arthas/releases/tag/arthas-all-3.0.4",target:"_blank",rel:"noopener noreferrer"},w=l("https://github.com/alibaba/arthas/releases/tag/arthas-all-3.0.4"),C=r('

    v2017-11-03

    • \u589E\u52A0 getstatic \u65B9\u6CD5\u83B7\u53D6\u9759\u6001\u53D8\u91CF
    • \u4FEE\u590D arthas classloader \u52A0\u8F7D\u5230\u5E94\u7528\u65E5\u5FD7\u7684\u95EE\u9898
    • \u589E\u52A0 ognl custom classloader \u4FBF\u4E8E\u8C03\u7528\u9759\u6001\u65B9\u6CD5
    • \u4F18\u5316 termd \u8F93\u51FA\u5927\u5B57\u7B26\u4E32\u7684\u6027\u80FD\u95EE\u9898
    • classloader \u547D\u4EE4\u9ED8\u8BA4\u6309\u7C7B\u52A0\u8F7D\u5668\u7C7B\u578B\u5206\u7C7B\u7F16\u8BD1
    • \u4FEE\u590D wc \u547D\u4EE4\u7EDF\u8BA1\u9519\u8BEF\u7684\u95EE\u9898
    • \u7981\u6B62\u589E\u5F3A\u7279\u5B9A JDK \u7C7B\uFF0C\u5982 Classloader, Method, Integer \u7B49
    • \u652F\u6301 OGNL \u8868\u8FBE\u5F0F\u51FA\u9519\u76F4\u63A5\u9000\u51FA\u547D\u4EE4
    • \u4FEE\u590D\u7BA1\u9053\u7C7B\u547D\u4EE4\u5355\u72EC\u51FA\u9519\u7684\u95EE\u9898
    • \u4F18\u5316\u547D\u4EE4\u91CD\u5B9A\u5411\u529F\u80FD\uFF0C\u4F7F\u7528\u5F02\u6B65\u65E5\u5FD7\u8F93\u51FA\u7ED3\u679C
    • trace \u547D\u4EE4\u589E\u52A0\u8FC7\u6EE4 jdk \u65B9\u6CD5\u8C03\u7528\u7684\u529F\u80FD

    v2017-09-22

    • \u4F18\u5316 agent server\b \u542F\u52A8\u65F6\u7684\u5F02\u5E38\u4FE1\u606F
    • \u4FEE\u590D\u5F02\u6B65\u547D\u4EE4\u7684\u4E00\u4E9B bug

    v2017-09-11

    ',5),E=l("\u652F\u6301"),L=l("\u5F02\u6B65\u540E\u540E\u547D\u4EE4"),y=a("li",null,"jad \u547D\u4EE4\u4F18\u5316\uFF0C\u652F\u6301 JDK8 \u53CA\u5185\u90E8\u7C7B",-1),A=a("li",null,"\u4FEE\u590D\u4E2D\u6587\u4E71\u7801\u95EE\u9898",-1),B=r('

    v2017-05-11

    • tt \u547D\u4EE4\u9ED8\u8BA4\u53EA\u5C55\u5F00 1 \u5C42\uFF0C\u9632\u6B62\u5BF9\u8C61\u8FC7\u5927\u9020\u6210\u5361\u987F
    • \u4FEE\u590D\u4E2D\u6587\u65E0\u6CD5\u5C55\u793A\u7684\u95EE\u9898

    v2017-05-12

    • Arthas 3.0 release

    v2016-12-09

    • as.sh \u652F\u6301-h \u8F93\u51FA\u5E2E\u52A9
    • [#121] \u4FEE\u590D\u6B8B\u7559\u7684\u4E34\u65F6\u6587\u4EF6\u5BFC\u81F4 arthas \u542F\u52A8\u5931\u8D25\u7684\u95EE\u9898
    • [#123] \u4FEE\u590D\u53CD\u590D attach/shutdown \u9020\u6210 classloader \u6CC4\u9732\u7684\u95EE\u9898
    • \u4F18\u5316\u547D\u4EE4\u4E2D\u7684\u5E2E\u52A9\u63D0\u793A\u4FE1\u606F
    • [#126] \u4FEE\u590D tm \u547D\u4EE4\u6587\u6863\u94FE\u63A5\u9519\u4E71\u7684\u95EE\u9898
    • [#122] classloader \u547D\u4EE4\u4E2D\u8FC7\u6EE4\u6389sun.reflect.DelegatingClassLoader
    • [#129] \u4FEE\u590D classloader \u5C42\u6B21\u5C55\u793A\u7684\u95EE\u9898
    • [#125] arthas \u8F93\u51FA\u7684 log \u4E0D\u4E3B\u52A8\u6362\u884C\uFF0C\u5BF9\u4E8E\u65E5\u5FD7\u89E3\u6790\u66F4\u52A0\u53CB\u597D
    • [#96] sc \u7B49\u547D\u4EE4\u652F\u6301 com/taobao/xxx/TestClass \u8FD9\u6837\u7684\u683C\u5F0F\uFF0C\u4EE5\u540E\u590D\u5236\u7C98\u8D34\u4E0D\u9700\u8981\u5728\u628A'/'\u66FF\u6362\u6210'.'\u5566
    • [#124] \u4FEE\u590D\u67D0\u4E9B\u60C5\u51B5\u4E0B trace \u7684\u65F6\u95F4\u4E3A\u8D1F\u503C\u7684\u95EE\u9898
    • [#128] tt \u547D\u4EE4\u7684\u7ED3\u679C\u9ED8\u8BA4\u81EA\u52A8\u5C55\u5F00\uFF0C\u4E0D\u9700\u8981\u518D\u589E\u52A0-x 2\u6765\u770B\u5230\u53C2\u6570\uFF0C\u5F02\u5E38\u7684\u8BE6\u7EC6\u4FE1\u606F\u4E86\u3002
    • [#130] \u4FEE\u590D\u5F53\u7AEF\u53E3\u51B2\u7A81\u65F6\uFF0C\u6CA1\u6709\u5F88\u597D\u5730\u6253\u5370\u9519\u8BEF\uFF0C\u800C\u662F\u8FDB\u5165\u4E86\u4E00\u4E2A\u51FA\u9519\u7684\u4EA4\u4E92\u754C\u9762\u7684\u95EE\u9898
    • [#98] \u4FEE\u590D Arthas \u542F\u52A8\u65F6\uFF0C\u5982\u679C\u4E0B\u8F7D\u66F4\u65B0\u5931\u8D25\uFF0C\u5BFC\u81F4\u542F\u52A8\u5931\u8D25\u7684\u95EE\u9898
    • [#139] \u4FEE\u590D\u67D0\u4E9B\u7279\u6B8A\u60C5\u51B5\u4E0B agent attach \u5931\u8D25\u7684\u95EE\u9898
    • [#156] jd-core-java \u5EF6\u8FDF\u521D\u59CB\u5316\uFF0C\u907F\u514D arthas \u542F\u52A8\u65F6\u51FA\u9519
    • \u4FEE\u590D\u7EBF\u7A0B\u540D\u91CD\u590D\u7684\u95EE\u9898
    • [#150] trace \u547D\u4EE4\u652F\u6301\u6309\u8FD0\u884C\u603B\u8017\u65F6\u8FC7\u6EE4
    • \u4FEE\u590D sc \u67E5\u627E SystemClassloader \u65F6\u53EF\u80FD\u51FA\u73B0\u7684 NPE
    • [#180] \u4FEE\u590D\u7B2C\u4E00\u6B21 Attach \u6210\u529F\u4E4B\u540E\uFF0C\u5220\u9664\u4E4B\u524D Arthas \u7684\u5B89\u88C5\u5305\uFF0C\u91CD\u65B0\u7F16\u8BD1\u6253\u5305\uFF0C\u518D\u6B21 attach \u5931\u8D25\u7684\u95EE\u9898

    v2016-06-07

    • \u4FEE\u590D\u4EE5\u8D44\u6E90\u65B9\u5F0F\u52A0\u8F7D spy \u7C7B\u65F6\u51FA\u73B0 NPE \u7684\u95EE\u9898
    • \u652F\u6301\u4E00\u952E\u627E\u51FA\u7EBF\u7A0B\u4E2D\u83B7\u5F97\u9501\u5E76\u963B\u585E\u4F4F\u5176\u4ED6\u7EBF\u7A0B\u7684\u7EBF\u7A0B
    • \u4F18\u5316 Thread \u8F93\u51FA\uFF0C\u6309\u7EBF\u7A0B\u540D\u6392\u5E8F
    • \u83B7\u53D6 topN \u5FD9\u7684\u7EBF\u7A0B\u65F6\uFF0C\u652F\u6301\u6307\u5B9A\u5237\u65B0\u95F4\u9694

    v2016-04-08

    • New feature\uFF1A

      • dashboard \u652F\u6301\u6307\u5B9A\u5237\u65B0\u9891\u7387\uFF0C\u652F\u6301\u6307\u5B9A\u6267\u884C\u6B21\u6570
      • \u547D\u4EE4\u6267\u884C\u7ED3\u679C\u4FDD\u5B58\u5230\u65E5\u5FD7\u6587\u4EF6\uFF0C\u65B9\u4FBF\u540E\u7EED\u67E5\u770B
      • \u542F\u52A8\u901F\u5EA6\u4F18\u5316\uFF0C\u7B2C\u4E00\u6B21 attach \u7684\u901F\u5EA6\u63D0\u5347\u4E00\u500D
      • \u652F\u6301\u6279\u5904\u7406\u529F\u80FD\uFF0C\u652F\u6301\u6267\u884C\u811A\u672C\u6587\u4EF6
      • \u4F18\u5316\u542F\u52A8\u903B\u8F91\uFF0Carthas \u811A\u672C\u542F\u52A8\u65F6\u4EA4\u4E92\u5F0F\u9009\u62E9\u8FDB\u7A0B
      • \u7C7B\u9ED8\u8BA4\u542F\u7528\u7EE7\u627F\u5173\u7CFB\u67E5\u8BE2\uFF0C\u67E5\u627E\u7C7B\u65F6\u9ED8\u8BA4\u4F1A\u67E5\u627E\u5B50\u7C7B\uFF0C\u5982\u679C\u9700\u8981\u5173\u95ED\uFF0C\u5219\u901A\u8FC7\u5168\u5C40\u5F00\u5173 Options disable-sub-class \u5173\u95ED
      • \u652F\u6301\u5728\u5F69\u8272\u6A21\u5F0F\u548C\u6587\u672C\u6A21\u5F0F\u4E2D\u5207\u6362
    • UI Improvement:

      • \u5408\u5E76 exit \u548C quit \u547D\u4EE4
      • \u547D\u4EE4\u5E2E\u52A9\u4FE1\u606F\u589E\u52A0 wiki \u94FE\u63A5
      • \u4F18\u5316 watch \u7684\u903B\u8F91\uFF0C\u66F4\u52A0\u7B26\u5408\u5927\u5BB6\u7684\u76F4\u89C9
      • thread \u547D\u4EE4\u589E\u52A0 example \u8BF4\u660E
      • \u81EA\u52A8\u8865\u5168\u7684\u65F6\u5019\uFF0C\u5FFD\u7565\u5927\u5C0F\u5199
    • Bugfix:

      • \u4FEE\u590D trace \u547D\u4EE4\u9047\u5230\u5FAA\u73AF\u9020\u6210\u8F93\u51FA\u592A\u957F
      • \u4FEE\u590D trace \u547D\u4EE4\u5728\u65B9\u6CD5\u8C03\u7528\u4E2D\u629B\u51FA\u4E86\u5F02\u5E38\uFF0C\u4F1A\u8BA9 trace \u7684\u8282\u70B9\u9519\u4F4D
      • \u4FEE\u6B63\u589E\u5F3A BootstrapClassLoader \u52A0\u8F7D\u7684\u7C7B\uFF0C\u627E\u4E0D\u5230 Spy \u7684\u95EE\u9898
      • \u4FEE\u590D\u67D0\u4E9B\u914D\u8272\u65B9\u6848\u4E0B\uFF0C\u7ED3\u679C\u663E\u793A\u4E0D\u53CB\u597D\u7684\u95EE\u9898

    v2016-03-07

    • \u652F\u6301\u4E00\u952E\u67E5\u770B\u5F53\u524D\u6700\u5FD9\u7684\u524D N \u4E2A\u7EBF\u7A0B\u53CA\u5176\u5806\u6808
    • \u4FEE\u590D openjdk \u4E0B\u542F\u52A8 arthas \u5931\u8D25\u7684\u95EE\u9898\uFF08\u9700\u8981\u91CD\u65B0\u5B89\u88C5 as.sh\uFF09
    • \u4E00\u4E9B\u4F53\u9A8C\u4F18\u5316

    v2016-01-18

    • \u4F18\u5316 jad\uFF0C\u5B9E\u65F6 dump \u5185\u5B58 byte array\uFF0C\u5E76\u4F7F\u7528 jd-core-java \u53CD\u7F16\u8BD1\uFF0C\u652F\u6301\u884C\u53F7\u663E\u793A
    • \u4FEE\u590D tt \u547D\u4EE4\u5728\u76D1\u63A7\u4E0E\u7EBF\u7A0B\u4E0A\u4E0B\u6587\u76F8\u5173\u7684\u65B9\u6CD5\u8C03\u7528\u65F6\uFF0C\u663E\u793A/\u91CD\u505A\u7B49\u573A\u666F\u4E0B\u7684 bug

    v2016-01-08

    • \u4FEE\u590D\u4E00\u4E9B bug
      • jad NPE
      • watch/monitor NPE
      • \u4E0D\u9700\u8981\u8F6C\u4E49
      • \u6570\u636E\u7EDF\u8BA1\u95EE\u9898\u4FEE\u590D
      • sc \u67E5\u770B\u9759\u6001\u53D8\u91CF\u5185\u90E8\u5C42\u6B21\u7ED3\u6784

    v2015-12-29

    • Arthas 2.0 \u6D4B\u8BD5\u7248\u672C\u53D1\u5E03\uFF01
    ',18);function I(P,V){const i=t("ExternalLinkIcon"),s=t("RouterLink");return d(),o("div",null,[u,_,a("ul",null,[a("li",null,[a("a",b,[v,e(i)])])]),f,a("ul",null,[a("li",null,[a("a",p,[g,e(i)])])]),x,a("ul",null,[a("li",null,[a("a",m,[N,e(i)])])]),k,a("ul",null,[a("li",null,[a("a",j,[w,e(i)])])]),C,a("ul",null,[a("li",null,[E,e(s,{to:"/doc/async.html"},{default:n(()=>[L]),_:1})]),y,A]),B])}const R=h(c,[["render",I],["__file","release-notes.html.vue"]]);export{R as default}; diff --git a/3.x/assets/release-notes.html.bd30f66e.js b/3.x/assets/release-notes.html.bd30f66e.js new file mode 100644 index 00000000000..9518af3f2bf --- /dev/null +++ b/3.x/assets/release-notes.html.bd30f66e.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-648880ae","path":"/doc/release-notes.html","title":"Release Notes","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"v3.1.1","slug":"v3-1-1","link":"#v3-1-1","children":[]},{"level":2,"title":"v3.1.0","slug":"v3-1-0","link":"#v3-1-0","children":[]},{"level":2,"title":"v3.0.5","slug":"v3-0-5","link":"#v3-0-5","children":[]},{"level":2,"title":"v3.0.4","slug":"v3-0-4","link":"#v3-0-4","children":[]},{"level":2,"title":"v2017-11-03","slug":"v2017-11-03","link":"#v2017-11-03","children":[]},{"level":2,"title":"v2017-09-22","slug":"v2017-09-22","link":"#v2017-09-22","children":[]},{"level":2,"title":"v2017-09-11","slug":"v2017-09-11","link":"#v2017-09-11","children":[]},{"level":2,"title":"v2017-05-11","slug":"v2017-05-11","link":"#v2017-05-11","children":[]},{"level":2,"title":"v2017-05-12","slug":"v2017-05-12","link":"#v2017-05-12","children":[]},{"level":2,"title":"v2016-12-09","slug":"v2016-12-09","link":"#v2016-12-09","children":[]},{"level":2,"title":"v2016-06-07","slug":"v2016-06-07","link":"#v2016-06-07","children":[]},{"level":2,"title":"v2016-04-08","slug":"v2016-04-08","link":"#v2016-04-08","children":[]},{"level":2,"title":"v2016-03-07","slug":"v2016-03-07","link":"#v2016-03-07","children":[]},{"level":2,"title":"v2016-01-18","slug":"v2016-01-18","link":"#v2016-01-18","children":[]},{"level":2,"title":"v2016-01-08","slug":"v2016-01-08","link":"#v2016-01-08","children":[]},{"level":2,"title":"v2015-12-29","slug":"v2015-12-29","link":"#v2015-12-29","children":[]}],"git":{"updatedTime":1658120060000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/release-notes.md","version":"3.7.3"}');export{l as data}; diff --git a/3.x/assets/reset.html.613ce22c.js b/3.x/assets/reset.html.613ce22c.js new file mode 100644 index 00000000000..c7064bb8a51 --- /dev/null +++ b/3.x/assets/reset.html.613ce22c.js @@ -0,0 +1,36 @@ +import{_ as i,o as a,c as t,a as e,b as d,e as s,d as r,r as l}from"./app.4d248835.js";const c={},v=e("h1",{id:"reset",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#reset","aria-hidden":"true"},"#"),s(" reset")],-1),o={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-reset",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"reset",-1),u=s("\u5728\u7EBF\u6559\u7A0B"),h=r(`

    \u63D0\u793A

    \u91CD\u7F6E\u589E\u5F3A\u7C7B\uFF0C\u5C06\u88AB Arthas \u589E\u5F3A\u8FC7\u7684\u7C7B\u5168\u90E8\u8FD8\u539F\uFF0CArthas \u670D\u52A1\u7AEFstop\u65F6\u4F1A\u91CD\u7F6E\u6240\u6709\u589E\u5F3A\u8FC7\u7684\u7C7B

    \u4F7F\u7528\u53C2\u8003

    $ reset -h
    + USAGE:
    +   reset [-h] [-E] [class-pattern]
    +
    + SUMMARY:
    +   Reset all the enhanced classes
    +
    + EXAMPLES:
    +   reset
    +   reset *List
    +   reset -E .*List
    +
    + OPTIONS:
    + -h, --help                                                         this help
    + -E, --regex                                                        Enable regular expression to match (wildcard matching by default)
    + <class-pattern>                                                    Path and classname of Pattern Matching
    +

    \u8FD8\u539F\u6307\u5B9A\u7C7B

    $ trace Test test
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 57 ms.
    +\`---ts=2017-10-26 17:10:33;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@14dad5dc
    +    \`---[0.590102ms] Test:test()
    +
    +\`---ts=2017-10-26 17:10:34;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@14dad5dc
    +    \`---[0.068692ms] Test:test()
    +
    +$ reset Test
    +Affect(class-cnt:1 , method-cnt:0) cost in 11 ms.
    +

    \u8FD8\u539F\u6240\u6709\u7C7B

    $ trace Test test
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 15 ms.
    +\`---ts=2017-10-26 17:12:06;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@14dad5dc
    +    \`---[0.128518ms] Test:test()
    +
    +$ reset
    +Affect(class-cnt:1 , method-cnt:0) cost in 9 ms.
    +
    `,7);function b(p,_){const n=l("ExternalLinkIcon");return a(),t("div",null,[v,e("p",null,[e("a",o,[m,u,d(n)])]),h])}const x=i(c,[["render",b],["__file","reset.html.vue"]]);export{x as default}; diff --git a/3.x/assets/reset.html.6542e356.js b/3.x/assets/reset.html.6542e356.js new file mode 100644 index 00000000000..8a426318e9b --- /dev/null +++ b/3.x/assets/reset.html.6542e356.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-6735226e","path":"/en/doc/reset.html","title":"reset","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]},{"level":2,"title":"Reset specified class","slug":"reset-specified-class","link":"#reset-specified-class","children":[]},{"level":2,"title":"Reset all classes","slug":"reset-all-classes","link":"#reset-all-classes","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/reset.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/reset.html.b7ada98f.js b/3.x/assets/reset.html.b7ada98f.js new file mode 100644 index 00000000000..07cecf09e3a --- /dev/null +++ b/3.x/assets/reset.html.b7ada98f.js @@ -0,0 +1,36 @@ +import{_ as a,o as i,c as t,a as e,b as d,e as s,d as l,r}from"./app.4d248835.js";const c={},v=e("h1",{id:"reset",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#reset","aria-hidden":"true"},"#"),s(" reset")],-1),o={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-reset",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"reset",-1),u=s(" online tutorial"),h=l(`

    TIP

    Reset all classes that have been enhanced by Arthas. These enhanced classes will also be reset when Arthas server is stop.

    Usage

    $ reset -h
    + USAGE:
    +   reset [-h] [-E] [class-pattern]
    +
    + SUMMARY:
    +   Reset all the enhanced classes
    +
    + EXAMPLES:
    +   reset
    +   reset *List
    +   reset -E .*List
    +
    + OPTIONS:
    + -h, --help                                                         this help
    + -E, --regex                                                        Enable regular expression to match (wildcard matching by default)
    + <class-pattern>                                                    Path and classname of Pattern Matching
    +

    Reset specified class

    $ trace Test test
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 57 ms.
    +\`---ts=2017-10-26 17:10:33;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@14dad5dc
    +    \`---[0.590102ms] Test:test()
    +
    +\`---ts=2017-10-26 17:10:34;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@14dad5dc
    +    \`---[0.068692ms] Test:test()
    +
    +$ reset Test
    +Affect(class-cnt:1 , method-cnt:0) cost in 11 ms.
    +

    Reset all classes

    $ trace Test test
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 15 ms.
    +\`---ts=2017-10-26 17:12:06;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@14dad5dc
    +    \`---[0.128518ms] Test:test()
    +
    +$ reset
    +Affect(class-cnt:1 , method-cnt:0) cost in 9 ms.
    +
    `,7);function b(p,_){const n=r("ExternalLinkIcon");return i(),t("div",null,[v,e("p",null,[e("a",o,[m,u,d(n)])]),h])}const x=a(c,[["render",b],["__file","reset.html.vue"]]);export{x as default}; diff --git a/3.x/assets/reset.html.d6cfba7b.js b/3.x/assets/reset.html.d6cfba7b.js new file mode 100644 index 00000000000..551ed8e4a67 --- /dev/null +++ b/3.x/assets/reset.html.d6cfba7b.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-71f77d4c","path":"/doc/reset.html","title":"reset","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]},{"level":2,"title":"\u8FD8\u539F\u6307\u5B9A\u7C7B","slug":"\u8FD8\u539F\u6307\u5B9A\u7C7B","link":"#\u8FD8\u539F\u6307\u5B9A\u7C7B","children":[]},{"level":2,"title":"\u8FD8\u539F\u6240\u6709\u7C7B","slug":"\u8FD8\u539F\u6240\u6709\u7C7B","link":"#\u8FD8\u539F\u6240\u6709\u7C7B","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/reset.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/retransform.html.509ca8a2.js b/3.x/assets/retransform.html.509ca8a2.js new file mode 100644 index 00000000000..5d8dd6f0a95 --- /dev/null +++ b/3.x/assets/retransform.html.509ca8a2.js @@ -0,0 +1,50 @@ +import{_ as t,o as r,c as l,a as s,b as e,e as n,d as o,r as c}from"./app.4d248835.js";const p={},i=s("h1",{id:"retransform",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#retransform","aria-hidden":"true"},"#"),n(" retransform")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=cn&id=command-mc-retransform",target:"_blank",rel:"noopener noreferrer"},d=s("code",null,"mc-retransform",-1),m=n("\u5728\u7EBF\u6559\u7A0B"),k=s("div",{class:"custom-container tip"},[s("p",{class:"custom-container-title"},"\u63D0\u793A"),s("p",null,[n("\u52A0\u8F7D\u5916\u90E8\u7684"),s("code",null,".class"),n("\u6587\u4EF6\uFF0Cretransform jvm \u5DF2\u52A0\u8F7D\u7684\u7C7B\u3002")])],-1),v=n("\u53C2\u8003\uFF1A"),h={href:"https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/Instrumentation.html#retransformClasses-java.lang.Class...-",target:"_blank",rel:"noopener noreferrer"},b=n("Instrumentation#retransformClasses"),f=o(`

    \u4F7F\u7528\u53C2\u8003

       retransform /tmp/Test.class
    +   retransform -l
    +   retransform -d 1                    # delete retransform entry
    +   retransform --deleteAll             # delete all retransform entries
    +   retransform --classPattern demo.*   # triger retransform classes
    +   retransform -c 327a647b /tmp/Test.class /tmp/Test\\$Inner.class
    +   retransform --classLoaderClass 'sun.misc.Launcher$AppClassLoader' /tmp/Test.class
    +

    retransform \u6307\u5B9A\u7684 .class \u6587\u4EF6

    $ retransform /tmp/MathGame.class
    +retransform success, size: 1, classes:
    +demo.MathGame
    +

    \u52A0\u8F7D\u6307\u5B9A\u7684 .class \u6587\u4EF6\uFF0C\u7136\u540E\u89E3\u6790\u51FA class name\uFF0C\u518D retransform jvm \u4E2D\u5DF2\u52A0\u8F7D\u7684\u5BF9\u5E94\u7684\u7C7B\u3002\u6BCF\u52A0\u8F7D\u4E00\u4E2A .class \u6587\u4EF6\uFF0C\u5219\u4F1A\u8BB0\u5F55\u4E00\u4E2A retransform entry.

    \u63D0\u793A

    \u5982\u679C\u591A\u6B21\u6267\u884C retransform \u52A0\u8F7D\u540C\u4E00\u4E2A class \u6587\u4EF6\uFF0C\u5219\u4F1A\u6709\u591A\u6761 retransform entry.

    \u67E5\u770B retransform entry

    $ retransform -l
    +Id              ClassName       TransformCount  LoaderHash      LoaderClassName
    +1               demo.MathGame   1               null            null
    +
    • TransformCount \u7EDF\u8BA1\u5728 ClassFileTransformer#transform \u51FD\u6570\u91CC\u5C1D\u8BD5\u8FD4\u56DE entry \u5BF9\u5E94\u7684 .class \u6587\u4EF6\u7684\u6B21\u6570\uFF0C\u4F46\u5E76\u4E0D\u8868\u660E transform \u4E00\u5B9A\u6210\u529F\u3002

    \u5220\u9664\u6307\u5B9A retransform entry

    \u9700\u8981\u6307\u5B9A id\uFF1A

    retransform -d 1
    +

    \u5220\u9664\u6240\u6709 retransform entry

    retransform --deleteAll
    +

    \u663E\u5F0F\u89E6\u53D1 retransform

    $ retransform --classPattern demo.MathGame
    +retransform success, size: 1, classes:
    +demo.MathGame
    +

    \u6CE8\u610F\uFF1A\u5BF9\u4E8E\u540C\u4E00\u4E2A\u7C7B\uFF0C\u5F53\u5B58\u5728\u591A\u4E2A retransform entry \u65F6\uFF0C\u5982\u679C\u663E\u5F0F\u89E6\u53D1 retransform \uFF0C\u5219\u6700\u540E\u6DFB\u52A0\u7684 entry \u751F\u6548(id \u6700\u5927\u7684)\u3002

    \u6D88\u9664 retransform \u7684\u5F71\u54CD

    \u5982\u679C\u5BF9\u67D0\u4E2A\u7C7B\u6267\u884C retransform \u4E4B\u540E\uFF0C\u60F3\u6D88\u9664\u5F71\u54CD\uFF0C\u5219\u9700\u8981\uFF1A

    • \u5220\u9664\u8FD9\u4E2A\u7C7B\u5BF9\u5E94\u7684 retransform entry
    • \u91CD\u65B0\u89E6\u53D1 retransform

    \u63D0\u793A

    \u5982\u679C\u4E0D\u6E05\u9664\u6389\u6240\u6709\u7684 retransform entry\uFF0C\u5E76\u91CD\u65B0\u89E6\u53D1 retransform \uFF0C\u5219 arthas stop \u65F6\uFF0Cretransform \u8FC7\u7684\u7C7B\u4ECD\u7136\u751F\u6548\u3002

    \u7ED3\u5408 jad/mc \u547D\u4EE4\u4F7F\u7528

    jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
    +
    +mc /tmp/UserController.java -d /tmp
    +
    +retransform /tmp/com/example/demo/arthas/user/UserController.class
    +
    • jad \u547D\u4EE4\u53CD\u7F16\u8BD1\uFF0C\u7136\u540E\u53EF\u4EE5\u7528\u5176\u5B83\u7F16\u8BD1\u5668\uFF0C\u6BD4\u5982 vim \u6765\u4FEE\u6539\u6E90\u7801
    • mc \u547D\u4EE4\u6765\u5185\u5B58\u7F16\u8BD1\u4FEE\u6539\u8FC7\u7684\u4EE3\u7801
    • \u7528 retransform \u547D\u4EE4\u52A0\u8F7D\u65B0\u7684\u5B57\u8282\u7801

    \u4E0A\u4F20 .class \u6587\u4EF6\u5230\u670D\u52A1\u5668\u7684\u6280\u5DE7

    \u4F7F\u7528mc\u547D\u4EE4\u6765\u7F16\u8BD1jad\u7684\u53CD\u7F16\u8BD1\u7684\u4EE3\u7801\u6709\u53EF\u80FD\u5931\u8D25\u3002\u53EF\u4EE5\u5728\u672C\u5730\u4FEE\u6539\u4EE3\u7801\uFF0C\u7F16\u8BD1\u597D\u540E\u518D\u4E0A\u4F20\u5230\u670D\u52A1\u5668\u4E0A\u3002\u6709\u7684\u670D\u52A1\u5668\u4E0D\u5141\u8BB8\u76F4\u63A5\u4E0A\u4F20\u6587\u4EF6\uFF0C\u53EF\u4EE5\u4F7F\u7528base64\u547D\u4EE4\u6765\u7ED5\u8FC7\u3002

    1. \u5728\u672C\u5730\u5148\u8F6C\u6362.class\u6587\u4EF6\u4E3A base64\uFF0C\u518D\u4FDD\u5B58\u4E3A result.txt

      base64 < Test.class > result.txt
      +
    2. \u5230\u670D\u52A1\u5668\u4E0A\uFF0C\u65B0\u5EFA\u5E76\u7F16\u8F91result.txt\uFF0C\u590D\u5236\u672C\u5730\u7684\u5185\u5BB9\uFF0C\u7C98\u8D34\u518D\u4FDD\u5B58

    3. \u628A\u670D\u52A1\u5668\u4E0A\u7684 result.txt\u8FD8\u539F\u4E3A.class

      base64 -d < result.txt > Test.class
      +
    4. \u7528 md5 \u547D\u4EE4\u8BA1\u7B97\u54C8\u5E0C\u503C\uFF0C\u6821\u9A8C\u662F\u5426\u4E00\u81F4

    retransform \u7684\u9650\u5236

    • \u4E0D\u5141\u8BB8\u65B0\u589E\u52A0 field/method
    • \u6B63\u5728\u8DD1\u7684\u51FD\u6570\uFF0C\u6CA1\u6709\u9000\u51FA\u4E0D\u80FD\u751F\u6548\uFF0C\u6BD4\u5982\u4E0B\u9762\u65B0\u589E\u52A0\u7684System.out.println\uFF0C\u53EA\u6709run()\u51FD\u6570\u91CC\u7684\u4F1A\u751F\u6548
    public class MathGame {
    +    public static void main(String[] args) throws InterruptedException {
    +        MathGame game = new MathGame();
    +        while (true) {
    +            game.run();
    +            TimeUnit.SECONDS.sleep(1);
    +            // \u8FD9\u4E2A\u4E0D\u751F\u6548\uFF0C\u56E0\u4E3A\u4EE3\u7801\u4E00\u76F4\u8DD1\u5728 while\u91CC
    +            System.out.println("in loop");
    +        }
    +    }
    +
    +    public void run() throws InterruptedException {
    +        // \u8FD9\u4E2A\u751F\u6548\uFF0C\u56E0\u4E3Arun()\u51FD\u6570\u6BCF\u6B21\u90FD\u53EF\u4EE5\u5B8C\u6574\u7ED3\u675F
    +        System.out.println("call run()");
    +        try {
    +            int number = random.nextInt();
    +            List<Integer> primeFactors = primeFactors(number);
    +            print(number, primeFactors);
    +
    +        } catch (Exception e) {
    +            System.out.println(String.format("illegalArgumentCount:%3d, ", illegalArgumentCount) + e.getMessage());
    +        }
    +    }
    +}
    +
    `,30);function g(x,y){const a=c("ExternalLinkIcon");return r(),l("div",null,[i,s("p",null,[s("a",u,[d,m,e(a)])]),k,s("p",null,[v,s("a",h,[b,e(a)])]),f])}const w=t(p,[["render",g],["__file","retransform.html.vue"]]);export{w as default}; diff --git a/3.x/assets/retransform.html.590b7b85.js b/3.x/assets/retransform.html.590b7b85.js new file mode 100644 index 00000000000..d392cd64706 --- /dev/null +++ b/3.x/assets/retransform.html.590b7b85.js @@ -0,0 +1,50 @@ +import{_ as t,o,c as r,a as s,b as e,e as n,d as l,r as i}from"./app.4d248835.js";const c={},p=s("h1",{id:"retransform",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#retransform","aria-hidden":"true"},"#"),n(" retransform")],-1),d={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=en&id=command-mc-retransform",target:"_blank",rel:"noopener noreferrer"},u=s("code",null,"mc-retransform",-1),m=n(" online tutorial"),h=s("div",{class:"custom-container tip"},[s("p",{class:"custom-container-title"},"TIP"),s("p",null,[n("Load the external "),s("code",null,"*.class"),n(" files to retransform the loaded classes in JVM.")])],-1),v=n("Reference: "),k={href:"https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/Instrumentation.html#retransformClasses-java.lang.Class...-",target:"_blank",rel:"noopener noreferrer"},f=n("Instrumentation#retransformClasses"),b=l(`

    Usage

       retransform /tmp/Test.class
    +   retransform -l
    +   retransform -d 1                    # delete retransform entry
    +   retransform --deleteAll             # delete all retransform entries
    +   retransform --classPattern demo.*   # triger retransform classes
    +   retransform -c 327a647b /tmp/Test.class /tmp/Test\\$Inner.class
    +   retransform --classLoaderClass 'sun.misc.Launcher$AppClassLoader' /tmp/Test.class
    +

    retransform the specified .class file

    $ retransform /tmp/MathGame.class
    +retransform success, size: 1, classes:
    +demo.MathGame
    +

    Load the specified .class file, then parse out the class name, and then retransform the corresponding class loaded in the jvm. Every time a .class file is loaded, a retransform entry is recorded.

    TIP

    If retransform is executed multiple times to load the same class file, there will be multiple retransform entries.

    View retransform entry

    $ retransform -l
    +Id              ClassName       TransformCount  LoaderHash      LoaderClassName
    +1               demo.MathGame   1               null            null
    +
    • TransformCount counts the times of attempts to return the .class file corresponding to the entry in the ClassFileTransformer#transform method, but it does not mean that the transform must be successful.

    Delete the specified retransform entry

    Need to specify id:

    retransform -d 1
    +

    Delete all retransform entries

    retransform --deleteAll
    +

    Explicitly trigger retransform

    $ retransform --classPattern demo.MathGame
    +retransform success, size: 1, classes:
    +demo.MathGame
    +

    WARNING

    Note: For the same class, when there are multiple retransform entries, if retransform is explicitly triggered, the entry added last will take effect (the one with the largest id).

    Eliminate the influence of retransform

    If you want to eliminate the impact after performing retransform on a class, you need to:

    • Delete the retransform entry corresponding to this class
    • Re-trigger retransform

    TIP

    If you do not clear all retransform entries and trigger retransform again, the retransformed classes will still take effect when arthas stop.

    Use with the jad/mc command

    jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
    +
    +mc /tmp/UserController.java -d /tmp
    +
    +retransform /tmp/com/example/demo/arthas/user/UserController.class
    +
    • Use jad command to decompile bytecode, and then you can use other editors, such as vim to modify the source code.
    • mc command to compile the modified code
    • Load new bytecode with retransform command

    Tips for uploading .class files to the server

    The mc command may fail. You can modify the code locally, compile it, and upload it to the server. Some servers do not allow direct uploading files, you can use the base64 command to bypass.

    1. Convert the .class file to base64 first, then save it as result.txt

      Base64 < Test.class > result.txt
      +
    2. Login the server, create and edit result.txt, copy the local content, paste and save

    3. Restore result.txt on the server to .class

      Base64 -d < result.txt > Test.class
      +
    4. Use the md5 command to verify that the .class files are consistent.

    Restrictions of the retransform command

    • New field/method is not allowed
    • The function that is running, no exit can not take effect, such as the new System.out.println added below, only the run() function will take effect.
    public class MathGame {
    +    public static void main(String[] args) throws InterruptedException {
    +        MathGame game = new MathGame();
    +        while (true) {
    +            game.run();
    +            TimeUnit.SECONDS.sleep(1);
    +            // This doesn't work because the code keeps running in while
    +            System.out.println("in loop");
    +        }
    +    }
    +
    +    public void run() throws InterruptedException {
    +        // This works because the run() function ends completely every time
    +        System.out.println("call run()");
    +        try {
    +            int number = random.nextInt();
    +            List<Integer> primeFactors = primeFactors(number);
    +            print(number, primeFactors);
    +
    +        } catch (Exception e) {
    +            System.out.println(String.format("illegalArgumentCount:%3d, ", illegalArgumentCount) + e.getMessage());
    +        }
    +    }
    +}
    +
    `,30);function g(y,x){const a=i("ExternalLinkIcon");return o(),r("div",null,[p,s("p",null,[s("a",d,[u,m,e(a)])]),h,s("p",null,[v,s("a",k,[f,e(a)])]),b])}const _=t(c,[["render",g],["__file","retransform.html.vue"]]);export{_ as default}; diff --git a/3.x/assets/retransform.html.8eba17c2.js b/3.x/assets/retransform.html.8eba17c2.js new file mode 100644 index 00000000000..1f4ffb6964e --- /dev/null +++ b/3.x/assets/retransform.html.8eba17c2.js @@ -0,0 +1 @@ +const r=JSON.parse('{"key":"v-54cde250","path":"/doc/retransform.html","title":"retransform","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]},{"level":2,"title":"retransform \u6307\u5B9A\u7684 .class \u6587\u4EF6","slug":"retransform-\u6307\u5B9A\u7684-class-\u6587\u4EF6","link":"#retransform-\u6307\u5B9A\u7684-class-\u6587\u4EF6","children":[]},{"level":2,"title":"\u67E5\u770B retransform entry","slug":"\u67E5\u770B-retransform-entry","link":"#\u67E5\u770B-retransform-entry","children":[]},{"level":2,"title":"\u5220\u9664\u6307\u5B9A retransform entry","slug":"\u5220\u9664\u6307\u5B9A-retransform-entry","link":"#\u5220\u9664\u6307\u5B9A-retransform-entry","children":[]},{"level":2,"title":"\u5220\u9664\u6240\u6709 retransform entry","slug":"\u5220\u9664\u6240\u6709-retransform-entry","link":"#\u5220\u9664\u6240\u6709-retransform-entry","children":[]},{"level":2,"title":"\u663E\u5F0F\u89E6\u53D1 retransform","slug":"\u663E\u5F0F\u89E6\u53D1-retransform","link":"#\u663E\u5F0F\u89E6\u53D1-retransform","children":[]},{"level":2,"title":"\u6D88\u9664 retransform \u7684\u5F71\u54CD","slug":"\u6D88\u9664-retransform-\u7684\u5F71\u54CD","link":"#\u6D88\u9664-retransform-\u7684\u5F71\u54CD","children":[]},{"level":2,"title":"\u7ED3\u5408 jad/mc \u547D\u4EE4\u4F7F\u7528","slug":"\u7ED3\u5408-jad-mc-\u547D\u4EE4\u4F7F\u7528","link":"#\u7ED3\u5408-jad-mc-\u547D\u4EE4\u4F7F\u7528","children":[]},{"level":2,"title":"\u4E0A\u4F20 .class \u6587\u4EF6\u5230\u670D\u52A1\u5668\u7684\u6280\u5DE7","slug":"\u4E0A\u4F20-class-\u6587\u4EF6\u5230\u670D\u52A1\u5668\u7684\u6280\u5DE7","link":"#\u4E0A\u4F20-class-\u6587\u4EF6\u5230\u670D\u52A1\u5668\u7684\u6280\u5DE7","children":[]},{"level":2,"title":"retransform \u7684\u9650\u5236","slug":"retransform-\u7684\u9650\u5236","link":"#retransform-\u7684\u9650\u5236","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/retransform.md","version":"3.7.3"}');export{r as data}; diff --git a/3.x/assets/retransform.html.c9177e92.js b/3.x/assets/retransform.html.c9177e92.js new file mode 100644 index 00000000000..6d3ebcc3362 --- /dev/null +++ b/3.x/assets/retransform.html.c9177e92.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-e5e2b738","path":"/en/doc/retransform.html","title":"retransform","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]},{"level":2,"title":"retransform the specified .class file","slug":"retransform-the-specified-class-file","link":"#retransform-the-specified-class-file","children":[]},{"level":2,"title":"View retransform entry","slug":"view-retransform-entry","link":"#view-retransform-entry","children":[]},{"level":2,"title":"Delete the specified retransform entry","slug":"delete-the-specified-retransform-entry","link":"#delete-the-specified-retransform-entry","children":[]},{"level":2,"title":"Delete all retransform entries","slug":"delete-all-retransform-entries","link":"#delete-all-retransform-entries","children":[]},{"level":2,"title":"Explicitly trigger retransform","slug":"explicitly-trigger-retransform","link":"#explicitly-trigger-retransform","children":[]},{"level":2,"title":"Eliminate the influence of retransform","slug":"eliminate-the-influence-of-retransform","link":"#eliminate-the-influence-of-retransform","children":[]},{"level":2,"title":"Use with the jad/mc command","slug":"use-with-the-jad-mc-command","link":"#use-with-the-jad-mc-command","children":[]},{"level":2,"title":"Tips for uploading .class files to the server","slug":"tips-for-uploading-class-files-to-the-server","link":"#tips-for-uploading-class-files-to-the-server","children":[]},{"level":2,"title":"Restrictions of the retransform command","slug":"restrictions-of-the-retransform-command","link":"#restrictions-of-the-retransform-command","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/retransform.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/save-log.html.1848baa1.js b/3.x/assets/save-log.html.1848baa1.js new file mode 100644 index 00000000000..584540156c2 --- /dev/null +++ b/3.x/assets/save-log.html.1848baa1.js @@ -0,0 +1 @@ +const a=JSON.parse('{"key":"v-8e632816","path":"/doc/save-log.html","title":"\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528 Arthas \u7684\u5F02\u6B65\u540E\u53F0\u4EFB\u52A1\u5C06\u7ED3\u679C\u5B58\u65E5\u5FD7\u6587\u4EF6","slug":"\u4F7F\u7528-arthas-\u7684\u5F02\u6B65\u540E\u53F0\u4EFB\u52A1\u5C06\u7ED3\u679C\u5B58\u65E5\u5FD7\u6587\u4EF6","link":"#\u4F7F\u7528-arthas-\u7684\u5F02\u6B65\u540E\u53F0\u4EFB\u52A1\u5C06\u7ED3\u679C\u5B58\u65E5\u5FD7\u6587\u4EF6","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":2},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":2},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1}]},"filePathRelative":"doc/save-log.md","version":"3.7.3"}');export{a as data}; diff --git a/3.x/assets/save-log.html.59e37d28.js b/3.x/assets/save-log.html.59e37d28.js new file mode 100644 index 00000000000..2c24a27aa66 --- /dev/null +++ b/3.x/assets/save-log.html.59e37d28.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-50ef0261","path":"/en/doc/save-log.html","title":"Log command outputs","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Use asynchronous job to log","slug":"use-asynchronous-job-to-log","link":"#use-asynchronous-job-to-log","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":2},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":2},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1}]},"filePathRelative":"en/doc/save-log.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/save-log.html.6fa77f22.js b/3.x/assets/save-log.html.6fa77f22.js new file mode 100644 index 00000000000..29f09147aa5 --- /dev/null +++ b/3.x/assets/save-log.html.6fa77f22.js @@ -0,0 +1,6 @@ +import{_ as c,o as l,c as r,a as e,b as a,w as i,e as s,d,r as n}from"./app.4d248835.js";const u={},p=e("h1",{id:"\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7","aria-hidden":"true"},"#"),s(" \u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7")],-1),h={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=save-log",target:"_blank",rel:"noopener noreferrer"},_=e("code",null,"\u6267\u884C\u7ED3\u679C\u5B58\u65E5\u5FD7",-1),m=s("\u5728\u7EBF\u6559\u7A0B"),v=d(`

    \u63D0\u793A

    \u5C06\u547D\u4EE4\u7684\u7ED3\u679C\u5B8C\u6574\u4FDD\u5B58\u5728\u65E5\u5FD7\u6587\u4EF6\u4E2D\uFF0C\u4FBF\u4E8E\u540E\u7EED\u8FDB\u884C\u5206\u6790

    • \u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u8BE5\u529F\u80FD\u662F\u5173\u95ED\u7684\uFF0C\u5982\u679C\u9700\u8981\u5F00\u542F\uFF0C\u8BF7\u6267\u884C\u4EE5\u4E0B\u547D\u4EE4\uFF1A
    $ options save-result true
    + NAME         BEFORE-VALUE  AFTER-VALUE
    +----------------------------------------
    + save-result  false         true
    +Affect(row-cnt:1) cost in 3 ms.
    +

    \u770B\u5230\u4E0A\u9762\u7684\u8F93\u51FA\uFF0C\u5373\u8868\u793A\u6210\u529F\u5F00\u542F\u8BE5\u529F\u80FD\uFF1B

    • \u65E5\u5FD7\u6587\u4EF6\u8DEF\u5F84

    \u7ED3\u679C\u4F1A\u5F02\u6B65\u4FDD\u5B58\u5728\uFF1A{user.home}/logs/arthas-cache/result.log\uFF0C\u8BF7\u5B9A\u671F\u8FDB\u884C\u6E05\u7406\uFF0C\u4EE5\u514D\u5360\u636E\u78C1\u76D8\u7A7A\u95F4

    \u4F7F\u7528 Arthas \u7684\u5F02\u6B65\u540E\u53F0\u4EFB\u52A1\u5C06\u7ED3\u679C\u5B58\u65E5\u5FD7\u6587\u4EF6

    `,7),b=s("\u53C2\u8003\uFF1A"),f=s("async");function k(g,x){const t=n("ExternalLinkIcon"),o=n("RouterLink");return l(),r("div",null,[p,e("p",null,[e("a",h,[_,m,a(t)])]),v,e("p",null,[b,a(o,{to:"/doc/async.html"},{default:i(()=>[f]),_:1})])])}const L=c(u,[["render",k],["__file","save-log.html.vue"]]);export{L as default}; diff --git a/3.x/assets/save-log.html.aede14f6.js b/3.x/assets/save-log.html.aede14f6.js new file mode 100644 index 00000000000..4bc31aa83a3 --- /dev/null +++ b/3.x/assets/save-log.html.aede14f6.js @@ -0,0 +1,6 @@ +import{_ as l,o as c,c as i,a as e,b as n,w as r,e as s,d as u,r as o}from"./app.4d248835.js";const d={},p=e("h1",{id:"log-command-outputs",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#log-command-outputs","aria-hidden":"true"},"#"),s(" Log command outputs")],-1),h={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=save-log",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"Log command outputs",-1),_=s(" online tutorial"),v=u(`

    TIP

    Log command outputs for later analysis

    • By default, this behavior is turned off. To enable it, execute the command below:

      $ options save-result true
      + NAME         BEFORE-VALUE  AFTER-VALUE
      +----------------------------------------
      +save-result  false         true
      +Affect(row-cnt:1) cost in 3 ms.
      +

      If the message above is output on the console, then this behavior is enabled successfully.

    • Log file path

      The command execution result will be save in {user.home}/logs/arthas-cache/result.log. Pls. clean it up regularly to save disk space.

    Use asynchronous job to log

    `,3),b=s("Reference: "),f=s("async");function g(k,x){const a=o("ExternalLinkIcon"),t=o("RouterLink");return c(),i("div",null,[p,e("p",null,[e("a",h,[m,_,n(a)])]),v,e("p",null,[b,n(t,{to:"/en/doc/async.html"},{default:r(()=>[f]),_:1})])])}const L=l(d,[["render",g],["__file","save-log.html.vue"]]);export{L as default}; diff --git a/3.x/assets/sc.html.09e2c24b.js b/3.x/assets/sc.html.09e2c24b.js new file mode 100644 index 00000000000..e5458ae3d1e --- /dev/null +++ b/3.x/assets/sc.html.09e2c24b.js @@ -0,0 +1,65 @@ +import{_ as n,o as l,c as i,a as s,b as t,e,d,r as c}from"./app.4d248835.js";const o={},r=s("h1",{id:"sc",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#sc","aria-hidden":"true"},"#"),e(" sc")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=cn&id=command-sc",target:"_blank",rel:"noopener noreferrer"},v=s("code",null,"sc",-1),p=e("\u5728\u7EBF\u6559\u7A0B"),u=d(`

    \u63D0\u793A

    \u67E5\u770B JVM \u5DF2\u52A0\u8F7D\u7684\u7C7B\u4FE1\u606F

    \u201CSearch-Class\u201D \u7684\u7B80\u5199\uFF0C\u8FD9\u4E2A\u547D\u4EE4\u80FD\u641C\u7D22\u51FA\u6240\u6709\u5DF2\u7ECF\u52A0\u8F7D\u5230 JVM \u4E2D\u7684 Class \u4FE1\u606F\uFF0C\u8FD9\u4E2A\u547D\u4EE4\u652F\u6301\u7684\u53C2\u6570\u6709 [d]\u3001[E]\u3001[f] \u548C [x:]\u3002

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    class-pattern\u7C7B\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    method-pattern\u65B9\u6CD5\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    [d]\u8F93\u51FA\u5F53\u524D\u7C7B\u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u5305\u62EC\u8FD9\u4E2A\u7C7B\u6240\u52A0\u8F7D\u7684\u539F\u59CB\u6587\u4EF6\u6765\u6E90\u3001\u7C7B\u7684\u58F0\u660E\u3001\u52A0\u8F7D\u7684 ClassLoader \u7B49\u8BE6\u7EC6\u4FE1\u606F\u3002
    \u5982\u679C\u4E00\u4E2A\u7C7B\u88AB\u591A\u4E2A ClassLoader \u6240\u52A0\u8F7D\uFF0C\u5219\u4F1A\u51FA\u73B0\u591A\u6B21
    [E]\u5F00\u542F\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\uFF0C\u9ED8\u8BA4\u4E3A\u901A\u914D\u7B26\u5339\u914D
    [f]\u8F93\u51FA\u5F53\u524D\u7C7B\u7684\u6210\u5458\u53D8\u91CF\u4FE1\u606F\uFF08\u9700\u8981\u914D\u5408\u53C2\u6570-d \u4E00\u8D77\u4F7F\u7528\uFF09
    [x:]\u6307\u5B9A\u8F93\u51FA\u9759\u6001\u53D8\u91CF\u65F6\u5C5E\u6027\u7684\u904D\u5386\u6DF1\u5EA6\uFF0C\u9ED8\u8BA4\u4E3A 0\uFF0C\u5373\u76F4\u63A5\u4F7F\u7528 toString \u8F93\u51FA
    [c:]\u6307\u5B9A class \u7684 ClassLoader \u7684 hashcode
    [classLoaderClass:]\u6307\u5B9A\u6267\u884C\u8868\u8FBE\u5F0F\u7684 ClassLoader \u7684 class name
    [n:]\u5177\u6709\u8BE6\u7EC6\u4FE1\u606F\u7684\u5339\u914D\u7C7B\u7684\u6700\u5927\u6570\u91CF\uFF08\u9ED8\u8BA4\u4E3A 100\uFF09
    [cs <arg>]\u6307\u5B9A class \u7684 ClassLoader#toString() \u8FD4\u56DE\u503C\u3002\u957F\u683C\u5F0F[classLoaderStr <arg>]

    \u63D0\u793A

    class-pattern \u652F\u6301\u5168\u9650\u5B9A\u540D\uFF0C\u5982 com.taobao.test.AAA\uFF0C\u4E5F\u652F\u6301 com/taobao/test/AAA \u8FD9\u6837\u7684\u683C\u5F0F\uFF0C\u8FD9\u6837\uFF0C\u6211\u4EEC\u4ECE\u5F02\u5E38\u5806\u6808\u91CC\u9762\u628A\u7C7B\u540D\u62F7\u8D1D\u8FC7\u6765\u7684\u65F6\u5019\uFF0C\u4E0D\u9700\u8981\u5728\u624B\u52A8\u628A/\u66FF\u6362\u4E3A.\u5566\u3002

    \u63D0\u793A

    sc \u9ED8\u8BA4\u5F00\u542F\u4E86\u5B50\u7C7B\u5339\u914D\u529F\u80FD\uFF0C\u4E5F\u5C31\u662F\u8BF4\u6240\u6709\u5F53\u524D\u7C7B\u7684\u5B50\u7C7B\u4E5F\u4F1A\u88AB\u641C\u7D22\u51FA\u6765\uFF0C\u60F3\u8981\u7CBE\u786E\u7684\u5339\u914D\uFF0C\u8BF7\u6253\u5F00options disable-sub-class true\u5F00\u5173

    \u4F7F\u7528\u53C2\u8003

    • \u6A21\u7CCA\u641C\u7D22

      $ sc demo.*
      +demo.MathGame
      +Affect(row-cnt:1) cost in 55 ms.
      +
    • \u6253\u5370\u7C7B\u7684\u8BE6\u7EC6\u4FE1\u606F

      $ sc -d demo.MathGame
      +class-info        demo.MathGame
      +code-source       /private/tmp/math-game.jar
      +name              demo.MathGame
      +isInterface       false
      +isAnnotation      false
      +isEnum            false
      +isAnonymousClass  false
      +isArray           false
      +isLocalClass      false
      +isMemberClass     false
      +isPrimitive       false
      +isSynthetic       false
      +simple-name       MathGame
      +modifier          public
      +annotation
      +interfaces
      +super-class       +-java.lang.Object
      +class-loader      +-sun.misc.Launcher$AppClassLoader@3d4eac69
      +                    +-sun.misc.Launcher$ExtClassLoader@66350f69
      +classLoaderHash   3d4eac69
      +
      +Affect(row-cnt:1) cost in 875 ms.
      +
    • \u6253\u5370\u51FA\u7C7B\u7684 Field \u4FE1\u606F

      $ sc -d -f demo.MathGame
      +class-info        demo.MathGame
      +code-source       /private/tmp/math-game.jar
      +name              demo.MathGame
      +isInterface       false
      +isAnnotation      false
      +isEnum            false
      +isAnonymousClass  false
      +isArray           false
      +isLocalClass      false
      +isMemberClass     false
      +isPrimitive       false
      +isSynthetic       false
      +simple-name       MathGame
      +modifier          public
      +annotation
      +interfaces
      +super-class       +-java.lang.Object
      +class-loader      +-sun.misc.Launcher$AppClassLoader@3d4eac69
      +                    +-sun.misc.Launcher$ExtClassLoader@66350f69
      +classLoaderHash   3d4eac69
      +fields            modifierprivate,static
      +                  type    java.util.Random
      +                  name    random
      +                  value   java.util.Random@522b4
      +                          08a
      +
      +                  modifierprivate
      +                  type    int
      +                  name    illegalArgumentCount
      +
      +
      +Affect(row-cnt:1) cost in 19 ms.
      +
    • \u901A\u8FC7 ClassLoader#toString \u67E5\u627E\u7C7B\uFF08\u524D\u63D0\uFF1A\u6709\u4E00\u4E2A toString()\u8FD4\u56DE\u503C\u662Fapo\u7684\u7C7B\u52A0\u8F7D\u5668\uFF0C\u52A0\u8F7D\u7684\u7C7B\u4E2D\u5305\u542Bdemo.MathGame, demo.MyBar, demo.MyFoo3 \u4E2A\u7C7B\uFF09

      $ sc -cs apo *demo*
      +demo.MathGame
      +demo.MyBar
      +demo.MyFoo
      +Affect(row-cnt:3) cost in 56 ms.
      +
    `,8);function b(h,g){const a=c("ExternalLinkIcon");return l(),i("div",null,[r,s("p",null,[s("a",m,[v,p,t(a)])]),u])}const k=n(o,[["render",b],["__file","sc.html.vue"]]);export{k as default}; diff --git a/3.x/assets/sc.html.4231ef3b.js b/3.x/assets/sc.html.4231ef3b.js new file mode 100644 index 00000000000..11bb13d1f48 --- /dev/null +++ b/3.x/assets/sc.html.4231ef3b.js @@ -0,0 +1,65 @@ +import{_ as n,o as t,c as i,a as e,b as l,e as s,d,r as c}from"./app.4d248835.js";const o={},r=e("h1",{id:"sc",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#sc","aria-hidden":"true"},"#"),s(" sc")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=en&id=command-sc",target:"_blank",rel:"noopener noreferrer"},p=e("code",null,"sc",-1),u=s(" online tutorial"),v=d(`

    TIP

    Search classes loaded by JVM.

    sc stands for search class. This command can search all possible classes loaded by JVM and show their information. The supported options are: [d]\u3001[E]\u3001[f] and [x:].

    Supported Options

    NameSpecification
    class-patternpattern for the class name
    method-patternpattern for the method name
    [d]print the details of the current class, including its code source, class specification, its class loader and so on.
    If a class is loaded by more than one class loader, then the class details will be printed several times
    [E]turn on regex match, the default behavior is wildcards match
    [f]print the fields info of the current class, MUST be used with -d together
    [x:]specify the depth of recursive traverse the static fields, the default value is '0' - equivalent to use toString to output
    [c:]The hash code of the special class's classLoader
    [classLoaderClass:]The class name of the ClassLoader that executes the expression.
    [n:]Maximum number of matching classes with details (100 by default)
    [cs <arg>]Specify the return value of class's ClassLoader#toString(). Long format is[classLoaderStr <arg>]

    TIP

    class-patten supports full qualified class name, e.g. com.taobao.test.AAA and com/taobao/test/AAA. It also supports the format of 'com/taobao/test/AAA', so that it is convenient to directly copy class name from the exception stack trace without replacing '/' to '.'.

    TIP

    sc turns on matching sub-class match by default, that is, sc will also search the sub classes of the target class too. If exact-match is desired, pls. use options disable-sub-class true.

    Usage

    • Wildcards match search

      $ sc demo.*
      +demo.MathGame
      +Affect(row-cnt:1) cost in 55 ms.
      +
    • View class details

      $ sc -d demo.MathGame
      +class-info        demo.MathGame
      +code-source       /private/tmp/math-game.jar
      +name              demo.MathGame
      +isInterface       false
      +isAnnotation      false
      +isEnum            false
      +isAnonymousClass  false
      +isArray           false
      +isLocalClass      false
      +isMemberClass     false
      +isPrimitive       false
      +isSynthetic       false
      +simple-name       MathGame
      +modifier          public
      +annotation
      +interfaces
      +super-class       +-java.lang.Object
      +class-loader      +-sun.misc.Launcher$AppClassLoader@3d4eac69
      +                    +-sun.misc.Launcher$ExtClassLoader@66350f69
      +classLoaderHash   3d4eac69
      +
      +Affect(row-cnt:1) cost in 875 ms.
      +
    • View class fields

      $ sc -d -f demo.MathGame
      +class-info        demo.MathGame
      +code-source       /private/tmp/math-game.jar
      +name              demo.MathGame
      +isInterface       false
      +isAnnotation      false
      +isEnum            false
      +isAnonymousClass  false
      +isArray           false
      +isLocalClass      false
      +isMemberClass     false
      +isPrimitive       false
      +isSynthetic       false
      +simple-name       MathGame
      +modifier          public
      +annotation
      +interfaces
      +super-class       +-java.lang.Object
      +class-loader      +-sun.misc.Launcher$AppClassLoader@3d4eac69
      +                    +-sun.misc.Launcher$ExtClassLoader@66350f69
      +classLoaderHash   3d4eac69
      +fields            modifierprivate,static
      +                  type    java.util.Random
      +                  name    random
      +                  value   java.util.Random@522b4
      +                          08a
      +
      +                  modifierprivate
      +                  type    int
      +                  name    illegalArgumentCount
      +
      +
      +Affect(row-cnt:1) cost in 19 ms.
      +
    • Search class by ClassLoader#toString (on the premise that a ClassLoader instance whose toString() returns apo has loaded some classes including demo.MathGame, demo.MyBar, demo.MyFoo)

      $ sc -cs apo *demo*
      +demo.MathGame
      +demo.MyBar
      +demo.MyFoo
      +Affect(row-cnt:3) cost in 56 ms.
      +
    `,8);function b(h,f){const a=c("ExternalLinkIcon");return t(),i("div",null,[r,e("p",null,[e("a",m,[p,u,l(a)])]),v])}const k=n(o,[["render",b],["__file","sc.html.vue"]]);export{k as default}; diff --git a/3.x/assets/sc.html.74c76d3a.js b/3.x/assets/sc.html.74c76d3a.js new file mode 100644 index 00000000000..2633e5cd395 --- /dev/null +++ b/3.x/assets/sc.html.74c76d3a.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-1fc55619","path":"/doc/sc.html","title":"sc","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1},{"name":"pandaapo","email":"35672972+pandaapo@users.noreply.github.com","commits":1}]},"filePathRelative":"doc/sc.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/sc.html.7e6d0647.js b/3.x/assets/sc.html.7e6d0647.js new file mode 100644 index 00000000000..be9496cfd90 --- /dev/null +++ b/3.x/assets/sc.html.7e6d0647.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-28022d85","path":"/en/doc/sc.html","title":"sc","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Supported Options","slug":"supported-options","link":"#supported-options","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1},{"name":"pandaapo","email":"35672972+pandaapo@users.noreply.github.com","commits":1}]},"filePathRelative":"en/doc/sc.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/session.html.5c4eabed.js b/3.x/assets/session.html.5c4eabed.js new file mode 100644 index 00000000000..c630bf4e4be --- /dev/null +++ b/3.x/assets/session.html.5c4eabed.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-3891b473","path":"/doc/session.html","title":"session","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/session.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/session.html.61530ca8.js b/3.x/assets/session.html.61530ca8.js new file mode 100644 index 00000000000..ed9a2b79481 --- /dev/null +++ b/3.x/assets/session.html.61530ca8.js @@ -0,0 +1,7 @@ +import{_ as e,o as s,c as n,d as i}from"./app.4d248835.js";const a={},d=i(`

    session

    \u67E5\u770B\u5F53\u524D\u4F1A\u8BDD\u7684\u4FE1\u606F\uFF0C\u663E\u793A\u5F53\u524D\u7ED1\u5B9A\u7684 pid \u4EE5\u53CA\u4F1A\u8BDD id\u3002

    \u63D0\u793A

    \u5982\u679C\u914D\u7F6E\u4E86 tunnel server\uFF0C\u4F1A\u8FFD\u52A0\u6253\u5370 \u4EE3\u7406 id\u3001tunnel \u670D\u52A1\u5668\u7684 url \u4EE5\u53CA\u8FDE\u63A5\u72B6\u6001\u3002

    \u5982\u679C\u4F7F\u7528\u4E86 staturl \u505A\u7EDF\u8BA1\uFF0C\u4F1A\u8FFD\u52A0\u663E\u793A statUrl \u5730\u5740\u3002

    \u4F7F\u7528\u53C2\u8003

    $ session
    +  Name        Value
    +--------------------------------------------------
    + JAVA_PID    14584
    + SESSION_ID  c2073d3b-443a-4a9b-9249-0c5d24a5756c
    +
    +
    `,5),t=[d];function c(r,l){return s(),n("div",null,t)}const u=e(a,[["render",c],["__file","session.html.vue"]]);export{u as default}; diff --git a/3.x/assets/session.html.c643c273.js b/3.x/assets/session.html.c643c273.js new file mode 100644 index 00000000000..8ca87edd522 --- /dev/null +++ b/3.x/assets/session.html.c643c273.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-dfe2bef2","path":"/en/doc/session.html","title":"session","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/session.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/session.html.ebca9c60.js b/3.x/assets/session.html.ebca9c60.js new file mode 100644 index 00000000000..e4d8aa42baa --- /dev/null +++ b/3.x/assets/session.html.ebca9c60.js @@ -0,0 +1,6 @@ +import{_ as e,o as s,c as n,d as a}from"./app.4d248835.js";const i={},t=a(`

    session

    examines the current session,show the current binded processId and the sessionId.

    TIP

    if exits tunnel server\uFF0Cit will also show agentId\u3001tunnelServerUrl\u3001connected status.

    if exits statUrl\uFF0Cit will also show statUrl.

    Usage

    $ session
    +  Name        Value
    +--------------------------------------------------
    + JAVA_PID    14584
    + SESSION_ID  c2073d3b-443a-4a9b-9249-0c5d24a5756c
    +
    `,5),d=[t];function r(c,l){return s(),n("div",null,d)}const u=e(i,[["render",r],["__file","session.html.vue"]]);export{u as default}; diff --git a/3.x/assets/sm.html.0d66961e.js b/3.x/assets/sm.html.0d66961e.js new file mode 100644 index 00000000000..4bdc020af45 --- /dev/null +++ b/3.x/assets/sm.html.0d66961e.js @@ -0,0 +1,57 @@ +import{_ as e,o as t,c as l,a,b as i,e as n,d as r,r as o}from"./app.4d248835.js";const d={},c=a("h1",{id:"sm",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#sm","aria-hidden":"true"},"#"),n(" sm")],-1),p={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=cn&id=command-sm",target:"_blank",rel:"noopener noreferrer"},g=a("code",null,"sm",-1),v=n("\u5728\u7EBF\u6559\u7A0B"),m=r(`

    \u63D0\u793A

    \u67E5\u770B\u5DF2\u52A0\u8F7D\u7C7B\u7684\u65B9\u6CD5\u4FE1\u606F

    \u201CSearch-Method\u201D \u7684\u7B80\u5199\uFF0C\u8FD9\u4E2A\u547D\u4EE4\u80FD\u641C\u7D22\u51FA\u6240\u6709\u5DF2\u7ECF\u52A0\u8F7D\u4E86 Class \u4FE1\u606F\u7684\u65B9\u6CD5\u4FE1\u606F\u3002

    sm \u547D\u4EE4\u53EA\u80FD\u770B\u5230\u7531\u5F53\u524D\u7C7B\u6240\u58F0\u660E (declaring) \u7684\u65B9\u6CD5\uFF0C\u7236\u7C7B\u5219\u65E0\u6CD5\u770B\u5230\u3002

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    class-pattern\u7C7B\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    method-pattern\u65B9\u6CD5\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    [d]\u5C55\u793A\u6BCF\u4E2A\u65B9\u6CD5\u7684\u8BE6\u7EC6\u4FE1\u606F
    [E]\u5F00\u542F\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\uFF0C\u9ED8\u8BA4\u4E3A\u901A\u914D\u7B26\u5339\u914D
    [c:]\u6307\u5B9A class \u7684 ClassLoader \u7684 hashcode
    [classLoaderClass:]\u6307\u5B9A\u6267\u884C\u8868\u8FBE\u5F0F\u7684 ClassLoader \u7684 class name
    [n:]\u5177\u6709\u8BE6\u7EC6\u4FE1\u606F\u7684\u5339\u914D\u7C7B\u7684\u6700\u5927\u6570\u91CF\uFF08\u9ED8\u8BA4\u4E3A 100\uFF09

    \u4F7F\u7528\u53C2\u8003

    $ sm java.lang.String
    +java.lang.String-><init>
    +java.lang.String->equals
    +java.lang.String->toString
    +java.lang.String->hashCode
    +java.lang.String->compareTo
    +java.lang.String->indexOf
    +java.lang.String->valueOf
    +java.lang.String->checkBounds
    +java.lang.String->length
    +java.lang.String->isEmpty
    +java.lang.String->charAt
    +java.lang.String->codePointAt
    +java.lang.String->codePointBefore
    +java.lang.String->codePointCount
    +java.lang.String->offsetByCodePoints
    +java.lang.String->getChars
    +java.lang.String->getBytes
    +java.lang.String->contentEquals
    +java.lang.String->nonSyncContentEquals
    +java.lang.String->equalsIgnoreCase
    +java.lang.String->compareToIgnoreCase
    +java.lang.String->regionMatches
    +java.lang.String->startsWith
    +java.lang.String->endsWith
    +java.lang.String->indexOfSupplementary
    +java.lang.String->lastIndexOf
    +java.lang.String->lastIndexOfSupplementary
    +java.lang.String->substring
    +java.lang.String->subSequence
    +java.lang.String->concat
    +java.lang.String->replace
    +java.lang.String->matches
    +java.lang.String->contains
    +java.lang.String->replaceFirst
    +java.lang.String->replaceAll
    +java.lang.String->split
    +java.lang.String->join
    +java.lang.String->toLowerCase
    +java.lang.String->toUpperCase
    +java.lang.String->trim
    +java.lang.String->toCharArray
    +java.lang.String->format
    +java.lang.String->copyValueOf
    +java.lang.String->intern
    +Affect(row-cnt:44) cost in 1342 ms.
    +
    $ sm -d java.lang.String toString
    + declaring-class  java.lang.String
    + method-name      toString
    + modifier         public
    + annotation
    + parameters
    + return           java.lang.String
    + exceptions
    +
    +Affect(row-cnt:1) cost in 3 ms.
    +
    `,8);function u(b,h){const s=o("ExternalLinkIcon");return t(),l("div",null,[c,a("p",null,[a("a",p,[g,v,i(s)])]),m])}const S=e(d,[["render",u],["__file","sm.html.vue"]]);export{S as default}; diff --git a/3.x/assets/sm.html.961479d6.js b/3.x/assets/sm.html.961479d6.js new file mode 100644 index 00000000000..f2cc3e78141 --- /dev/null +++ b/3.x/assets/sm.html.961479d6.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-3912a3bb","path":"/en/doc/sm.html","title":"sm","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Options","slug":"options","link":"#options","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/sm.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/sm.html.981fdfec.js b/3.x/assets/sm.html.981fdfec.js new file mode 100644 index 00000000000..572109934d1 --- /dev/null +++ b/3.x/assets/sm.html.981fdfec.js @@ -0,0 +1,57 @@ +import{_ as s,o as t,c as i,a,b as l,e as n,d as r,r as o}from"./app.4d248835.js";const d={},c=a("h1",{id:"sm",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#sm","aria-hidden":"true"},"#"),n(" sm")],-1),p={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials?language=en&id=command-sm",target:"_blank",rel:"noopener noreferrer"},g=a("code",null,"sm",-1),v=n(" online tutorial"),m=r(`

    TIP

    Search method from the loaded classes.

    sm stands for search method. This command can search and show method information from all loaded classes. sm can only view the methods declared on the target class, that is, methods from its parent classes are invisible.

    Options

    NameSpecification
    class-patternpattern for class name
    method-patternpattern for method name
    [d]print the details of the method
    [E]turn on regex matching while the default mode is wildcard matching
    [c:]The hash code of the special class's classLoader
    [classLoaderClass:]The class name of the ClassLoader that executes the expression.
    [n:]Maximum number of matching classes with details (100 by default)

    Usage

    View methods of java.lang.String:

    $ sm java.lang.String
    +java.lang.String-><init>
    +java.lang.String->equals
    +java.lang.String->toString
    +java.lang.String->hashCode
    +java.lang.String->compareTo
    +java.lang.String->indexOf
    +java.lang.String->valueOf
    +java.lang.String->checkBounds
    +java.lang.String->length
    +java.lang.String->isEmpty
    +java.lang.String->charAt
    +java.lang.String->codePointAt
    +java.lang.String->codePointBefore
    +java.lang.String->codePointCount
    +java.lang.String->offsetByCodePoints
    +java.lang.String->getChars
    +java.lang.String->getBytes
    +java.lang.String->contentEquals
    +java.lang.String->nonSyncContentEquals
    +java.lang.String->equalsIgnoreCase
    +java.lang.String->compareToIgnoreCase
    +java.lang.String->regionMatches
    +java.lang.String->startsWith
    +java.lang.String->endsWith
    +java.lang.String->indexOfSupplementary
    +java.lang.String->lastIndexOf
    +java.lang.String->lastIndexOfSupplementary
    +java.lang.String->substring
    +java.lang.String->subSequence
    +java.lang.String->concat
    +java.lang.String->replace
    +java.lang.String->matches
    +java.lang.String->contains
    +java.lang.String->replaceFirst
    +java.lang.String->replaceAll
    +java.lang.String->split
    +java.lang.String->join
    +java.lang.String->toLowerCase
    +java.lang.String->toUpperCase
    +java.lang.String->trim
    +java.lang.String->toCharArray
    +java.lang.String->format
    +java.lang.String->copyValueOf
    +java.lang.String->intern
    +Affect(row-cnt:44) cost in 1342 ms.
    +

    View method java.lang.String#toString details:

    $ sm -d java.lang.String toString
    + declaring-class  java.lang.String
    + method-name      toString
    + modifier         public
    + annotation
    + parameters
    + return           java.lang.String
    + exceptions
    +
    +Affect(row-cnt:1) cost in 3 ms.
    +
    `,9);function u(h,b){const e=o("ExternalLinkIcon");return t(),i("div",null,[c,a("p",null,[a("a",p,[g,v,l(e)])]),m])}const S=s(d,[["render",u],["__file","sm.html.vue"]]);export{S as default}; diff --git a/3.x/assets/sm.html.e7e61e0b.js b/3.x/assets/sm.html.e7e61e0b.js new file mode 100644 index 00000000000..548305ea124 --- /dev/null +++ b/3.x/assets/sm.html.e7e61e0b.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-30d5cc4f","path":"/doc/sm.html","title":"sm","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/sm.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/spring-boot-starter.html.0ccae142.js b/3.x/assets/spring-boot-starter.html.0ccae142.js new file mode 100644 index 00000000000..2993764cb43 --- /dev/null +++ b/3.x/assets/spring-boot-starter.html.0ccae142.js @@ -0,0 +1,37 @@ +import{_ as c,o as i,c as l,a as n,b as a,w as u,e as s,d as p,r as e}from"./app.4d248835.js";const r={},d=n("h1",{id:"arthas-spring-boot-starter",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#arthas-spring-boot-starter","aria-hidden":"true"},"#"),s(" Arthas Spring Boot Starter")],-1),k=n("div",{class:"custom-container tip"},[n("p",{class:"custom-container-title"},"\u63D0\u793A"),n("p",null,"\u53EA\u652F\u6301 spring boot 2")],-1),g=s("\u6700\u65B0\u7248\u672C\uFF1A"),v={href:"https://search.maven.org/search?q=arthas-spring-boot-starter",target:"_blank",rel:"noopener noreferrer"},h=s("\u67E5\u770B"),m=p(`

    \u914D\u7F6E maven \u4F9D\u8D56\uFF1A

            <dependency>
    +            <groupId>com.taobao.arthas</groupId>
    +            <artifactId>arthas-spring-boot-starter</artifactId>
    +            <version>\${arthas.version}</version>
    +        </dependency>
    +

    \u5E94\u7528\u542F\u52A8\u540E\uFF0Cspring \u4F1A\u542F\u52A8 arthas\uFF0C\u5E76\u4E14 attach \u81EA\u8EAB\u8FDB\u7A0B\u3002

    \u63D0\u793A

    \u4E00\u952E\u521B\u5EFA\u5305\u542B Arthas Spring Boot Starter \u7684\u5DE5\u7A0B\uFF1A\u70B9\u51FB

    \u914D\u7F6E\u5C5E\u6027

    \u6BD4\u5982\uFF0C\u901A\u8FC7\u914D\u7F6E tunnel server \u5B9E\u73B0\u8FDC\u7A0B\u7BA1\u7406\uFF1A

    arthas.agent-id=hsehdfsfghhwertyfad
    +arthas.tunnel-server=ws://47.75.156.201:7777/ws
    +
    `,7),b=s("\u5168\u90E8\u652F\u6301\u7684\u914D\u7F6E\u9879\uFF1A"),_={href:"https://github.com/alibaba/arthas/blob/master/arthas-spring-boot-starter/src/main/java/com/alibaba/arthas/spring/ArthasProperties.java",target:"_blank",rel:"noopener noreferrer"},f=s("\u53C2\u8003"),x=n("div",{class:"custom-container tip"},[n("p",{class:"custom-container-title"},"\u63D0\u793A"),n("p",null,[s("\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0Carthas-spring-boot-starter \u4F1A\u7981\u6389"),n("code",null,"stop"),s("\u547D\u4EE4\u3002")])],-1),q=s("\u53C2\u8003\uFF1A"),w=s("Arthas Properties"),y=n("h2",{id:"\u67E5\u770B-endpoint-\u4FE1\u606F",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#\u67E5\u770B-endpoint-\u4FE1\u606F","aria-hidden":"true"},"#"),s(" \u67E5\u770B Endpoint \u4FE1\u606F")],-1),I={class:"custom-container tip"},S=n("p",{class:"custom-container-title"},"\u63D0\u793A",-1),A=s("\u9700\u8981\u914D\u7F6E spring boot \u66B4\u9732 endpoint\uFF1A"),j={href:"https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html#production-ready-endpoints",target:"_blank",rel:"noopener noreferrer"},B=s("\u53C2\u8003"),M=p(`

    \u5047\u5B9A endpoint \u7AEF\u53E3\u662F 8080\uFF0C\u5219\u901A\u8FC7\u4E0B\u9762 url \u53EF\u4EE5\u67E5\u770B\uFF1A

    http://localhost:8080/actuator/arthas

    {
    +    "arthasConfigMap": {
    +        "agent-id": "hsehdfsfghhwertyfad",
    +        "tunnel-server": "ws://47.75.156.201:7777/ws",
    +    }
    +}
    +

    \u975E spring boot \u5E94\u7528\u4F7F\u7528\u65B9\u5F0F

    \u975E Spring Boot \u5E94\u7528\uFF0C\u53EF\u4EE5\u901A\u8FC7\u4E0B\u9762\u7684\u65B9\u5F0F\u6765\u4F7F\u7528\uFF1A

            <dependency>
    +            <groupId>com.taobao.arthas</groupId>
    +            <artifactId>arthas-agent-attach</artifactId>
    +            <version>\${arthas.version}</version>
    +        </dependency>
    +        <dependency>
    +            <groupId>com.taobao.arthas</groupId>
    +            <artifactId>arthas-packaging</artifactId>
    +            <version>\${arthas.version}</version>
    +        </dependency>
    +
    import com.taobao.arthas.agent.attach.ArthasAgent;
    +
    +public class ArthasAttachExample {
    +
    +	public static void main(String[] args) {
    +		ArthasAgent.attach();
    +	}
    +
    +}
    +

    \u4E5F\u53EF\u4EE5\u914D\u7F6E\u5C5E\u6027\uFF1A

            HashMap<String, String> configMap = new HashMap<String, String>();
    +        configMap.put("arthas.appName", "demo");
    +        configMap.put("arthas.tunnelServer", "ws://127.0.0.1:7777/ws");
    +        ArthasAgent.attach(configMap);
    +

    \u6CE8\u610F

    \u6CE8\u610F\u914D\u7F6E\u5FC5\u987B\u662F\u9A7C\u5CF0\u7684\uFF0C\u548C spring boot \u7684-\u98CE\u683C\u4E0D\u4E00\u6837\u3002spring boot \u5E94\u7528\u624D\u540C\u65F6\u652F\u6301\u9A7C\u5CF0 \u548C -\u98CE\u683C\u7684\u914D\u7F6E\u3002

    `,10);function E(N,L){const t=e("ExternalLinkIcon"),o=e("RouterLink");return i(),l("div",null,[d,k,n("p",null,[g,n("a",v,[h,a(t)])]),m,n("p",null,[b,n("a",_,[f,a(t)])]),x,n("p",null,[q,a(o,{to:"/doc/arthas-properties.html"},{default:u(()=>[w]),_:1})]),y,n("div",I,[S,n("p",null,[A,n("a",j,[B,a(t)])])]),M])}const C=c(r,[["render",E],["__file","spring-boot-starter.html.vue"]]);export{C as default}; diff --git a/3.x/assets/spring-boot-starter.html.304b29da.js b/3.x/assets/spring-boot-starter.html.304b29da.js new file mode 100644 index 00000000000..e7dbc51b958 --- /dev/null +++ b/3.x/assets/spring-boot-starter.html.304b29da.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-71870b69","path":"/en/doc/spring-boot-starter.html","title":"Arthas Spring Boot Starter","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Configuration properties","slug":"configuration-properties","link":"#configuration-properties","children":[]},{"level":2,"title":"View Endpoint Information","slug":"view-endpoint-information","link":"#view-endpoint-information","children":[]},{"level":2,"title":"Non-spring boot application usage","slug":"non-spring-boot-application-usage","link":"#non-spring-boot-application-usage","children":[]}],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/spring-boot-starter.md","version":"3.7.3"}');export{t as data}; diff --git a/3.x/assets/spring-boot-starter.html.60544b4f.js b/3.x/assets/spring-boot-starter.html.60544b4f.js new file mode 100644 index 00000000000..803af8e8ad0 --- /dev/null +++ b/3.x/assets/spring-boot-starter.html.60544b4f.js @@ -0,0 +1,37 @@ +import{_ as c,o as i,c as l,a as n,b as a,w as r,e as s,d as p,r as e}from"./app.4d248835.js";const u={},d=n("h1",{id:"arthas-spring-boot-starter",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#arthas-spring-boot-starter","aria-hidden":"true"},"#"),s(" Arthas Spring Boot Starter")],-1),k=n("div",{class:"custom-container tip"},[n("p",{class:"custom-container-title"},"TIP"),n("p",null,"Support spring boot 2")],-1),g=s("Latest Version: "),v={href:"https://search.maven.org/search?q=arthas-spring-boot-starter",target:"_blank",rel:"noopener noreferrer"},h=s("View"),m=p(`

    Add maven dependency:

            <dependency>
    +            <groupId>com.taobao.arthas</groupId>
    +            <artifactId>arthas-spring-boot-starter</artifactId>
    +            <version>\${arthas.version}</version>
    +        </dependency>
    +

    When the application is started, spring will start arthas and attach its own process.

    Configuration properties

    For example, by configuring the tunnel server for remote management.

    arthas.agent-id=hsehdfsfghhwertyfad
    +arthas.tunnel-server=ws://47.75.156.201:7777/ws
    +
    `,6),b=s("All supported configuration: "),f={href:"https://github.com/alibaba/arthas/blob/master/arthas-spring-boot-starter/src/main/java/com/alibaba/arthas/spring/ArthasProperties.java",target:"_blank",rel:"noopener noreferrer"},_=s("Reference"),w=n("div",{class:"custom-container tip"},[n("p",{class:"custom-container-title"},"TIP"),n("p",null,[s("By default, arthas-spring-boot-starter will disable the "),n("code",null,"stop"),s(" command.")])],-1),y=s("Reference: "),x=s("Arthas Properties"),q=n("h2",{id:"view-endpoint-information",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#view-endpoint-information","aria-hidden":"true"},"#"),s(" View Endpoint Information")],-1),I={class:"custom-container tip"},A=n("p",{class:"custom-container-title"},"TIP",-1),S=s("Need to configure spring boot to expose endpoint: "),j={href:"https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html#production-ready-endpoints",target:"_blank",rel:"noopener noreferrer"},N=s("Reference"),B=s("."),M=p(`

    Assuming the endpoint port is 8080, it can be viewed via the following url.

    http://localhost:8080/actuator/arthas

    {
    +    "arthasConfigMap": {
    +        "agent-id": "hsehdfsfghhwertyfad",
    +        "tunnel-server": "ws://47.75.156.201:7777/ws",
    +    }
    +}
    +

    Non-spring boot application usage

    Non-Spring Boot applications can be used in the following ways.

            <dependency>
    +            <groupId>com.taobao.arthas</groupId>
    +            <artifactId>arthas-agent-attach</artifactId>
    +            <version>\${arthas.version}</version>
    +        </dependency>
    +        <dependency>
    +            <groupId>com.taobao.arthas</groupId>
    +            <artifactId>arthas-packaging</artifactId>
    +            <version>\${arthas.version}</version>
    +        </dependency>
    +
    import com.taobao.arthas.agent.attach.ArthasAgent;
    +
    +public class ArthasAttachExample {
    +
    +	public static void main(String[] args) {
    +		ArthasAgent.attach();
    +	}
    +
    +}
    +

    You can also configure properties:

            HashMap<String, String> configMap = new HashMap<String, String>();
    +        configMap.put("arthas.appName", "demo");
    +        configMap.put("arthas.tunnelServer", "ws://127.0.0.1:7777/ws");
    +        ArthasAgent.attach(configMap);
    +

    WARNING

    Note that the configuration must be camel case, which is different from the - style of spring boot. Only the spring boot application supports both camel case and - style configuration.

    `,10);function V(R,E){const t=e("ExternalLinkIcon"),o=e("RouterLink");return i(),l("div",null,[d,k,n("p",null,[g,n("a",v,[h,a(t)])]),m,n("p",null,[b,n("a",f,[_,a(t)])]),w,n("p",null,[y,a(o,{to:"/en/doc/arthas-properties.html"},{default:r(()=>[x]),_:1})]),q,n("div",I,[A,n("p",null,[S,n("a",j,[N,a(t)]),B])]),M])}const P=c(u,[["render",V],["__file","spring-boot-starter.html.vue"]]);export{P as default}; diff --git a/3.x/assets/spring-boot-starter.html.f437e222.js b/3.x/assets/spring-boot-starter.html.f437e222.js new file mode 100644 index 00000000000..1392d321df7 --- /dev/null +++ b/3.x/assets/spring-boot-starter.html.f437e222.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-07cf9d55","path":"/doc/spring-boot-starter.html","title":"Arthas Spring Boot Starter","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u914D\u7F6E\u5C5E\u6027","slug":"\u914D\u7F6E\u5C5E\u6027","link":"#\u914D\u7F6E\u5C5E\u6027","children":[]},{"level":2,"title":"\u67E5\u770B Endpoint \u4FE1\u606F","slug":"\u67E5\u770B-endpoint-\u4FE1\u606F","link":"#\u67E5\u770B-endpoint-\u4FE1\u606F","children":[]},{"level":2,"title":"\u975E spring boot \u5E94\u7528\u4F7F\u7528\u65B9\u5F0F","slug":"\u975E-spring-boot-\u5E94\u7528\u4F7F\u7528\u65B9\u5F0F","link":"#\u975E-spring-boot-\u5E94\u7528\u4F7F\u7528\u65B9\u5F0F","children":[]}],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/spring-boot-starter.md","version":"3.7.3"}');export{t as data}; diff --git a/3.x/assets/stack.html.6561e199.js b/3.x/assets/stack.html.6561e199.js new file mode 100644 index 00000000000..a83e6894888 --- /dev/null +++ b/3.x/assets/stack.html.6561e199.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-b75a107e","path":"/doc/stack.html","title":"stack","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u4F8B\u5B50","slug":"\u4F7F\u7528\u4F8B\u5B50","link":"#\u4F7F\u7528\u4F8B\u5B50","children":[{"level":3,"title":"\u542F\u52A8 Demo","slug":"\u542F\u52A8-demo","link":"#\u542F\u52A8-demo","children":[]},{"level":3,"title":"stack","slug":"stack-1","link":"#stack-1","children":[]},{"level":3,"title":"\u6307\u5B9A Class \u6700\u5927\u5339\u914D\u6570\u91CF","slug":"\u6307\u5B9A-class-\u6700\u5927\u5339\u914D\u6570\u91CF","link":"#\u6307\u5B9A-class-\u6700\u5927\u5339\u914D\u6570\u91CF","children":[]},{"level":3,"title":"\u636E\u6761\u4EF6\u8868\u8FBE\u5F0F\u6765\u8FC7\u6EE4","slug":"\u636E\u6761\u4EF6\u8868\u8FBE\u5F0F\u6765\u8FC7\u6EE4","link":"#\u636E\u6761\u4EF6\u8868\u8FBE\u5F0F\u6765\u8FC7\u6EE4","children":[]},{"level":3,"title":"\u636E\u6267\u884C\u65F6\u95F4\u6765\u8FC7\u6EE4","slug":"\u636E\u6267\u884C\u65F6\u95F4\u6765\u8FC7\u6EE4","link":"#\u636E\u6267\u884C\u65F6\u95F4\u6765\u8FC7\u6EE4","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1},{"name":"pandaapo","email":"35672972+pandaapo@users.noreply.github.com","commits":1}]},"filePathRelative":"doc/stack.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/stack.html.bbfa304b.js b/3.x/assets/stack.html.bbfa304b.js new file mode 100644 index 00000000000..78f904d8893 --- /dev/null +++ b/3.x/assets/stack.html.bbfa304b.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-4483d8d5","path":"/en/doc/stack.html","title":"stack","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Parameters","slug":"parameters","link":"#parameters","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"Start Demo","slug":"start-demo","link":"#start-demo","children":[]},{"level":3,"title":"stack","slug":"stack-1","link":"#stack-1","children":[]},{"level":3,"title":"Specify the max number of matched Classes","slug":"specify-the-max-number-of-matched-classes","link":"#specify-the-max-number-of-matched-classes","children":[]},{"level":3,"title":"Filtering by condition expression","slug":"filtering-by-condition-expression","link":"#filtering-by-condition-expression","children":[]},{"level":3,"title":"Filtering by cost","slug":"filtering-by-cost","link":"#filtering-by-cost","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1},{"name":"pandaapo","email":"35672972+pandaapo@users.noreply.github.com","commits":1}]},"filePathRelative":"en/doc/stack.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/stack.html.db4b5700.js b/3.x/assets/stack.html.db4b5700.js new file mode 100644 index 00000000000..3b10b32e2c1 --- /dev/null +++ b/3.x/assets/stack.html.db4b5700.js @@ -0,0 +1,32 @@ +import{_ as c,o as i,c as r,a,b as n,w as o,e as s,d as l,r as p}from"./app.4d248835.js";const d={},u=a("h1",{id:"stack",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#stack","aria-hidden":"true"},"#"),s(" stack")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-stack",target:"_blank",rel:"noopener noreferrer"},k=a("code",null,"stack",-1),h=s("\u5728\u7EBF\u6559\u7A0B"),b=l('

    \u63D0\u793A

    \u8F93\u51FA\u5F53\u524D\u65B9\u6CD5\u88AB\u8C03\u7528\u7684\u8C03\u7528\u8DEF\u5F84

    \u5F88\u591A\u65F6\u5019\u6211\u4EEC\u90FD\u77E5\u9053\u4E00\u4E2A\u65B9\u6CD5\u88AB\u6267\u884C\uFF0C\u4F46\u8FD9\u4E2A\u65B9\u6CD5\u88AB\u6267\u884C\u7684\u8DEF\u5F84\u975E\u5E38\u591A\uFF0C\u6216\u8005\u4F60\u6839\u672C\u5C31\u4E0D\u77E5\u9053\u8FD9\u4E2A\u65B9\u6CD5\u662F\u4ECE\u90A3\u91CC\u88AB\u6267\u884C\u4E86\uFF0C\u6B64\u65F6\u4F60\u9700\u8981\u7684\u662F stack \u547D\u4EE4\u3002

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    class-pattern\u7C7B\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    method-pattern\u65B9\u6CD5\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    condition-express\u6761\u4EF6\u8868\u8FBE\u5F0F
    [E]\u5F00\u542F\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\uFF0C\u9ED8\u8BA4\u4E3A\u901A\u914D\u7B26\u5339\u914D
    [n:]\u6267\u884C\u6B21\u6570\u9650\u5236
    [m <arg>]\u6307\u5B9A Class \u6700\u5927\u5339\u914D\u6570\u91CF\uFF0C\u9ED8\u8BA4\u503C\u4E3A 50\u3002\u957F\u683C\u5F0F\u4E3A[maxMatch <arg>]\u3002

    \u8FD9\u91CC\u91CD\u70B9\u8981\u8BF4\u660E\u7684\u662F\u89C2\u5BDF\u8868\u8FBE\u5F0F\uFF0C\u89C2\u5BDF\u8868\u8FBE\u5F0F\u7684\u6784\u6210\u4E3B\u8981\u7531 \bognl \u8868\u8FBE\u5F0F\u7EC4\u6210\uFF0C\u6240\u4EE5\u4F60\u53EF\u4EE5\u8FD9\u6837\u5199"{params,returnObj}"\uFF0C\u53EA\u8981\u662F\u4E00\u4E2A\u5408\u6CD5\u7684 ognl \u8868\u8FBE\u5F0F\uFF0C\u90FD\u80FD\u88AB\u6B63\u5E38\u652F\u6301\u3002

    \u89C2\u5BDF\u7684\u7EF4\u5EA6\u4E5F\u6BD4\u8F83\u591A\uFF0C\u4E3B\u8981\u4F53\u73B0\u5728\u53C2\u6570 advice \u7684\u6570\u636E\u7ED3\u6784\u4E0A\u3002Advice \u53C2\u6570\u6700\u4E3B\u8981\u662F\u5C01\u88C5\u4E86\u901A\u77E5\u8282\u70B9\u7684\u6240\u6709\u4FE1\u606F\u3002

    ',6),v=s("\u8BF7\u53C2\u8003"),g=s("\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF"),_=s("\u4E2D\u5173\u4E8E\u8BE5\u8282\u70B9\u7684\u63CF\u8FF0\u3002"),f=s("\u7279\u6B8A\u7528\u6CD5\u8BF7\u53C2\u8003\uFF1A"),x={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},C=s("https://github.com/alibaba/arthas/issues/71"),y=s("OGNL \u8868\u8FBE\u5F0F\u5B98\u7F51\uFF1A"),G={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},M=s("https://commons.apache.org/proper/commons-ognl/language-guide.html"),L=a("h2",{id:"\u4F7F\u7528\u4F8B\u5B50",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u4F7F\u7528\u4F8B\u5B50","aria-hidden":"true"},"#"),s(" \u4F7F\u7528\u4F8B\u5B50")],-1),A=a("h3",{id:"\u542F\u52A8-demo",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#\u542F\u52A8-demo","aria-hidden":"true"},"#"),s(" \u542F\u52A8 Demo")],-1),$=s("\u542F\u52A8"),w=s("\u5FEB\u901F\u5165\u95E8"),j=s("\u91CC\u7684"),T=a("code",null,"math-game",-1),F=s("\u3002"),N=l(`

    stack

    $ stack demo.MathGame primeFactors
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 36 ms.
    +ts=2018-12-04 01:32:19;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +

    \u6307\u5B9A Class \u6700\u5927\u5339\u914D\u6570\u91CF

    $ stack demo.MathGame primeFactors -m 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count:1 , method count:1) cost in 561 ms, listenerId: 5.
    +ts=2022-12-25 21:07:07;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@b4aac2
    +    @demo.MathGame.primeFactors()
    +        at demo.MathGame.run(MathGame.java:46)
    +        at demo.MathGame.main(MathGame.java:38)
    +

    \u636E\u6761\u4EF6\u8868\u8FBE\u5F0F\u6765\u8FC7\u6EE4

    $ stack demo.MathGame primeFactors 'params[0]<0' -n 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 30 ms.
    +ts=2018-12-04 01:34:27;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +
    +ts=2018-12-04 01:34:30;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +
    +Command execution times exceed limit: 2, so command will exit. You can set it with -n option.
    +

    \u636E\u6267\u884C\u65F6\u95F4\u6765\u8FC7\u6EE4

    $ stack demo.MathGame primeFactors '#cost>5'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 35 ms.
    +ts=2018-12-04 01:35:58;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +
    `,8);function E(P,V){const e=p("ExternalLinkIcon"),t=p("RouterLink");return i(),r("div",null,[u,a("p",null,[a("a",m,[k,h,n(e)])]),b,a("p",null,[v,n(t,{to:"/doc/advice-class.html"},{default:o(()=>[g]),_:1}),_]),a("ul",null,[a("li",null,[f,a("a",x,[C,n(e)])]),a("li",null,[y,a("a",G,[M,n(e)])])]),L,A,a("p",null,[$,n(t,{to:"/doc/quick-start.html"},{default:o(()=>[w]),_:1}),j,T,F]),N])}const B=c(d,[["render",E],["__file","stack.html.vue"]]);export{B as default}; diff --git a/3.x/assets/stack.html.dfb85a5e.js b/3.x/assets/stack.html.dfb85a5e.js new file mode 100644 index 00000000000..9aea0e7dae2 --- /dev/null +++ b/3.x/assets/stack.html.dfb85a5e.js @@ -0,0 +1,32 @@ +import{_ as l,o as c,c as r,a,b as n,w as o,e as s,d as p,r as i}from"./app.4d248835.js";const d={},u=a("h1",{id:"stack",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#stack","aria-hidden":"true"},"#"),s(" stack")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-stack",target:"_blank",rel:"noopener noreferrer"},h=a("code",null,"stack",-1),k=s(" online tutorial"),b=p('

    TIP

    Print out the full call stack of the current method.

    Most often we know one method gets called, but we have no idea on which code path gets executed or when the method gets called since there are so many code paths to the target method. The command stack comes to rescue in this difficult situation.

    Parameters

    NameSpecification
    class-patternpattern for the class name
    method-patternpattern for the method name
    condition-expressioncondition expression
    [E]turn on regex match, the default behavior is wildcard match
    [n:]execution times
    [m <arg>]Specify the max number of matched Classes, the default value is 50. Long format is [maxMatch <arg>].

    There's one thing worthy noting here is observation expression. The observation expression supports OGNL grammar, for example, you can come up a expression like this "{params,returnObj}". All OGNL expressions are supported as long as they are legal to the grammar.

    Thanks for advice's data structure, it is possible to observe from varieties of different angles. Inside advice parameter, all necessary information for notification can be found.

    ',6),v=s("Pls. refer to "),g=s("core parameters in expression"),f=s(" for more details."),_=s("Pls. also refer to "),x={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},y=s("https://github.com/alibaba/arthas/issues/71"),C=s(" for more advanced usage"),G=s("OGNL official site: "),L={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},M=s("https://commons.apache.org/proper/commons-ognl/language-guide.html"),w=a("h2",{id:"usage",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#usage","aria-hidden":"true"},"#"),s(" Usage")],-1),T=a("h3",{id:"start-demo",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#start-demo","aria-hidden":"true"},"#"),s(" Start Demo")],-1),A=s("Start "),P=a("code",null,"math-game",-1),$=s(" in "),N=s("Quick Start"),j=s("."),F=p(`

    stack

    $ stack demo.MathGame primeFactors
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 36 ms.
    +ts=2018-12-04 01:32:19;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +

    Specify the max number of matched Classes

    $ stack demo.MathGame primeFactors -m 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count:1 , method count:1) cost in 561 ms, listenerId: 5.
    +ts=2022-12-25 21:07:07;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@b4aac2
    +    @demo.MathGame.primeFactors()
    +        at demo.MathGame.run(MathGame.java:46)
    +        at demo.MathGame.main(MathGame.java:38)
    +

    Filtering by condition expression

    $ stack demo.MathGame primeFactors 'params[0]<0' -n 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 30 ms.
    +ts=2018-12-04 01:34:27;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +
    +ts=2018-12-04 01:34:30;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +
    +Command execution times exceed limit: 2, so command will exit. You can set it with -n option.
    +

    Filtering by cost

    $ stack demo.MathGame primeFactors '#cost>5'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 35 ms.
    +ts=2018-12-04 01:35:58;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +
    `,8);function S(I,E){const e=i("ExternalLinkIcon"),t=i("RouterLink");return c(),r("div",null,[u,a("p",null,[a("a",m,[h,k,n(e)])]),b,a("p",null,[v,n(t,{to:"/en/doc/advice-class.html"},{default:o(()=>[g]),_:1}),f]),a("ul",null,[a("li",null,[_,a("a",x,[y,n(e)]),C]),a("li",null,[G,a("a",L,[M,n(e)])])]),w,T,a("p",null,[A,P,$,n(t,{to:"/en/doc/quick-start.html"},{default:o(()=>[N]),_:1}),j]),F])}const V=l(d,[["render",S],["__file","stack.html.vue"]]);export{V as default}; diff --git a/3.x/assets/start-arthas.html.11758ed5.js b/3.x/assets/start-arthas.html.11758ed5.js new file mode 100644 index 00000000000..538e985d398 --- /dev/null +++ b/3.x/assets/start-arthas.html.11758ed5.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-a9c412f2","path":"/doc/start-arthas.html","title":"\u542F\u52A8 Arthas","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4EA4\u4E92\u6A21\u5F0F\u542F\u52A8","slug":"\u4EA4\u4E92\u6A21\u5F0F\u542F\u52A8","link":"#\u4EA4\u4E92\u6A21\u5F0F\u542F\u52A8","children":[]},{"level":2,"title":"\u975E\u4EA4\u4E92\u6A21\u5F0F\u542F\u52A8","slug":"\u975E\u4EA4\u4E92\u6A21\u5F0F\u542F\u52A8","link":"#\u975E\u4EA4\u4E92\u6A21\u5F0F\u542F\u52A8","children":[{"level":3,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":3,"title":"\u793A\u4F8B","slug":"\u793A\u4F8B","link":"#\u793A\u4F8B","children":[]},{"level":3,"title":"\u8FDC\u7A0B\u8BCA\u65AD","slug":"\u8FDC\u7A0B\u8BCA\u65AD","link":"#\u8FDC\u7A0B\u8BCA\u65AD","children":[]},{"level":3,"title":"sudo \u652F\u6301","slug":"sudo-\u652F\u6301","link":"#sudo-\u652F\u6301","children":[]},{"level":3,"title":"Windows \u73AF\u5883\u652F\u6301","slug":"windows-\u73AF\u5883\u652F\u6301","link":"#windows-\u73AF\u5883\u652F\u6301","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/start-arthas.md","version":"3.7.3"}');export{l as data}; diff --git a/3.x/assets/start-arthas.html.4886b6be.js b/3.x/assets/start-arthas.html.4886b6be.js new file mode 100644 index 00000000000..f55ab490ce5 --- /dev/null +++ b/3.x/assets/start-arthas.html.4886b6be.js @@ -0,0 +1,18 @@ +import{_ as a,o as s,c as n,d as e}from"./app.4d248835.js";const t={},p=e(`

    \u542F\u52A8 Arthas

    \u4EA4\u4E92\u6A21\u5F0F\u542F\u52A8

    ./as3.sh
    +
    \u279C  bin git:(develop) \u2717 ./as3.sh
    +Found existing java process, please choose one and input the serial number of the process, eg: 1 . Then hit ENTER.
    +  [1]: 3088 org.jetbrains.idea.maven.server.RemoteMavenServer
    +* [2]: 12872 org.apache.catalina.startup.Bootstrap
    +  [3]: 2455
    +Attaching to 12872...
    +  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \\ |  .--. ''--.  .--'|  '--'  | /  O  \\ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |\`.  \`-.
    +|  | |  ||  |\\  \\    |  |   |  |  |  ||  | |  |.-'    |
    +\`--' \`--'\`--' '--'   \`--'   \`--'  \`--'\`--' \`--'\`-----'
    +$
    +

    \u975E\u4EA4\u4E92\u6A21\u5F0F\u542F\u52A8

    \u542F\u52A8\u811A\u672C\u5982\u4E0B\uFF1A

    ./as3.sh <PID>[@IP:PORT]
    +

    \u53C2\u6570\u8BF4\u660E

    • PID\uFF1A\u76EE\u6807 Java \u8FDB\u7A0B ID\uFF08\u8BF7\u786E\u4FDD\u6267\u884C\u5F53\u524D\u6267\u884C\u547D\u4EE4\u7684\u7528\u6237\u5FC5\u987B\u6709\u8DB3\u591F\u7684\u6743\u9650\u64CD\u4F5C\u5BF9\u5E94\u7684 Java \u8FDB\u7A0B\uFF09
    • IP\uFF1AArthas Server \u4FA6\u542C\u7684\u5730\u5740\uFF0C\u9ED8\u8BA4\u503C\u662F 127.00.1\u3002Arthas \u5141\u8BB8\u591A\u4E2A\u7528\u6237\u540C\u65F6\u8BBF\u95EE\uFF0C\u5E76\u4E14\u5404\u81EA\u7684\u547D\u4EE4\u4E0D\u4F1A\u76F8\u4E92\u5E72\u6270\u6267\u884C
    • PORT\uFF1A\u76EE\u6807\u670D\u52A1\u5668 Arthas Server \u7684\u7AEF\u53E3\u53F7\uFF0C\u9ED8\u8BA4\u7684\u7AEF\u53E3\u53F7\u662F 3658

    \u793A\u4F8B

    • \u5982\u679C\u4E0D\u6307\u5B9A IP \u548C PORT\uFF0C\u9ED8\u8BA4\u662F 127.0.0.1 \u548C 3658

      ./as3.sh 12345

      \u4E0A\u8FF0\u547D\u4EE4\u7B49\u4EF7\u4E8E\uFF1A

      ./as3.sh 12356@127.0.0.1:3658

    \u8FDC\u7A0B\u8BCA\u65AD

    \u670D\u52A1\u5668\u542F\u52A8 Arthas Server \u540E\uFF0C\u5176\u4ED6\u4EBA\u53EF\u4EE5\u4F7F\u7528 telnet \u8FDC\u7A0B\u8FDE\u63A5\u4E0A\u53BB\u8FDB\u7A0B\u8BCA\u65AD\uFF0C\u4F8B\u5982\uFF1A

    telnet 192.168.1.119 3658
    +

    sudo \u652F\u6301

    \u6210\u719F\u7684\u7EBF\u4E0A\u7BA1\u7406\u73AF\u5883\u4E00\u822C\u90FD\u4E0D\u4F1A\u76F4\u63A5\u5F00\u653E JVM \u90E8\u7F72\u7528\u6237\u6743\u9650\u7ED9\u4F60\uFF0C\u800C\u662F\u901A\u8FC7 sudo-list \u6765\u63A7\u5236\u548C\u76D1\u63A7\u7528\u6237\u7684\u8D8A\u6743\u64CD\u4F5C\u3002\u7531\u4E8E as3.sh \u811A\u672C\u4E2D\u4F1A\u5BF9\u5F53\u524D\u7528\u6237\u7684\u73AF\u5883\u53D8\u91CF\u4EA7\u751F\u611F\u77E5\uFF0C\u6240\u4EE5\u9700\u8981\u52A0\u4E0A -H \u53C2\u6570

    sudo -u admin -H ./as3.sh 12345
    +

    Windows \u73AF\u5883\u652F\u6301

    \u76EE\u524Das.bat\u811A\u672C\u53EA\u652F\u6301\u4E00\u4E2A\u53C2\u6570\uFF1Apid

    as.bat <pid>
    +
    `,20),r=[p];function o(l,i){return s(),n("div",null,r)}const d=a(t,[["render",o],["__file","start-arthas.html.vue"]]);export{d as default}; diff --git a/3.x/assets/start-arthas.html.aeeb9c4f.js b/3.x/assets/start-arthas.html.aeeb9c4f.js new file mode 100644 index 00000000000..3e375741674 --- /dev/null +++ b/3.x/assets/start-arthas.html.aeeb9c4f.js @@ -0,0 +1,18 @@ +import{_ as a,o as s,c as e,d as n}from"./app.4d248835.js";const t={},r=n(`

    Start Arthas

    Interactive Mode

    ./as3.sh
    +
    \u279C  bin git:(develop) \u2717 ./as3.sh
    +Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
    +  [1]: 3088 org.jetbrains.idea.maven.server.RemoteMavenServer
    +* [2]: 12872 org.apache.catalina.startup.Bootstrap
    +  [3]: 2455
    +Attaching to 12872...
    +  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \\ |  .--. ''--.  .--'|  '--'  | /  O  \\ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |\`.  \`-.
    +|  | |  ||  |\\  \\    |  |   |  |  |  ||  | |  |.-'    |
    +\`--' \`--'\`--' '--'   \`--'   \`--'  \`--'\`--' \`--'\`-----'
    +$
    +

    Non-Interactive Mode

    Startup script is as follows:

    ./as3.sh <PID>[@IP:PORT]
    +

    Parameter Description

    • PID: Target Java process ID (Make sure that the user executing the command has sufficient permissions to operate the target Java process.)
    • IP: The address that Arthas Server listens on, the default value is 127.0.0.1. Arthas allows multiple users to access simultaneously without interfering with each other.
    • PORT: Arthas Server port\uFF0Cthe default value is 3658

    Sample

    • If IP and PORT are not specified, then the default values are 127.0.0.1 and 3658

      ./as3.sh 12345

      Equivalent to:

      ./as3.sh 12356@127.0.0.1:3658

    Remote Diagnosis

    After starting Arthas Server on the target Java process, users can use telnet connect to the remote Arthas Server, for example\uFF1A

    telnet 192.168.1.119 3658
    +

    sudo Support

    Usually online environment will only grant users privilege as low as possible, instead, all advanced operations are through sudo-list. Since as3.sh script takes into account the current effective user, it is possible to run the script in the other rule, by specifying -H option like this:

    sudo -u admin -H ./as3.sh 12345
    +

    Windows Support

    Right now as.bat script supports one parameter only, which is: pid

    as.bat <pid>
    +
    `,20),o=[r];function p(i,l){return s(),e("div",null,o)}const d=a(t,[["render",p],["__file","start-arthas.html.vue"]]);export{d as default}; diff --git a/3.x/assets/start-arthas.html.ddd2298e.js b/3.x/assets/start-arthas.html.ddd2298e.js new file mode 100644 index 00000000000..32e73e494c3 --- /dev/null +++ b/3.x/assets/start-arthas.html.ddd2298e.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-7af576f3","path":"/en/doc/start-arthas.html","title":"Start Arthas","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Interactive Mode","slug":"interactive-mode","link":"#interactive-mode","children":[]},{"level":2,"title":"Non-Interactive Mode","slug":"non-interactive-mode","link":"#non-interactive-mode","children":[{"level":3,"title":"Parameter Description","slug":"parameter-description","link":"#parameter-description","children":[]},{"level":3,"title":"Sample","slug":"sample","link":"#sample","children":[]},{"level":3,"title":"Remote Diagnosis","slug":"remote-diagnosis","link":"#remote-diagnosis","children":[]},{"level":3,"title":"sudo Support","slug":"sudo-support","link":"#sudo-support","children":[]},{"level":3,"title":"Windows Support","slug":"windows-support","link":"#windows-support","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/start-arthas.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/stop.html.17210afa.js b/3.x/assets/stop.html.17210afa.js new file mode 100644 index 00000000000..09aeeb0244f --- /dev/null +++ b/3.x/assets/stop.html.17210afa.js @@ -0,0 +1 @@ +import{_ as t,o as s,c as o,a as e,e as a}from"./app.4d248835.js";const c={},n=e("h1",{id:"stop",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#stop","aria-hidden":"true"},"#"),a(" stop")],-1),r=e("p",null,"\u5173\u95ED Arthas \u670D\u52A1\u7AEF\uFF0C\u6240\u6709 Arthas \u5BA2\u6237\u7AEF\u5168\u90E8\u9000\u51FA\u3002",-1),_=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"\u63D0\u793A"),e("p",null,"\u5173\u95ED Arthas \u670D\u52A1\u5668\u4E4B\u524D\uFF0C\u4F1A\u91CD\u7F6E\u6389\u6240\u6709\u505A\u8FC7\u7684\u589E\u5F3A\u7C7B\u3002\u4F46\u662F\u7528 redefine \u91CD\u52A0\u8F7D\u7684\u7C7B\u5185\u5BB9\u4E0D\u4F1A\u88AB\u91CD\u7F6E\u3002")],-1),i=[n,r,_];function d(l,h){return s(),o("div",null,i)}const u=t(c,[["render",d],["__file","stop.html.vue"]]);export{u as default}; diff --git a/3.x/assets/stop.html.29be75c6.js b/3.x/assets/stop.html.29be75c6.js new file mode 100644 index 00000000000..7bfc3f49115 --- /dev/null +++ b/3.x/assets/stop.html.29be75c6.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-bc0910b2","path":"/doc/stop.html","title":"stop","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/stop.md","version":"3.7.3"}');export{t as data}; diff --git a/3.x/assets/stop.html.493e47db.js b/3.x/assets/stop.html.493e47db.js new file mode 100644 index 00000000000..3485ee4642e --- /dev/null +++ b/3.x/assets/stop.html.493e47db.js @@ -0,0 +1 @@ +import{_ as t,o as s,c as o,a as e,e as n}from"./app.4d248835.js";const c={},a=e("h1",{id:"stop",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#stop","aria-hidden":"true"},"#"),n(" stop")],-1),r=e("p",null,"terminates the Arthas server, all the Arthas clients connecting to this server will be disconnected.",-1),i=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"TIP"),e("p",null,"the class redefined by redefine command will not be reset.")],-1),l=[a,r,i];function d(_,h){return s(),o("div",null,l)}const m=t(c,[["render",d],["__file","stop.html.vue"]]);export{m as default}; diff --git a/3.x/assets/stop.html.8c6a9664.js b/3.x/assets/stop.html.8c6a9664.js new file mode 100644 index 00000000000..3dc8a16b15a --- /dev/null +++ b/3.x/assets/stop.html.8c6a9664.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-e33fb7da","path":"/en/doc/stop.html","title":"stop","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/stop.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/style.f2bd2fc0.css b/3.x/assets/style.f2bd2fc0.css new file mode 100644 index 00000000000..c6e7d3f0f92 --- /dev/null +++ b/3.x/assets/style.f2bd2fc0.css @@ -0,0 +1 @@ +:root{--back-to-top-z-index: 5;--back-to-top-color: #3eaf7c;--back-to-top-color-hover: #71cda3}.back-to-top{cursor:pointer;position:fixed;bottom:2rem;right:2.5rem;width:2rem;height:1.2rem;background-color:var(--back-to-top-color);-webkit-mask:url(/3.x/assets/back-to-top.8efcbe56.svg) no-repeat;mask:url(/3.x/assets/back-to-top.8efcbe56.svg) no-repeat;z-index:var(--back-to-top-z-index)}.back-to-top:hover{background-color:var(--back-to-top-color-hover)}@media (max-width: 959px){.back-to-top{display:none}}.back-to-top-enter-active,.back-to-top-leave-active{transition:opacity .3s}.back-to-top-enter-from,.back-to-top-leave-to{opacity:0}:root{--external-link-icon-color: #aaa}.external-link-icon{position:relative;display:inline-block;color:var(--external-link-icon-color);vertical-align:middle;top:-1px}.external-link-icon-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}:root{--medium-zoom-z-index: 100;--medium-zoom-bg-color: #ffffff;--medium-zoom-opacity: 1}.medium-zoom-overlay{background-color:var(--medium-zoom-bg-color)!important;z-index:var(--medium-zoom-z-index)}.medium-zoom-overlay~img{z-index:calc(var(--medium-zoom-z-index) + 1)}.medium-zoom--opened .medium-zoom-overlay{opacity:var(--medium-zoom-opacity)}:root{--nprogress-color: #29d;--nprogress-z-index: 1031}#nprogress{pointer-events:none}#nprogress .bar{background:var(--nprogress-color);position:fixed;z-index:var(--nprogress-z-index);top:0;left:0;width:100%;height:2px}.users-logo[data-v-024b28a0]{max-width:140px;-o-object-fit:contain;object-fit:contain;margin:10px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.user-boards[data-v-5032c352]{display:flex;flex-direction:column;justify-content:center;align-items:center;border-top:1px solid var(--c-border);padding:1.2rem 0;margin-top:20px}.user-boards .user-logos[data-v-5032c352]{display:flex;flex-wrap:wrap;justify-content:center}.icon[data-v-514d14c6]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;width:48px;height:48px;font-size:30px}.my-badge[data-v-b201bc64]{width:fit-content;width:-webkit-fit-content;width:-moz-fit-content;padding:5px;margin:0 10px;display:flex;align-items:center;justify-content:center;border-radius:5px;color:var(--c-text);background-color:#595f6533;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width: 719px){.my-badge[data-v-b201bc64]{margin:0 5px}}.badges[data-v-d7ced36e]{width:100%;display:flex;flex-wrap:wrap;justify-content:center;align-items:center}.navbar-version[data-v-a8869d06]{line-height:var(--navbar-height);color:var(--c-text-lighter)}.theme-default-content .right-menu-wrapper .right-menu-margin[data-v-64666cd5]{border-left:1px solid var(--c-border)}.right-menu-wrapper[data-v-64666cd5]{width:280px;float:right;margin-right:-300px;position:-webkit-sticky;position:sticky;top:0;font-size:.8rem}.right-menu-wrapper .right-menu-margin[data-v-64666cd5]{margin-top:calc(var(--navbar-height) + 1rem);border-radius:3px;overflow:hidden}.right-menu-wrapper .right-menu-title[data-v-64666cd5]{padding:10px 15px 0;background:var(--mainBg);font-size:1rem}.right-menu-wrapper .right-menu-title[data-v-64666cd5]:after{content:"";display:block;width:100%;height:1px;background:var(--c-border);margin-top:10px}.right-menu-wrapper .right-menu-content[data-v-64666cd5]{max-height:80vh;position:relative;overflow:hidden;background:var(--mainBg);padding:4px 3px 4px 0}.right-menu-wrapper .right-menu-content[data-v-64666cd5]::-webkit-scrollbar{width:3px;height:3px}.right-menu-wrapper .right-menu-content[data-v-64666cd5]::-webkit-scrollbar-track-piece{background:none}.right-menu-wrapper .right-menu-content[data-v-64666cd5]::-webkit-scrollbar-thumb:vertical{background-color:#7d7d7d4d}.right-menu-wrapper .right-menu-content[data-v-64666cd5]:hover{overflow-y:auto;padding-right:0}.right-menu-wrapper .right-menu-content .right-menu-item[data-v-64666cd5]{padding:4px 0 0 15px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;position:relative}.right-menu-wrapper .right-menu-content .right-menu-item.level2[data-v-64666cd5]{font-size:.8rem}.right-menu-wrapper .right-menu-content .right-menu-item.level3[data-v-64666cd5]{padding-left:27px}.right-menu-wrapper .right-menu-content .right-menu-item.level4[data-v-64666cd5]{padding-left:37px}.right-menu-wrapper .right-menu-content .right-menu-item.level5[data-v-64666cd5]{padding-left:47px}.right-menu-wrapper .right-menu-content .right-menu-item.level6[data-v-64666cd5]{padding-left:57px}.right-menu-wrapper .right-menu-content .right-menu-item.active[data-v-64666cd5]:before{content:"";position:absolute;top:5px;left:0;width:3px;height:14px;background:var(--c-text-accent);border-radius:0 4px 4px 0}.right-menu-wrapper .right-menu-content .right-menu-item.active a[data-v-64666cd5]{color:var(--c-text-accent);opacity:1}.right-menu-wrapper .right-menu-content .right-menu-item a[data-v-64666cd5]{color:var(--textColor);opacity:.75;display:inline-block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.right-menu-wrapper .right-menu-content .right-menu-item a[data-v-64666cd5]:hover{opacity:1}@media (max-width: 1300px){.theme-default-content .right-menu-wrapper[data-v-64666cd5]{display:none}}@media (min-width: 1300px){.page .theme-default-content.right-menu-padding[data-v-fdd717e0],.page .page-meta.right-menu-padding[data-v-fdd717e0],.page .page-nav.right-menu-padding[data-v-fdd717e0]{padding-right:240px;padding-left:0}}:root{--c-brand: #3eaf7c;--c-brand-light: #4abf8a;--c-bg: #ffffff;--c-bg-light: #f3f4f5;--c-bg-lighter: #eeeeee;--c-bg-navbar: var(--c-bg);--c-bg-sidebar: var(--c-bg);--c-bg-arrow: #cccccc;--c-text: #2c3e50;--c-text-accent: var(--c-brand);--c-text-light: #3a5169;--c-text-lighter: #4e6e8e;--c-text-lightest: #6a8bad;--c-text-quote: #999999;--c-border: #eaecef;--c-border-dark: #dfe2e5;--c-tip: #42b983;--c-tip-bg: var(--c-bg-light);--c-tip-title: var(--c-text);--c-tip-text: var(--c-text);--c-tip-text-accent: var(--c-text-accent);--c-warning: #e7c000;--c-warning-bg: #fffae3;--c-warning-title: #ad9000;--c-warning-text: #746000;--c-warning-text-accent: var(--c-text);--c-danger: #cc0000;--c-danger-bg: #ffe0e0;--c-danger-title: #990000;--c-danger-text: #660000;--c-danger-text-accent: var(--c-text);--c-details-bg: #eeeeee;--c-badge-tip: var(--c-tip);--c-badge-warning: var(--c-warning);--c-badge-danger: var(--c-danger);--t-color: .3s ease;--t-transform: .3s ease;--code-bg-color: #282c34;--code-hl-bg-color: rgba(0, 0, 0, .66);--code-ln-color: #9e9e9e;--code-ln-wrapper-width: 3.5rem;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-family-code: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;--navbar-height: 3.6rem;--navbar-padding-v: .7rem;--navbar-padding-h: 1.5rem;--sidebar-width: 20rem;--sidebar-width-mobile: calc(var(--sidebar-width) * .82);--content-width: 740px;--homepage-width: 960px}.back-to-top{--back-to-top-color: var(--c-brand);--back-to-top-color-hover: var(--c-brand-light)}.DocSearch{--docsearch-primary-color: var(--c-brand);--docsearch-text-color: var(--c-text);--docsearch-highlight-color: var(--c-brand);--docsearch-muted-color: var(--c-text-quote);--docsearch-container-background: rgba(9, 10, 17, .8);--docsearch-modal-background: var(--c-bg-light);--docsearch-searchbox-background: var(--c-bg-lighter);--docsearch-searchbox-focus-background: var(--c-bg);--docsearch-searchbox-shadow: inset 0 0 0 2px var(--c-brand);--docsearch-hit-color: var(--c-text-light);--docsearch-hit-active-color: var(--c-bg);--docsearch-hit-background: var(--c-bg);--docsearch-hit-shadow: 0 1px 3px 0 var(--c-border-dark);--docsearch-footer-background: var(--c-bg)}.external-link-icon{--external-link-icon-color: var(--c-text-quote)}.medium-zoom-overlay{--medium-zoom-bg-color: var(--c-bg)}#nprogress{--nprogress-color: var(--c-brand)}.pwa-popup{--pwa-popup-text-color: var(--c-text);--pwa-popup-bg-color: var(--c-bg);--pwa-popup-border-color: var(--c-brand);--pwa-popup-shadow: 0 4px 16px var(--c-brand);--pwa-popup-btn-text-color: var(--c-bg);--pwa-popup-btn-bg-color: var(--c-brand);--pwa-popup-btn-hover-bg-color: var(--c-brand-light)}.search-box{--search-bg-color: var(--c-bg);--search-accent-color: var(--c-brand);--search-text-color: var(--c-text);--search-border-color: var(--c-border);--search-item-text-color: var(--c-text-lighter);--search-item-focus-bg-color: var(--c-bg-light)}html.dark{--c-brand: #3aa675;--c-brand-light: #349469;--c-bg: #22272e;--c-bg-light: #2b313a;--c-bg-lighter: #262c34;--c-text: #adbac7;--c-text-light: #96a7b7;--c-text-lighter: #8b9eb0;--c-text-lightest: #8094a8;--c-border: #3e4c5a;--c-border-dark: #34404c;--c-tip: #318a62;--c-warning: #ceab00;--c-warning-bg: #7e755b;--c-warning-title: #ceac03;--c-warning-text: #362e00;--c-danger: #940000;--c-danger-bg: #806161;--c-danger-title: #610000;--c-danger-text: #3a0000;--c-details-bg: #323843;--code-hl-bg-color: #363b46}html.dark .DocSearch{--docsearch-logo-color: var(--c-text);--docsearch-modal-shadow: inset 1px 1px 0 0 #2c2e40, 0 3px 8px 0 #000309;--docsearch-key-shadow: inset 0 -2px 0 0 #282d55, inset 0 0 1px 1px #51577d, 0 2px 2px 0 rgba(3, 4, 9, .3);--docsearch-key-gradient: linear-gradient(-225deg, #444950, #1c1e21);--docsearch-footer-shadow: inset 0 1px 0 0 rgba(73, 76, 106, .5), 0 -4px 8px 0 rgba(0, 0, 0, .2)}html,body{padding:0;margin:0;background-color:var(--c-bg);transition:background-color var(--t-color)}html.dark{color-scheme:dark}html{font-size:16px}body{font-family:var(--font-family);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:1rem;color:var(--c-text)}a{font-weight:500;color:var(--c-text-accent);text-decoration:none;overflow-wrap:break-word}p a code{font-weight:400;color:var(--c-text-accent)}kbd{font-family:var(--font-family-code);color:var(--c-text);background:var(--c-bg-lighter);border:solid .15rem var(--c-border-dark);border-bottom:solid .25rem var(--c-border-dark);border-radius:.15rem;padding:0 .15em}code{font-family:var(--font-family-code);color:var(--c-text-lighter);padding:.25rem .5rem;margin:0;font-size:.85em;background-color:var(--c-bg-lighter);border-radius:3px;overflow-wrap:break-word;transition:background-color var(--t-color)}blockquote{font-size:1rem;color:var(--c-text-quote);border-left:.2rem solid var(--c-border-dark);margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ul,ol{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}h1:focus-visible,h2:focus-visible,h3:focus-visible,h4:focus-visible,h5:focus-visible,h6:focus-visible{outline:none}h1:hover .header-anchor,h2:hover .header-anchor,h3:hover .header-anchor,h4:hover .header-anchor,h5:hover .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid var(--c-border);transition:border-color var(--t-color)}h3{font-size:1.35rem}h4{font-size:1.15rem}h5{font-size:1.05rem}h6{font-size:1rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}a.header-anchor:hover{text-decoration:none}a.header-anchor:focus-visible{opacity:1}p,ul,ol{line-height:1.7}hr{border:0;border-top:1px solid var(--c-border)}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto;transition:border-color var(--t-color)}tr{border-top:1px solid var(--c-border-dark);transition:border-color var(--t-color)}tr:nth-child(2n){background-color:var(--c-bg-light);transition:background-color var(--t-color)}th,td{padding:.6em 1em;border:1px solid var(--c-border-dark);transition:border-color var(--t-color)}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:6px solid var(--c-bg-arrow)}.arrow.down{border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid var(--c-bg-arrow)}.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:6px solid var(--c-bg-arrow)}.arrow.left{border-top:4px solid transparent;border-bottom:4px solid transparent;border-right:6px solid var(--c-bg-arrow)}.badge{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:var(--c-bg);vertical-align:top;transition:color var(--t-color),background-color var(--t-color)}.badge.tip{background-color:var(--c-badge-tip)}.badge.warning{background-color:var(--c-badge-warning)}.badge.danger{background-color:var(--c-badge-danger)}.badge+.badge{margin-left:5px}code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:var(--font-family-code);font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#ec5975}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:#3eaf7c}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.3rem 1.5rem;margin:.85rem 0;border-radius:6px;overflow:auto}.theme-default-content pre code,.theme-default-content pre[class*=language-] code{color:#fff;padding:0;background-color:transparent;border-radius:0;overflow-wrap:unset;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.theme-default-content .line-number{font-family:var(--font-family-code)}div[class*=language-]{position:relative;background-color:var(--code-bg-color);border-radius:6px}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:var(--code-ln-color)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent!important;position:relative;z-index:1}div[class*=language-] .highlight-lines{-webkit-user-select:none;-moz-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlight-line{background-color:var(--code-hl-bg-color)}div[class*=language-]:not(.line-numbers-mode) .line-numbers{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlight-line{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlight-line:before{content:" ";position:absolute;z-index:2;left:0;top:0;display:block;width:var(--code-ln-wrapper-width);height:100%}div[class*=language-].line-numbers-mode pre{margin-left:var(--code-ln-wrapper-width);padding-left:1rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers{position:absolute;top:0;width:var(--code-ln-wrapper-width);text-align:center;color:var(--code-ln-color);padding-top:1.25rem;line-height:1.4;counter-reset:line-number}div[class*=language-].line-numbers-mode .line-numbers .line-number{position:relative;z-index:3;-webkit-user-select:none;-moz-user-select:none;user-select:none;height:1.4em}div[class*=language-].line-numbers-mode .line-numbers .line-number:before{counter-increment:line-number;content:counter(line-number);font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;top:0;left:0;width:var(--code-ln-wrapper-width);height:100%;border-radius:6px 0 0 6px;border-right:1px solid var(--code-hl-bg-color)}div[class*=language-].ext-c:before{content:"c"}div[class*=language-].ext-cpp:before{content:"cpp"}div[class*=language-].ext-cs:before{content:"cs"}div[class*=language-].ext-css:before{content:"css"}div[class*=language-].ext-dart:before{content:"dart"}div[class*=language-].ext-docker:before{content:"docker"}div[class*=language-].ext-fs:before{content:"fs"}div[class*=language-].ext-go:before{content:"go"}div[class*=language-].ext-html:before{content:"html"}div[class*=language-].ext-java:before{content:"java"}div[class*=language-].ext-js:before{content:"js"}div[class*=language-].ext-json:before{content:"json"}div[class*=language-].ext-kt:before{content:"kt"}div[class*=language-].ext-less:before{content:"less"}div[class*=language-].ext-makefile:before{content:"makefile"}div[class*=language-].ext-md:before{content:"md"}div[class*=language-].ext-php:before{content:"php"}div[class*=language-].ext-py:before{content:"py"}div[class*=language-].ext-rb:before{content:"rb"}div[class*=language-].ext-rs:before{content:"rs"}div[class*=language-].ext-sass:before{content:"sass"}div[class*=language-].ext-scss:before{content:"scss"}div[class*=language-].ext-sh:before{content:"sh"}div[class*=language-].ext-styl:before{content:"styl"}div[class*=language-].ext-ts:before{content:"ts"}div[class*=language-].ext-toml:before{content:"toml"}div[class*=language-].ext-vue:before{content:"vue"}div[class*=language-].ext-yml:before{content:"yml"}@media (max-width: 419px){.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}.code-group__nav{margin-top:.85rem;margin-bottom:calc(-1.7rem - 6px);padding-bottom:calc(1.7rem - 6px);padding-left:10px;padding-top:10px;border-top-left-radius:6px;border-top-right-radius:6px;background-color:var(--code-bg-color)}.code-group__ul{margin:auto 0;padding-left:0;display:inline-flex;list-style:none}.code-group__nav-tab{border:0;padding:5px;cursor:pointer;background-color:transparent;font-size:.85em;line-height:1.4;color:#ffffffe6;font-weight:600}.code-group__nav-tab:focus{outline:none}.code-group__nav-tab:focus-visible{outline:1px solid rgba(255,255,255,.9)}.code-group__nav-tab-active{border-bottom:var(--c-brand) 1px solid}@media (max-width: 419px){.code-group__nav{margin-left:-1.5rem;margin-right:-1.5rem;border-radius:0}}.code-group-item{display:none}.code-group-item__active{display:block}.code-group-item>pre{background-color:orange}.custom-container{transition:color var(--t-color),border-color var(--t-color),background-color var(--t-color)}.custom-container .custom-container-title{font-weight:600}.custom-container .custom-container-title:not(:only-child){margin-bottom:-.4rem}.custom-container.tip,.custom-container.warning,.custom-container.danger{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-container.tip{border-color:var(--c-tip);background-color:var(--c-tip-bg);color:var(--c-tip-text)}.custom-container.tip .custom-container-title{color:var(--c-tip-title)}.custom-container.tip a{color:var(--c-tip-text-accent)}.custom-container.warning{border-color:var(--c-warning);background-color:var(--c-warning-bg);color:var(--c-warning-text)}.custom-container.warning .custom-container-title{color:var(--c-warning-title)}.custom-container.warning a{color:var(--c-warning-text-accent)}.custom-container.danger{border-color:var(--c-danger);background-color:var(--c-danger-bg);color:var(--c-danger-text)}.custom-container.danger .custom-container-title{color:var(--c-danger-title)}.custom-container.danger a{color:var(--c-danger-text-accent)}.custom-container.details{display:block;position:relative;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:var(--c-details-bg)}.custom-container.details h4{margin-top:0}.custom-container.details figure:last-child,.custom-container.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-container.details summary{outline:none;cursor:pointer}.home{padding:var(--navbar-height) 2rem 0;max-width:var(--homepage-width);margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero h1,.home .hero .description,.home .hero .actions{margin:1.8rem auto}.home .hero .actions{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:var(--c-text-lightest)}.home .hero .action-button{display:inline-block;font-size:1.2rem;padding:.8rem 1.6rem;border-width:2px;border-style:solid;border-radius:4px;transition:background-color var(--t-color);box-sizing:border-box}.home .hero .action-button.primary{color:var(--c-bg);background-color:var(--c-brand);border-color:var(--c-brand)}.home .hero .action-button.primary:hover{background-color:var(--c-brand-light)}.home .hero .action-button.secondary{color:var(--c-brand);background-color:var(--c-bg);border-color:var(--c-brand)}.home .hero .action-button.secondary:hover{color:var(--c-bg);background-color:var(--c-brand-light)}.home .features{border-top:1px solid var(--c-border);transition:border-color var(--t-color);padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:var(--c-text-light)}.home .feature p{color:var(--c-text-lighter)}.home .theme-default-content{padding:0;margin:0}.home .footer{padding:2.5rem;border-top:1px solid var(--c-border);text-align:center;color:var(--c-text-lighter);transition:border-color var(--t-color)}@media (max-width: 719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width: 419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero h1,.home .hero .description,.home .hero .actions{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.page{padding-top:var(--navbar-height);padding-left:var(--sidebar-width)}.navbar{position:fixed;z-index:20;top:0;left:0;right:0;height:var(--navbar-height);box-sizing:border-box;border-bottom:1px solid var(--c-border);background-color:var(--c-bg-navbar);transition:background-color var(--t-color),border-color var(--t-color)}.sidebar{font-size:16px;width:var(--sidebar-width);position:fixed;z-index:10;margin:0;top:var(--navbar-height);left:0;bottom:0;box-sizing:border-box;border-right:1px solid var(--c-border);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--c-brand) var(--c-border);background-color:var(--c-bg-sidebar);transition:transform var(--t-transform),background-color var(--t-color),border-color var(--t-color)}.sidebar::-webkit-scrollbar{width:7px}.sidebar::-webkit-scrollbar-track{background-color:var(--c-border)}.sidebar::-webkit-scrollbar-thumb{background-color:var(--c-brand)}.sidebar-mask{position:fixed;z-index:9;top:0;left:0;width:100vw;height:100vh;display:none}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(1){transform:rotate(45deg) translate3d(5.5px,5.5px,0)}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(2){transform:scale3d(0,1,1)}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(3){transform:rotate(-45deg) translate3d(6px,-6px,0)}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(1),.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(3){transform-origin:center}.theme-container.no-navbar .theme-default-content h1,.theme-container.no-navbar .theme-default-content h2,.theme-container.no-navbar .theme-default-content h3,.theme-container.no-navbar .theme-default-content h4,.theme-container.no-navbar .theme-default-content h5,.theme-container.no-navbar .theme-default-content h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .page{padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width: 720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}.theme-default-content a:hover{text-decoration:underline}.theme-default-content img{max-width:100%}.theme-default-content h1,.theme-default-content h2,.theme-default-content h3,.theme-default-content h4,.theme-default-content h5,.theme-default-content h6{margin-top:calc(.5rem - var(--navbar-height));padding-top:calc(1rem + var(--navbar-height));margin-bottom:0}.theme-default-content h1:first-child,.theme-default-content h2:first-child,.theme-default-content h3:first-child,.theme-default-content h4:first-child,.theme-default-content h5:first-child,.theme-default-content h6:first-child{margin-bottom:1rem}.theme-default-content h1:first-child+p,.theme-default-content h1:first-child+pre,.theme-default-content h1:first-child+.custom-container,.theme-default-content h2:first-child+p,.theme-default-content h2:first-child+pre,.theme-default-content h2:first-child+.custom-container,.theme-default-content h3:first-child+p,.theme-default-content h3:first-child+pre,.theme-default-content h3:first-child+.custom-container,.theme-default-content h4:first-child+p,.theme-default-content h4:first-child+pre,.theme-default-content h4:first-child+.custom-container,.theme-default-content h5:first-child+p,.theme-default-content h5:first-child+pre,.theme-default-content h5:first-child+.custom-container,.theme-default-content h6:first-child+p,.theme-default-content h6:first-child+pre,.theme-default-content h6:first-child+.custom-container{margin-top:2rem}@media (max-width: 959px){.sidebar{font-size:15px;width:var(--sidebar-width-mobile)}.page{padding-left:var(--sidebar-width-mobile)}}@media (max-width: 719px){.sidebar{top:0;padding-top:var(--navbar-height);transform:translate(-100%)}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translate(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width: 419px){h1{font-size:1.9rem}}.navbar{--navbar-line-height: calc( var(--navbar-height) - 2 * var(--navbar-padding-v) );padding:var(--navbar-padding-v) var(--navbar-padding-h);line-height:var(--navbar-line-height)}.navbar .logo{height:var(--navbar-line-height);margin-right:var(--navbar-padding-v);vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:var(--c-text);position:relative}.navbar .navbar-items-wrapper{display:flex;position:absolute;box-sizing:border-box;top:var(--navbar-padding-v);right:var(--navbar-padding-h);height:var(--navbar-line-height);padding-left:var(--navbar-padding-h);white-space:nowrap;font-size:.9rem}.navbar .navbar-items-wrapper .search-box{flex:0 0 auto;vertical-align:top}@media (max-width: 719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.navbar-items{display:inline-block}.navbar-items a{display:inline-block;line-height:1.4rem;color:inherit}.navbar-items a:hover,.navbar-items a.router-link-active{color:var(--c-text-accent)}.navbar-items .navbar-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:var(--navbar-line-height)}.navbar-items .navbar-item:first-child{margin-left:0}@media (max-width: 719px){.navbar-items .navbar-item{margin-left:0}}@media (min-width: 719px){.navbar-items a:hover,.navbar-items a.router-link-active{color:var(--c-text)}.navbar-item>a:hover,.navbar-item>a.router-link-active{margin-bottom:-2px;border-bottom:2px solid var(--c-text-accent)}}.toggle-sidebar-button{position:absolute;top:.6rem;left:1rem;display:none;padding:.6rem;cursor:pointer}.toggle-sidebar-button .icon{display:flex;flex-direction:column;justify-content:center;align-items:center;width:1.25rem;height:1.25rem;cursor:inherit}.toggle-sidebar-button .icon span{display:inline-block;width:100%;height:2px;border-radius:2px;background-color:var(--c-text);transition:transform var(--t-transform)}.toggle-sidebar-button .icon span:nth-child(2){margin:6px 0}@media screen and (max-width: 719px){.toggle-sidebar-button{display:block}}.toggle-color-mode-button{display:flex;margin:auto;margin-left:1rem;border:0;background:none;color:var(--c-text);opacity:.8;cursor:pointer}.toggle-color-mode-button:hover{opacity:1}.toggle-color-mode-button .icon{width:1.25rem;height:1.25rem}.DocSearch{transition:background-color var(--t-color)}.navbar-dropdown-wrapper{cursor:pointer}.navbar-dropdown-wrapper .navbar-dropdown-title,.navbar-dropdown-wrapper .navbar-dropdown-title-mobile{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:var(--c-text)}.navbar-dropdown-wrapper .navbar-dropdown-title:hover,.navbar-dropdown-wrapper .navbar-dropdown-title-mobile:hover{border-color:transparent}.navbar-dropdown-wrapper .navbar-dropdown-title .arrow,.navbar-dropdown-wrapper .navbar-dropdown-title-mobile .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.navbar-dropdown-wrapper .navbar-dropdown-title-mobile{display:none;font-weight:600;font-size:inherit}.navbar-dropdown-wrapper .navbar-dropdown-title-mobile:hover{color:var(--c-text-accent)}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item{color:inherit;line-height:1.7rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle{margin:.45rem 0 0;border-top:1px solid var(--c-border);padding:1rem 0 .45rem;font-size:.9rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle>span{padding:0 1.5rem 0 1.25rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle>a{font-weight:inherit}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle>a.router-link-active:after{display:none}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subitem-wrapper{padding:0;list-style:none}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subitem-wrapper .navbar-dropdown-subitem{font-size:.9em}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a:hover,.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a.router-link-active{color:var(--c-text-accent)}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid var(--c-text-accent);border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item:first-child .navbar-dropdown-subtitle{margin-top:0;padding-top:0;border-top:0}@media (max-width: 719px){.navbar-dropdown-wrapper.open .navbar-dropdown-title,.navbar-dropdown-wrapper.open .navbar-dropdown-title-mobile{margin-bottom:.5rem}.navbar-dropdown-wrapper .navbar-dropdown-title,.navbar-dropdown-wrapper .navbar-dropdown-title-mobile{display:none}.navbar-dropdown-wrapper .navbar-dropdown-title-mobile{display:block}.navbar-dropdown-wrapper .navbar-dropdown{transition:height .1s ease-out;overflow:hidden}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle{border-top:0;margin-top:0;padding-top:0;padding-bottom:0}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle,.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item>a{font-size:15px;line-height:2rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width: 720px){.navbar-dropdown-wrapper{height:1.8rem}.navbar-dropdown-wrapper:hover .navbar-dropdown,.navbar-dropdown-wrapper.open .navbar-dropdown{display:block!important}.navbar-dropdown-wrapper.open:blur{display:none}.navbar-dropdown-wrapper .navbar-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:var(--c-bg-navbar);padding:.6rem 0;border:1px solid var(--c-border);border-bottom-color:var(--c-border-dark);text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.page{padding-bottom:2rem;display:block}.page .theme-default-content{max-width:var(--content-width);margin:0 auto;padding:2rem 2.5rem;padding-top:0}@media (max-width: 959px){.page .theme-default-content{padding:2rem}}@media (max-width: 419px){.page .theme-default-content{padding:1.5rem}}.page-meta{max-width:var(--content-width);margin:0 auto;padding:1rem 2.5rem;overflow:auto}@media (max-width: 959px){.page-meta{padding:2rem}}@media (max-width: 419px){.page-meta{padding:1.5rem}}.page-meta .meta-item{cursor:default;margin-top:.8rem}.page-meta .meta-item .meta-item-label{font-weight:500;color:var(--c-text-lighter)}.page-meta .meta-item .meta-item-info{font-weight:400;color:var(--c-text-quote)}.page-meta .edit-link{display:inline-block;margin-right:.25rem}.page-meta .last-updated{float:right}@media (max-width: 719px){.page-meta .last-updated{font-size:.8em;float:none}.page-meta .contributors{font-size:.8em}}.page-nav{max-width:var(--content-width);margin:0 auto;padding:1rem 2.5rem 2rem;padding-bottom:0}@media (max-width: 959px){.page-nav{padding:2rem}}@media (max-width: 419px){.page-nav{padding:1.5rem}}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid var(--c-border);transition:border-color var(--t-color);padding-top:1rem;overflow:auto}.page-nav .prev a:before{content:"\2190"}.page-nav .next{float:right}.page-nav .next a:after{content:"\2192"}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .navbar-items{display:none;border-bottom:1px solid var(--c-border);transition:border-color var(--t-color);padding:.5rem 0 .75rem}.sidebar .navbar-items a{font-weight:600}.sidebar .navbar-items .navbar-item{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar .sidebar-items{padding:1.5rem 0}@media (max-width: 719px){.sidebar .navbar-items{display:block}.sidebar .navbar-items .navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar .sidebar-items{padding:1rem 0}}.sidebar-item{cursor:default;border-left:.25rem solid transparent;color:var(--c-text)}.sidebar-item:focus-visible{outline-width:1px;outline-offset:-1px}.sidebar-item.active:not(p.sidebar-heading){font-weight:600;color:var(--c-text-accent);border-left-color:var(--c-text-accent)}.sidebar-item.sidebar-heading{transition:color .15s ease;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0}.sidebar-item.sidebar-heading+.sidebar-item-children{transition:height .1s ease-out;overflow:hidden;margin-bottom:.75rem}.sidebar-item.sidebar-heading.collapsible{cursor:pointer}.sidebar-item.sidebar-heading.collapsible .arrow{position:relative;top:-.12em;left:.5em}.sidebar-item:not(.sidebar-heading){font-size:1em;font-weight:400;display:inline-block;margin:0;padding:.35rem 1rem .35rem 2rem;line-height:1.4;width:100%;box-sizing:border-box}.sidebar-item:not(.sidebar-heading)+.sidebar-item-children{padding-left:1rem;font-size:.95em}.sidebar-item-children .sidebar-item-children .sidebar-item:not(.sidebar-heading){padding:.25rem 1rem .25rem 1.75rem}.sidebar-item-children .sidebar-item-children .sidebar-item:not(.sidebar-heading).active{font-weight:500;border-left-color:transparent}a.sidebar-heading+.sidebar-item-children .sidebar-item:not(.sidebar-heading).active{border-left-color:transparent}a.sidebar-item{cursor:pointer}a.sidebar-item:hover{color:var(--c-text-accent)}.table-of-contents .badge{vertical-align:middle}.dropdown-enter-from,.dropdown-leave-to{height:0!important}.fade-slide-y-enter-active{transition:all .2s ease}.fade-slide-y-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)}.fade-slide-y-enter-from,.fade-slide-y-leave-to{transform:translateY(10px);opacity:0}:root{--sidebar-width: 17rem;scroll-behavior:smooth}.site-name.can-hide{display:none}:root{--box-shadow: #f0f1f2}html.dark{--box-shadow: #0f0e0d}:root{--card-shadow: rgba(0, 0, 0, .15)}html.dark{--card-shadow: rgba(0, 0, 0, .3)}:root{--black: #000}html.dark{--black: #fff}:root{--dark-grey: #666}html.dark{--dark-grey: #999}:root{--light-grey: #999}html.dark{--light-grey: #666}:root{--white: #fff}html.dark{--white: #000}:root{--grey3: #333}html.dark{--grey3: #bbb}:root{--grey12: #bbb}html.dark{--grey12: #333}:root{--grey14: #eee}html.dark{--grey14: #111}:root{--navbar-height: 3.6rem}:root{--content-width: 740px}:root{--color-transition: .3s ease}:root{--transform-transition: .3s ease}@-webkit-keyframes message-move-in{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@keyframes message-move-in{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@-webkit-keyframes message-move-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100%)}}@keyframes message-move-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100%)}}#message-container{position:fixed;top:calc(var(--navbar-height) + 1rem);right:0;left:0;z-index:75;text-align:center}#message-container .message{display:inline-block;padding:8px 10px;border-radius:3px;background:var(--c-bg, #fff);color:var(--c-text, #2c3e50);box-shadow:0 0 10px 0 var(--box-shadow, #f0f1f2);font-size:14px;transition:height .2s ease-in-out,margin .2s ease-in-out}#message-container .message.move-in{-webkit-animation:message-move-in .3s ease-in-out;animation:message-move-in .3s ease-in-out}#message-container .message.move-out{-webkit-animation:message-move-out .3s ease-in-out;animation:message-move-out .3s ease-in-out;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}#message-container .message svg{position:relative;bottom:-.125em;margin-right:5px}:root{--balloon-border-radius: 2px;--balloon-color: rgba(16, 16, 16, .95);--balloon-text-color: #fff;--balloon-font-size: 12px;--balloon-move: 4px}button[aria-label][data-balloon-pos]{overflow:visible}[aria-label][data-balloon-pos]{position:relative;cursor:pointer}[aria-label][data-balloon-pos]:after{opacity:0;pointer-events:none;transition:all .18s ease-out .18s;text-indent:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-weight:400;font-style:normal;text-shadow:none;font-size:var(--balloon-font-size);background:var(--balloon-color);border-radius:2px;color:var(--balloon-text-color);border-radius:var(--balloon-border-radius);content:attr(aria-label);padding:.5em 1em;position:absolute;white-space:nowrap;z-index:10}[aria-label][data-balloon-pos]:before{width:0;height:0;border:5px solid transparent;border-top-color:var(--balloon-color);opacity:0;pointer-events:none;transition:all .18s ease-out .18s;content:"";position:absolute;z-index:10}[aria-label][data-balloon-pos]:hover:before,[aria-label][data-balloon-pos]:hover:after,[aria-label][data-balloon-pos][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-visible]:after,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after{opacity:1;pointer-events:none}[aria-label][data-balloon-pos].font-awesome:after{font-family:FontAwesome,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}[aria-label][data-balloon-pos][data-balloon-break]:after{white-space:pre}[aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after{white-space:pre-line;word-break:break-word}[aria-label][data-balloon-pos][data-balloon-blunt]:before,[aria-label][data-balloon-pos][data-balloon-blunt]:after{transition:none}[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:after{transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:before{transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos*=-left]:after{left:0}[aria-label][data-balloon-pos][data-balloon-pos*=-left]:before{left:5px}[aria-label][data-balloon-pos][data-balloon-pos*=-right]:after{right:0}[aria-label][data-balloon-pos][data-balloon-pos*=-right]:before{right:5px}[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:after,[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:after{transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:before,[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:before{transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-pos^=up]:before,[aria-label][data-balloon-pos][data-balloon-pos^=up]:after{bottom:100%;transform-origin:top;transform:translateY(var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^=up]:after{margin-bottom:10px}[aria-label][data-balloon-pos][data-balloon-pos=up]:before,[aria-label][data-balloon-pos][data-balloon-pos=up]:after{left:50%;transform:translate(-50%,var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^=down]:before,[aria-label][data-balloon-pos][data-balloon-pos^=down]:after{top:100%;transform:translateY(calc(var(--balloon-move) * -1))}[aria-label][data-balloon-pos][data-balloon-pos^=down]:after{margin-top:10px}[aria-label][data-balloon-pos][data-balloon-pos^=down]:before{width:0;height:0;border:5px solid transparent;border-bottom-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos=down]:after,[aria-label][data-balloon-pos][data-balloon-pos=down]:before{left:50%;transform:translate(-50%,calc(var(--balloon-move) * -1))}[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:after{transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:before{transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:after,[aria-label][data-balloon-pos][data-balloon-pos=left]:before{right:100%;top:50%;transform:translate(var(--balloon-move),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:after{margin-right:10px}[aria-label][data-balloon-pos][data-balloon-pos=left]:before{width:0;height:0;border:5px solid transparent;border-left-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos=right]:after,[aria-label][data-balloon-pos][data-balloon-pos=right]:before{left:100%;top:50%;transform:translate(calc(var(--balloon-move) * -1),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=right]:after{margin-left:10px}[aria-label][data-balloon-pos][data-balloon-pos=right]:before{width:0;height:0;border:5px solid transparent;border-right-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-length]:after{white-space:normal}[aria-label][data-balloon-pos][data-balloon-length=small]:after{width:80px}[aria-label][data-balloon-pos][data-balloon-length=medium]:after{width:150px}[aria-label][data-balloon-pos][data-balloon-length=large]:after{width:260px}[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{width:380px}@media screen and (max-width: 768px){[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{width:90vw}}[aria-label][data-balloon-pos][data-balloon-length=fit]:after{width:100%}.copy-code-button{border-width:0;background-color:transparent;cursor:pointer;width:32px;height:32px;padding:7px 8px;border-radius:50%;background:#339af0;color:#fff;outline:none}.copy-code-button:hover{background:#228be6;cursor:pointer!important}div[class*=language-] .copy-code-button{position:absolute;right:-14px;bottom:-14px;z-index:5}@media (max-width: 419px){div[class*=language-] .copy-code-button{right:0;bottom:0;width:28px;height:28px;border-radius:50% 10% 0}div[class*=language-] .copy-code-button .icon-copy-code{position:relative;top:2px;left:2px}}.copy-code-button .icon-copy-code{width:100%;height:100%}.copy-code-pure-button{border-width:0;background-color:transparent;cursor:pointer;box-sizing:content-box;width:.75rem;height:.75rem;padding:.8em;color:var(--code-ln-color, #9e9e9e);outline:none}.copy-code-pure-button:hover{background-color:var(--code-hl-bg-color, rgba(0, 0, 0, .66));cursor:pointer!important}div[class*=language-] .copy-code-pure-button{position:absolute;top:0;right:3em;z-index:5}.copy-code-pure-button .icon-copy-code{width:100%;height:100%;fill:currentcolor}/*! @docsearch/css 3.2.1 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::-moz-placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{-webkit-animation:none;animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{-webkit-animation:fade-in .1s ease-in forwards;animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:focus{outline:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:-webkit-sticky;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"\bb "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@-webkit-keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media (min-width: 751px){#docsearch-container{min-width:171.36px}}@media (max-width: 750px){.DocSearch-Container{position:fixed}#docsearch-container{min-width:52px}} diff --git a/3.x/assets/sysenv.html.2f968356.js b/3.x/assets/sysenv.html.2f968356.js new file mode 100644 index 00000000000..8816fb19157 --- /dev/null +++ b/3.x/assets/sysenv.html.2f968356.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-0333612e","path":"/doc/sysenv.html","title":"sysenv","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"\u67E5\u770B\u6240\u6709\u73AF\u5883\u53D8\u91CF","slug":"\u67E5\u770B\u6240\u6709\u73AF\u5883\u53D8\u91CF","link":"#\u67E5\u770B\u6240\u6709\u73AF\u5883\u53D8\u91CF","children":[]},{"level":3,"title":"\u67E5\u770B\u5355\u4E2A\u73AF\u5883\u53D8\u91CF","slug":"\u67E5\u770B\u5355\u4E2A\u73AF\u5883\u53D8\u91CF","link":"#\u67E5\u770B\u5355\u4E2A\u73AF\u5883\u53D8\u91CF","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/sysenv.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/sysenv.html.ac969eec.js b/3.x/assets/sysenv.html.ac969eec.js new file mode 100644 index 00000000000..55987f151c1 --- /dev/null +++ b/3.x/assets/sysenv.html.ac969eec.js @@ -0,0 +1,52 @@ +import{_ as s,o as a,c as d,a as e,b as l,e as n,d as r,r as v}from"./app.4d248835.js";const c={},t=e("h1",{id:"sysenv",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#sysenv","aria-hidden":"true"},"#"),n(" sysenv")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-sysenv",target:"_blank",rel:"noopener noreferrer"},u=e("code",null,"sysenv",-1),o=n("\u5728\u7EBF\u6559\u7A0B"),b=r(`

    \u63D0\u793A

    \u67E5\u770B\u5F53\u524D JVM \u7684\u73AF\u5883\u5C5E\u6027(System Environment Variables)

    \u4F7F\u7528\u53C2\u8003

     USAGE:
    +   sysenv [-h] [env-name]
    +
    + SUMMARY:
    +   Display the system env.
    +
    + EXAMPLES:
    +   sysenv
    +   sysenv USER
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/sysenv
    +
    + OPTIONS:
    + -h, --help                                                 this help
    + <env-name>                                                 env name
    +

    \u67E5\u770B\u6240\u6709\u73AF\u5883\u53D8\u91CF

    $ sysenv
    + KEY                      VALUE
    +----------------------------------------------------------------------------------------------------------------------------
    + PATH                     /Users/admin/.sdkman/candidates/visualvm/current/bin:/Users/admin/.sdkman/candidates/ja
    +                          va/current/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/
    +                          MacOS
    + SDKMAN_VERSION           5.7.3+337
    + JAVA_HOME                /Users/admin/.sdkman/candidates/java/current
    + JAVA_MAIN_CLASS_65244    demo.MathGame
    + TERM                     xterm-256color
    + LANG                     zh_CN.UTF-8
    + AUTOJUMP_SOURCED         1
    + COLORTERM                truecolor
    + LOGNAME                  admin
    + XPC_SERVICE_NAME         0
    + PWD                      /Users/admin/code/ali/arthas/demo
    + TERM_PROGRAM_VERSION     3.2.5
    + _                        /Users/admin/.sdkman/candidates/java/current/bin/java
    + SHELL                    /bin/bash
    + TERM_PROGRAM             iTerm.app
    + SDKMAN_PLATFORM          Darwin
    + USER                     admin
    + ITERM_PROFILE            Default
    + TMPDIR                   /var/folders/0r/k561bkk917gg972stqclbz9h0000gn/T/
    + XPC_FLAGS                0x0
    + TERM_SESSION_ID          w0t4p0:60BC264D-9649-42AC-A7E4-AF85B69F93F8
    + __CF_USER_TEXT_ENCODING  0x1F5:0x19:0x34
    + Apple_PubSub_Socket_Ren  /private/tmp/com.apple.launchd.DwmmjSQsll/Render
    + der
    + COLORFGBG                7;0
    + HOME                     /Users/admin
    + SHLVL                    1
    + AUTOJUMP_ERROR_PATH      /Users/admin/Library/autojump/errors.log
    +

    \u67E5\u770B\u5355\u4E2A\u73AF\u5883\u53D8\u91CF

    \u63D0\u793A

    \u652F\u6301\u901A\u8FC7TAB\u952E\u81EA\u52A8\u8865\u5168

    $ sysenv USER
    +USER=admin
    +
    `,8);function h(_,p){const i=v("ExternalLinkIcon");return a(),d("div",null,[t,e("p",null,[e("a",m,[u,o,l(i)])]),b])}const R=s(c,[["render",h],["__file","sysenv.html.vue"]]);export{R as default}; diff --git a/3.x/assets/sysenv.html.ce9a0bce.js b/3.x/assets/sysenv.html.ce9a0bce.js new file mode 100644 index 00000000000..8cd26b2517b --- /dev/null +++ b/3.x/assets/sysenv.html.ce9a0bce.js @@ -0,0 +1,52 @@ +import{_ as s,o as a,c as d,a as e,b as l,e as n,d as r,r as v}from"./app.4d248835.js";const c={},t=e("h1",{id:"sysenv",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#sysenv","aria-hidden":"true"},"#"),n(" sysenv")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-sysenv",target:"_blank",rel:"noopener noreferrer"},u=e("code",null,"sysenv",-1),o=n(" online tutorial"),b=r(`

    TIP

    View the current JVM environment variables.

    Usage

     USAGE:
    +   sysenv [-h] [env-name]
    +
    + SUMMARY:
    +   Display the system env.
    +
    + EXAMPLES:
    +   sysenv
    +   sysenv USER
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/sysenv
    +
    + OPTIONS:
    + -h, --help                                                 this help
    + <env-name>                                                 env name
    +

    View all environment variables

    $ sysenv
    + KEY                      VALUE
    +----------------------------------------------------------------------------------------------------------------------------
    + PATH                     /Users/admin/.sdkman/candidates/visualvm/current/bin:/Users/admin/.sdkman/candidates/ja
    +                          va/current/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/
    +                          MacOS
    + SDKMAN_VERSION           5.7.3+337
    + JAVA_HOME                /Users/admin/.sdkman/candidates/java/current
    + JAVA_MAIN_CLASS_65244    demo.MathGame
    + TERM                     xterm-256color
    + LANG                     zh_CN.UTF-8
    + AUTOJUMP_SOURCED         1
    + COLORTERM                truecolor
    + LOGNAME                  admin
    + XPC_SERVICE_NAME         0
    + PWD                      /Users/admin/code/ali/arthas/demo
    + TERM_PROGRAM_VERSION     3.2.5
    + _                        /Users/admin/.sdkman/candidates/java/current/bin/java
    + SHELL                    /bin/bash
    + TERM_PROGRAM             iTerm.app
    + SDKMAN_PLATFORM          Darwin
    + USER                     admin
    + ITERM_PROFILE            Default
    + TMPDIR                   /var/folders/0r/k561bkk917gg972stqclbz9h0000gn/T/
    + XPC_FLAGS                0x0
    + TERM_SESSION_ID          w0t4p0:60BC264D-9649-42AC-A7E4-AF85B69F93F8
    + __CF_USER_TEXT_ENCODING  0x1F5:0x19:0x34
    + Apple_PubSub_Socket_Ren  /private/tmp/com.apple.launchd.DwmmjSQsll/Render
    + der
    + COLORFGBG                7;0
    + HOME                     /Users/admin
    + SHLVL                    1
    + AUTOJUMP_ERROR_PATH      /Users/admin/Library/autojump/errors.log
    +

    View individual environment variables

    TIP

    Use tab for auto-completion

    $ sysenv USER
    +USER=admin
    +
    `,8);function h(_,p){const i=v("ExternalLinkIcon");return a(),d("div",null,[t,e("p",null,[e("a",m,[u,o,l(i)])]),b])}const R=s(c,[["render",h],["__file","sysenv.html.vue"]]);export{R as default}; diff --git a/3.x/assets/sysenv.html.d4a09599.js b/3.x/assets/sysenv.html.d4a09599.js new file mode 100644 index 00000000000..7928e87840e --- /dev/null +++ b/3.x/assets/sysenv.html.d4a09599.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-645190d5","path":"/en/doc/sysenv.html","title":"sysenv","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"View all environment variables","slug":"view-all-environment-variables","link":"#view-all-environment-variables","children":[]},{"level":3,"title":"View individual environment variables","slug":"view-individual-environment-variables","link":"#view-individual-environment-variables","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/sysenv.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/sysprop.html.024045c5.js b/3.x/assets/sysprop.html.024045c5.js new file mode 100644 index 00000000000..2337f2f951d --- /dev/null +++ b/3.x/assets/sysprop.html.024045c5.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-1f738fad","path":"/en/doc/sysprop.html","title":"sysprop","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"Check all properties","slug":"check-all-properties","link":"#check-all-properties","children":[]},{"level":3,"title":"Check One Single Property","slug":"check-one-single-property","link":"#check-one-single-property","children":[]},{"level":3,"title":"Modify Single Property","slug":"modify-single-property","link":"#modify-single-property","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/sysprop.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/sysprop.html.36bf4069.js b/3.x/assets/sysprop.html.36bf4069.js new file mode 100644 index 00000000000..844c294fe8a --- /dev/null +++ b/3.x/assets/sysprop.html.36bf4069.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-7012b8ce","path":"/doc/sysprop.html","title":"sysprop","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"\u67E5\u770B\u6240\u6709\u5C5E\u6027","slug":"\u67E5\u770B\u6240\u6709\u5C5E\u6027","link":"#\u67E5\u770B\u6240\u6709\u5C5E\u6027","children":[]},{"level":3,"title":"\u67E5\u770B\u5355\u4E2A\u5C5E\u6027","slug":"\u67E5\u770B\u5355\u4E2A\u5C5E\u6027","link":"#\u67E5\u770B\u5355\u4E2A\u5C5E\u6027","children":[]},{"level":3,"title":"\u4FEE\u6539\u5355\u4E2A\u5C5E\u6027","slug":"\u4FEE\u6539\u5355\u4E2A\u5C5E\u6027","link":"#\u4FEE\u6539\u5355\u4E2A\u5C5E\u6027","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/sysprop.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/sysprop.html.76aee09d.js b/3.x/assets/sysprop.html.76aee09d.js new file mode 100644 index 00000000000..9ddf9ce0c3f --- /dev/null +++ b/3.x/assets/sysprop.html.76aee09d.js @@ -0,0 +1,96 @@ +import{_ as a,o as s,c as r,a as e,b as l,e as n,d,r as v}from"./app.4d248835.js";const t={},c=e("h1",{id:"sysprop",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#sysprop","aria-hidden":"true"},"#"),n(" sysprop")],-1),o={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-sysprop",target:"_blank",rel:"noopener noreferrer"},u=e("code",null,"sysprop",-1),m=n(" online tutorial"),b=d(`

    TIP

    Examine the system properties from the target JVM

    Usage

     USAGE:
    +   sysprop [-h] [property-name] [property-value]
    +
    + SUMMARY:
    +   Display, and change all the system properties.
    +
    + EXAMPLES:
    + sysprop
    + sysprop file.encoding
    + sysprop production.mode true
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/sysprop
    +
    + OPTIONS:
    + -h, --help                                  this help
    + <property-name>                             property name
    + <property-value>                            property value
    +

    Check all properties

    $ sysprop
    + KEY                                                  VALUE
    +-------------------------------------------------------------------------------------------------------------------------------------
    + java.runtime.name                                    Java(TM) SE Runtime Environment
    + sun.boot.library.path                                /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib
    + java.vm.version                                      25.51-b03
    + user.country.format                                  CN
    + gopherProxySet                                       false
    + java.vm.vendor                                       Oracle Corporation
    + java.vendor.url                                      http://java.oracle.com/
    + path.separator                                       :
    + java.vm.name                                         Java HotSpot(TM) 64-Bit Server VM
    + file.encoding.pkg                                    sun.io
    + user.country                                         US
    + sun.java.launcher                                    SUN_STANDARD
    + sun.os.patch.level                                   unknown
    + java.vm.specification.name                           Java Virtual Machine Specification
    + user.dir                                             /private/var/tmp
    + java.runtime.version                                 1.8.0_51-b16
    + java.awt.graphicsenv                                 sun.awt.CGraphicsEnvironment
    + java.endorsed.dirs                                   /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/endors
    +                                                      ed
    + os.arch                                              x86_64
    + java.io.tmpdir                                       /var/folders/2c/tbxwzs4s4sbcvh7frbcc7n000000gn/T/
    + line.separator
    +
    + java.vm.specification.vendor                         Oracle Corporation
    + os.name                                              Mac OS X
    + sun.jnu.encoding                                     UTF-8
    + java.library.path                                    /Users/wangtao/Library/Java/Extensions:/Library/Java/Extensions:/Network/Libra
    +                                                      ry/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
    + sun.nio.ch.bugLevel
    + java.specification.name                              Java Platform API Specification
    + java.class.version                                   52.0
    + sun.management.compiler                              HotSpot 64-Bit Tiered Compilers
    + os.version                                           10.12.6
    + user.home                                            /Users/wangtao
    + user.timezone                                        Asia/Shanghai
    + java.awt.printerjob                                  sun.lwawt.macosx.CPrinterJob
    + file.encoding                                        UTF-8
    + java.specification.version                           1.8
    + user.name                                            wangtao
    + java.class.path                                      .
    + java.vm.specification.version                        1.8
    + sun.arch.data.model                                  64
    + java.home                                            /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre
    + sun.java.command                                     Test
    + java.specification.vendor                            Oracle Corporation
    + user.language                                        en
    + awt.toolkit                                          sun.lwawt.macosx.LWCToolkit
    + java.vm.info                                         mixed mode
    + java.version                                         1.8.0_51
    + java.ext.dirs                                        /Users/wangtao/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.
    +                                                      8.0_51.jdk/Contents/Home/jre/lib/ext:/Library/Java/Extensions:/Network/Library
    +                                                      /Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
    + sun.boot.class.path                                  /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/resour
    +                                                      ces.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/li
    +                                                      b/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/l
    +                                                      ib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/H
    +                                                      ome/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Content
    +                                                      s/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Conte
    +                                                      nts/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jd
    +                                                      k/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.
    +                                                      jdk/Contents/Home/jre/classes
    + java.vendor                                          Oracle Corporation
    + file.separator                                       /
    + java.vendor.url.bug                                  http://bugreport.sun.com/bugreport/
    + sun.cpu.endian                                       little
    + sun.io.unicode.encoding                              UnicodeBig
    + sun.cpu.isalist
    +

    Check One Single Property

    TIP

    Use tab for auto-completion

    $ sysprop java.version
    +java.version=1.8.0_51
    +

    Modify Single Property

    $ sysprop user.country
    +user.country=US
    +$ sysprop user.country CN
    +Successfully changed the system property.
    +user.country=CN
    +
    `,10);function p(h,j){const i=v("ExternalLinkIcon");return s(),r("div",null,[c,e("p",null,[e("a",o,[u,m,l(i)])]),b])}const g=a(t,[["render",p],["__file","sysprop.html.vue"]]);export{g as default}; diff --git a/3.x/assets/sysprop.html.aeb4ee87.js b/3.x/assets/sysprop.html.aeb4ee87.js new file mode 100644 index 00000000000..df8fca61077 --- /dev/null +++ b/3.x/assets/sysprop.html.aeb4ee87.js @@ -0,0 +1,96 @@ +import{_ as a,o as s,c as r,a as e,b as d,e as n,d as l,r as v}from"./app.4d248835.js";const c={},t=e("h1",{id:"sysprop",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#sysprop","aria-hidden":"true"},"#"),n(" sysprop")],-1),o={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-sysprop",target:"_blank",rel:"noopener noreferrer"},u=e("code",null,"sysprop",-1),m=n("\u5728\u7EBF\u6559\u7A0B"),b=l(`

    \u63D0\u793A

    \u67E5\u770B\u5F53\u524D JVM \u7684\u7CFB\u7EDF\u5C5E\u6027(System Property)

    \u4F7F\u7528\u53C2\u8003

     USAGE:
    +   sysprop [-h] [property-name] [property-value]
    +
    + SUMMARY:
    +   Display, and change all the system properties.
    +
    + EXAMPLES:
    + sysprop
    + sysprop file.encoding
    + sysprop production.mode true
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/sysprop
    +
    + OPTIONS:
    + -h, --help                                  this help
    + <property-name>                             property name
    + <property-value>                            property value
    +

    \u67E5\u770B\u6240\u6709\u5C5E\u6027

    $ sysprop
    + KEY                                                  VALUE
    +-------------------------------------------------------------------------------------------------------------------------------------
    + java.runtime.name                                    Java(TM) SE Runtime Environment
    + sun.boot.library.path                                /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib
    + java.vm.version                                      25.51-b03
    + user.country.format                                  CN
    + gopherProxySet                                       false
    + java.vm.vendor                                       Oracle Corporation
    + java.vendor.url                                      http://java.oracle.com/
    + path.separator                                       :
    + java.vm.name                                         Java HotSpot(TM) 64-Bit Server VM
    + file.encoding.pkg                                    sun.io
    + user.country                                         US
    + sun.java.launcher                                    SUN_STANDARD
    + sun.os.patch.level                                   unknown
    + java.vm.specification.name                           Java Virtual Machine Specification
    + user.dir                                             /private/var/tmp
    + java.runtime.version                                 1.8.0_51-b16
    + java.awt.graphicsenv                                 sun.awt.CGraphicsEnvironment
    + java.endorsed.dirs                                   /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/endors
    +                                                      ed
    + os.arch                                              x86_64
    + java.io.tmpdir                                       /var/folders/2c/tbxwzs4s4sbcvh7frbcc7n000000gn/T/
    + line.separator
    +
    + java.vm.specification.vendor                         Oracle Corporation
    + os.name                                              Mac OS X
    + sun.jnu.encoding                                     UTF-8
    + java.library.path                                    /Users/wangtao/Library/Java/Extensions:/Library/Java/Extensions:/Network/Libra
    +                                                      ry/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
    + sun.nio.ch.bugLevel
    + java.specification.name                              Java Platform API Specification
    + java.class.version                                   52.0
    + sun.management.compiler                              HotSpot 64-Bit Tiered Compilers
    + os.version                                           10.12.6
    + user.home                                            /Users/wangtao
    + user.timezone                                        Asia/Shanghai
    + java.awt.printerjob                                  sun.lwawt.macosx.CPrinterJob
    + file.encoding                                        UTF-8
    + java.specification.version                           1.8
    + user.name                                            wangtao
    + java.class.path                                      .
    + java.vm.specification.version                        1.8
    + sun.arch.data.model                                  64
    + java.home                                            /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre
    + sun.java.command                                     Test
    + java.specification.vendor                            Oracle Corporation
    + user.language                                        en
    + awt.toolkit                                          sun.lwawt.macosx.LWCToolkit
    + java.vm.info                                         mixed mode
    + java.version                                         1.8.0_51
    + java.ext.dirs                                        /Users/wangtao/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.
    +                                                      8.0_51.jdk/Contents/Home/jre/lib/ext:/Library/Java/Extensions:/Network/Library
    +                                                      /Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
    + sun.boot.class.path                                  /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/resour
    +                                                      ces.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/li
    +                                                      b/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/l
    +                                                      ib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/H
    +                                                      ome/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Content
    +                                                      s/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Conte
    +                                                      nts/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jd
    +                                                      k/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.
    +                                                      jdk/Contents/Home/jre/classes
    + java.vendor                                          Oracle Corporation
    + file.separator                                       /
    + java.vendor.url.bug                                  http://bugreport.sun.com/bugreport/
    + sun.cpu.endian                                       little
    + sun.io.unicode.encoding                              UnicodeBig
    + sun.cpu.isalist
    +

    \u67E5\u770B\u5355\u4E2A\u5C5E\u6027

    \u63D0\u793A

    \u652F\u6301\u901A\u8FC7TAB\u952E\u81EA\u52A8\u8865\u5168

    $ sysprop java.version
    +java.version=1.8.0_51
    +

    \u4FEE\u6539\u5355\u4E2A\u5C5E\u6027

    $ sysprop user.country
    +user.country=US
    +$ sysprop user.country CN
    +Successfully changed the system property.
    +user.country=CN
    +
    `,10);function p(h,j){const i=v("ExternalLinkIcon");return s(),r("div",null,[t,e("p",null,[e("a",o,[u,m,d(i)])]),b])}const g=a(c,[["render",p],["__file","sysprop.html.vue"]]);export{g as default}; diff --git a/3.x/assets/tee.html.2c90d1cb.js b/3.x/assets/tee.html.2c90d1cb.js new file mode 100644 index 00000000000..6280c42c527 --- /dev/null +++ b/3.x/assets/tee.html.2c90d1cb.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-049503c9","path":"/en/doc/tee.html","title":"tee","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/tee.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/tee.html.8aa74468.js b/3.x/assets/tee.html.8aa74468.js new file mode 100644 index 00000000000..1ebfa6b2af6 --- /dev/null +++ b/3.x/assets/tee.html.8aa74468.js @@ -0,0 +1,18 @@ +import{_ as a,o as s,c as t,a as e,b as l,e as n,d,r}from"./app.4d248835.js";const c={},o=e("h1",{id:"tee",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#tee","aria-hidden":"true"},"#"),n(" tee")],-1),v={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-tee",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"tee",-1),u=n("\u5728\u7EBF\u6559\u7A0B"),p=d(`

    \u63D0\u793A

    \u7C7B\u4F3C\u4F20\u7EDF\u7684tee\u547D\u4EE4, \u7528\u4E8E\u8BFB\u53D6\u6807\u51C6\u8F93\u5165\u7684\u6570\u636E\uFF0C\u5E76\u5C06\u5176\u5185\u5BB9\u8F93\u51FA\u6210\u6587\u4EF6\u3002

    tee \u6307\u4EE4\u4F1A\u4ECE\u6807\u51C6\u8F93\u5165\u8BBE\u5907\u8BFB\u53D6\u6570\u636E\uFF0C\u5C06\u5176\u5185\u5BB9\u8F93\u51FA\u5230\u6807\u51C6\u8F93\u51FA\u8BBE\u5907\uFF0C\u540C\u65F6\u4FDD\u5B58\u6210\u6587\u4EF6\u3002

    \u4F7F\u7528\u53C2\u8003

     USAGE:
    +   tee [-a] [-h] [file]
    +
    + SUMMARY:
    +   tee command for pipes.
    +
    + EXAMPLES:
    +  sysprop | tee /path/to/logfile | grep java
    +  sysprop | tee -a /path/to/logfile | grep java
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/tee
    +
    + OPTIONS:
    + -a, --append                              Append to file
    + -h, --help                                this help
    + <file>                                    File path
    +
    `,3);function h(_,b){const i=r("ExternalLinkIcon");return s(),t("div",null,[o,e("p",null,[e("a",v,[m,u,l(i)])]),p])}const x=a(c,[["render",h],["__file","tee.html.vue"]]);export{x as default}; diff --git a/3.x/assets/tee.html.9daca569.js b/3.x/assets/tee.html.9daca569.js new file mode 100644 index 00000000000..a1c0158d68d --- /dev/null +++ b/3.x/assets/tee.html.9daca569.js @@ -0,0 +1,18 @@ +import{_ as t,o as i,c as s,a as e,b as d,e as n,d as l,r}from"./app.4d248835.js";const o={},c=e("h1",{id:"tee",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#tee","aria-hidden":"true"},"#"),n(" tee")],-1),u={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-tee",target:"_blank",rel:"noopener noreferrer"},v=e("code",null,"tee",-1),m=n(" online tutorial"),p=l(`

    TIP

    Similar to the traditional tee command, it is used to read standard input data and output its contents into a file.

    tee will read data from standard input device, output its content to standard output device, and save it as a file.

    Usage

     USAGE:
    +   tee [-a] [-h] [file]
    +
    + SUMMARY:
    +   tee command for pipes.
    +
    + EXAMPLES:
    +  sysprop | tee /path/to/logfile | grep java
    +  sysprop | tee -a /path/to/logfile | grep java
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/tee
    +
    + OPTIONS:
    + -a, --append                              Append to file
    + -h, --help                                this help
    + <file>                                    File path
    +
    `,3);function h(_,b){const a=r("ExternalLinkIcon");return i(),s("div",null,[c,e("p",null,[e("a",u,[v,m,d(a)])]),p])}const g=t(o,[["render",h],["__file","tee.html.vue"]]);export{g as default}; diff --git a/3.x/assets/tee.html.f88833bc.js b/3.x/assets/tee.html.f88833bc.js new file mode 100644 index 00000000000..e1c85b8e953 --- /dev/null +++ b/3.x/assets/tee.html.f88833bc.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-0536edb5","path":"/doc/tee.html","title":"tee","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/tee.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/thread.html.036b2896.js b/3.x/assets/thread.html.036b2896.js new file mode 100644 index 00000000000..2ef601e7eda --- /dev/null +++ b/3.x/assets/thread.html.036b2896.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-10845ac2","path":"/doc/thread.html","title":"thread","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"cpu \u4F7F\u7528\u7387\u662F\u5982\u4F55\u7EDF\u8BA1\u51FA\u6765\u7684\uFF1F","slug":"cpu-\u4F7F\u7528\u7387\u662F\u5982\u4F55\u7EDF\u8BA1\u51FA\u6765\u7684","link":"#cpu-\u4F7F\u7528\u7387\u662F\u5982\u4F55\u7EDF\u8BA1\u51FA\u6765\u7684","children":[{"level":3,"title":"\u5DE5\u4F5C\u539F\u7406\u8BF4\u660E\uFF1A","slug":"\u5DE5\u4F5C\u539F\u7406\u8BF4\u660E","link":"#\u5DE5\u4F5C\u539F\u7406\u8BF4\u660E","children":[]}]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"\u652F\u6301\u4E00\u952E\u5C55\u793A\u5F53\u524D\u6700\u5FD9\u7684\u524D N \u4E2A\u7EBF\u7A0B\u5E76\u6253\u5370\u5806\u6808\uFF1A","slug":"\u652F\u6301\u4E00\u952E\u5C55\u793A\u5F53\u524D\u6700\u5FD9\u7684\u524D-n-\u4E2A\u7EBF\u7A0B\u5E76\u6253\u5370\u5806\u6808","link":"#\u652F\u6301\u4E00\u952E\u5C55\u793A\u5F53\u524D\u6700\u5FD9\u7684\u524D-n-\u4E2A\u7EBF\u7A0B\u5E76\u6253\u5370\u5806\u6808","children":[]},{"level":3,"title":"\u5F53\u6CA1\u6709\u53C2\u6570\u65F6\uFF0C\u663E\u793A\u7B2C\u4E00\u9875\u7EBF\u7A0B\u7684\u4FE1\u606F","slug":"\u5F53\u6CA1\u6709\u53C2\u6570\u65F6-\u663E\u793A\u7B2C\u4E00\u9875\u7EBF\u7A0B\u7684\u4FE1\u606F","link":"#\u5F53\u6CA1\u6709\u53C2\u6570\u65F6-\u663E\u793A\u7B2C\u4E00\u9875\u7EBF\u7A0B\u7684\u4FE1\u606F","children":[]},{"level":3,"title":"thread --all, \u663E\u793A\u6240\u6709\u5339\u914D\u7684\u7EBF\u7A0B","slug":"thread-all-\u663E\u793A\u6240\u6709\u5339\u914D\u7684\u7EBF\u7A0B","link":"#thread-all-\u663E\u793A\u6240\u6709\u5339\u914D\u7684\u7EBF\u7A0B","children":[]},{"level":3,"title":"thread id, \u663E\u793A\u6307\u5B9A\u7EBF\u7A0B\u7684\u8FD0\u884C\u5806\u6808","slug":"thread-id-\u663E\u793A\u6307\u5B9A\u7EBF\u7A0B\u7684\u8FD0\u884C\u5806\u6808","link":"#thread-id-\u663E\u793A\u6307\u5B9A\u7EBF\u7A0B\u7684\u8FD0\u884C\u5806\u6808","children":[]},{"level":3,"title":"thread -b, \u627E\u51FA\u5F53\u524D\u963B\u585E\u5176\u4ED6\u7EBF\u7A0B\u7684\u7EBF\u7A0B","slug":"thread-b-\u627E\u51FA\u5F53\u524D\u963B\u585E\u5176\u4ED6\u7EBF\u7A0B\u7684\u7EBF\u7A0B","link":"#thread-b-\u627E\u51FA\u5F53\u524D\u963B\u585E\u5176\u4ED6\u7EBF\u7A0B\u7684\u7EBF\u7A0B","children":[]},{"level":3,"title":"thread -i, \u6307\u5B9A\u91C7\u6837\u65F6\u95F4\u95F4\u9694","slug":"thread-i-\u6307\u5B9A\u91C7\u6837\u65F6\u95F4\u95F4\u9694","link":"#thread-i-\u6307\u5B9A\u91C7\u6837\u65F6\u95F4\u95F4\u9694","children":[]},{"level":3,"title":"thread --state \uFF0C\u67E5\u770B\u6307\u5B9A\u72B6\u6001\u7684\u7EBF\u7A0B","slug":"thread-state-\u67E5\u770B\u6307\u5B9A\u72B6\u6001\u7684\u7EBF\u7A0B","link":"#thread-state-\u67E5\u770B\u6307\u5B9A\u72B6\u6001\u7684\u7EBF\u7A0B","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/thread.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/thread.html.3171fcb1.js b/3.x/assets/thread.html.3171fcb1.js new file mode 100644 index 00000000000..aca7f298f3e --- /dev/null +++ b/3.x/assets/thread.html.3171fcb1.js @@ -0,0 +1,112 @@ +import{_ as r,o as c,c as i,a,b as s,w as l,e as n,d as e,r as p}from"./app.4d248835.js";const d={},u=a("h1",{id:"thread",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#thread","aria-hidden":"true"},"#"),n(" thread")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-thread",target:"_blank",rel:"noopener noreferrer"},h=a("code",null,"thread",-1),v=n(" online tutorial"),b=e('

    TIP

    Check the basic info and stack trace of the target thread.

    Parameters

    NameSpecification
    idthread id in JVM
    [n:]the top n busiest threads with stack traces printed
    [b]locate the thread blocking the others
    [i <value>]specify the interval to collect data to compute CPU ratios (ms)
    [--all]Show all matching threads

    How the CPU ratios are calculated?

    The cpu ratios here is similar to the thread %CPU of the linux command top -H -p <pid>. During a sampling interval, the ratio of the incremental cpu time of each thread in the current JVM to the sampling interval time.

    Working principle description:

    • Do the first sampling, get the CPU time of all threads ( by calling java.lang.management.ThreadMXBean#getThreadCpuTime() and sun.management.HotspotThreadMBean.getInternalThreadCpuTimes() )
    • Sleep and wait for an interval (the default is 200ms, the interval can be specified by -i)
    • Do the second sampling, get the CPU time of all threads, compare the two sampling data, and calculate the incremental CPU time of each thread
    • Thread CPU usage ratio = Thread increment CPU time / Sampling interval time * 100%

    Note: this operation consumes CPU time too (getThreadCpuTime is time-consuming), therefore it is possible to observe Arthas's thread appears in the list. To avoid this, try to increase sample interval, for example: 5000 ms.

    ',8),k=n("Another way to view the thread cpu usage of the Java process, "),g={href:"https://github.com/oldratlee/useful-scripts/blob/dev-2.x/docs/java.md#-show-busy-java-threads",target:"_blank",rel:"noopener noreferrer"},T=a("code",null,"show-busy-java-threads",-1),f=n(" can come to help."),j=e(`

    Usage

    List the top n busiest threads with detailed stack trace

    $ thread -n 3
    +"C1 CompilerThread0" [Internal] cpuUsage=1.63% deltaTime=3ms time=1170ms
    +
    +
    +"arthas-command-execute" Id=23 cpuUsage=0.11% deltaTime=0ms time=401ms RUNNABLE
    +    at java.management@11.0.7/sun.management.ThreadImpl.dumpThreads0(Native Method)
    +    at java.management@11.0.7/sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:466)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.processTopBusyThreads(ThreadCommand.java:199)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.process(ThreadCommand.java:122)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process(AnnotatedCommandImpl.java:82)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access$100(AnnotatedCommandImpl.java:18)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:111)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:108)
    +    at com.taobao.arthas.core.shell.system.impl.ProcessImpl$CommandProcessTask.run(ProcessImpl.java:385)
    +    at java.base@11.0.7/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    +    at java.base@11.0.7/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    +    at java.base@11.0.7/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
    +    at java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    +    at java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    +    at java.base@11.0.7/java.lang.Thread.run(Thread.java:834)
    +
    +
    +"VM Periodic Task Thread" [Internal] cpuUsage=0.07% deltaTime=0ms time=584ms
    +
    `,3),I=n("Without thread ID, including "),A=a("code",null,"[Internal]",-1),C=n(" means JVM internal thread, refer to the introduction of "),y=n("dashboard"),x=n(" command."),E=a("code",null,"cpuUsage",-1),_=n(" is the CPU usage of the thread during the sampling interval, consistent with the data of the "),N=n("dashboard"),P=n(" command."),w=a("li",null,[a("code",null,"deltaTime"),n(" is the incremental CPU time of the thread during the sampling interval. If it is less than 1ms, it will be rounded and displayed as 0ms.")],-1),S=a("li",null,[a("code",null,"time"),n(" The total CPU time of thread.")],-1),U=e(`

    Note: The thread stack is acquired at the end of the second sampling, which does not indicate that the thread is processing the same task during the sampling interval. It is recommended that the interval time should not be too long. The larger the interval time, the more inaccurate.

    You can try to specify different intervals according to the specific situation and observe the output results.

    List first page threads' info when no options provided

    By default, they are arranged in descending order of CPU increment time, and only the first page of data is displayed.

    $ thread
    +Threads Total: 33, NEW: 0, RUNNABLE: 9, BLOCKED: 0, WAITING: 3, TIMED_WAITING: 4, TERMINATED: 0, Internal threads: 17
    +ID   NAME                           GROUP          PRIORITY  STATE     %CPU      DELTA_TIME TIME      INTERRUPT DAEMON
    +-1   C2 CompilerThread0             -              -1        -         5.06      0.010      0:0.973   false     true
    +-1   C1 CompilerThread0             -              -1        -         0.95      0.001      0:0.603   false     true
    +23   arthas-command-execute         system         5         RUNNABLE  0.17      0.000      0:0.226   false     true
    +-1   VM Periodic Task Thread        -              -1        -         0.05      0.000      0:0.094   false     true
    +-1   Sweeper thread                 -              -1        -         0.04      0.000      0:0.011   false     true
    +-1   G1 Young RemSet Sampling       -              -1        -         0.02      0.000      0:0.025   false     true
    +12   Attach Listener                system         9         RUNNABLE  0.0       0.000      0:0.022   false     true
    +11   Common-Cleaner                 InnocuousThrea 8         TIMED_WAI 0.0       0.000      0:0.000   false     true
    +3    Finalizer                      system         8         WAITING   0.0       0.000      0:0.000   false     true
    +2    Reference Handler              system         10        RUNNABLE  0.0       0.000      0:0.000   false     true
    +4    Signal Dispatcher              system         9         RUNNABLE  0.0       0.000      0:0.000   false     true
    +15   arthas-NettyHttpTelnetBootstra system         5         RUNNABLE  0.0       0.000      0:0.029   false     true
    +22   arthas-NettyHttpTelnetBootstra system         5         RUNNABLE  0.0       0.000      0:0.196   false     true
    +24   arthas-NettyHttpTelnetBootstra system         5         RUNNABLE  0.0       0.000      0:0.038   false     true
    +16   arthas-NettyWebsocketTtyBootst system         5         RUNNABLE  0.0       0.000      0:0.001   false     true
    +17   arthas-NettyWebsocketTtyBootst system         5         RUNNABLE  0.0       0.000      0:0.001   false     true
    +

    thread --all, show all matching threads

    Display all matching threads. Sometimes it is necessary to obtain all the thread data of the JVM for analysis.

    thread id, show the running stack for the target thread

    $ thread 1
    +"main" Id=1 WAITING on java.util.concurrent.CountDownLatch$Sync@29fafb28
    +    at sun.misc.Unsafe.park(Native Method)
    +    -  waiting on java.util.concurrent.CountDownLatch$Sync@29fafb28
    +    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    +    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
    +    at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
    +    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
    +    at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
    +

    thread -b, locate the thread bocking the others

    In some occasions, we experience the whole application is stuck because there's one particular thread hold one lock that other threads are relying on. To diagnose such an issue, Arthas provides thread -b to find the problematic thread in one single command.

    $ thread -b
    +"http-bio-8080-exec-4" Id=27 TIMED_WAITING
    +    at java.lang.Thread.sleep(Native Method)
    +    at test.arthas.TestThreadBlocking.doGet(TestThreadBlocking.java:22)
    +    -  locked java.lang.Object@725be470 <---- but blocks 4 other threads!
    +    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    +    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    +    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    +    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    +    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    +    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    +    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    +    at test.filter.TestDurexFilter.doFilter(TestDurexFilter.java:46)
    +    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    +    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    +    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    +    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    +    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    +    at com.taobao.tomcat.valves.ContextLoadFilterValve$FilterChainAdapter.doFilter(ContextLoadFilterValve.java:191)
    +    at com.taobao.eagleeye.EagleEyeFilter.doFilter(EagleEyeFilter.java:81)
    +    at com.taobao.tomcat.valves.ContextLoadFilterValve.invoke(ContextLoadFilterValve.java:150)
    +    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    +    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    +    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    +    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:429)
    +    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085)
    +    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    +    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    +    -  locked org.apache.tomcat.util.net.SocketWrapper@7127ee12
    +    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    +    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    +    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    +    at java.lang.Thread.run(Thread.java:745)
    +
    +    Number of locked synchronizers = 1
    +    - java.util.concurrent.ThreadPoolExecutor$Worker@31a6493e
    +

    Note: By now Arthas only supports to locate the thread blocked by synchronzied, while java.util.concurrent.Lock is not supported yet.

    thread -i, specify the sampling interval

    • thread -i 1000: Count the thread cpu time of the last 1000ms.

    • thread -n 3 -i 1000: List the 3 busiest thread stacks in 1000ms

    $ thread -n 3 -i 1000
    +"as-command-execute-daemon" Id=4759 cpuUsage=23% RUNNABLE
    +    at sun.management.ThreadImpl.dumpThreads0(Native Method)
    +    at sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:440)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.processTopBusyThreads(ThreadCommand.java:133)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.process(ThreadCommand.java:79)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process(AnnotatedCommandImpl.java:96)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access$100(AnnotatedCommandImpl.java:27)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:125)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:122)
    +    at com.taobao.arthas.core.shell.system.impl.ProcessImpl$CommandProcessTask.run(ProcessImpl.java:332)
    +    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    +    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    +    at java.lang.Thread.run(Thread.java:756)
    +
    +    Number of locked synchronizers = 1
    +    - java.util.concurrent.ThreadPoolExecutor$Worker@546aeec1
    +...
    +

    thread --state , view the special state theads

    [arthas@28114]$ thread --state WAITING
    +Threads Total: 16, NEW: 0, RUNNABLE: 9, BLOCKED: 0, WAITING: 3, TIMED_WAITING: 4, TERMINATED: 0
    +ID   NAME                           GROUP           PRIORITY   STATE     %CPU      DELTA_TIME TIME      INTERRUPTE DAEMON
    +3    Finalizer                      system          8          WAITING   0.0       0.000      0:0.000   false      true
    +20   arthas-UserStat                system          9          WAITING   0.0       0.000      0:0.001   false      true
    +14   arthas-timer                   system          9          WAITING   0.0       0.000      0:0.000   false      true
    +
    `,18);function F(L,B){const t=p("ExternalLinkIcon"),o=p("RouterLink");return c(),i("div",null,[u,a("p",null,[a("a",m,[h,v,s(t)])]),b,a("blockquote",null,[a("p",null,[k,a("a",g,[T,s(t)]),f])]),j,a("ul",null,[a("li",null,[I,A,C,s(o,{to:"/en/doc/dashboard.html"},{default:l(()=>[y]),_:1}),x]),a("li",null,[E,_,s(o,{to:"/en/doc/dashboard.html"},{default:l(()=>[N]),_:1}),P]),w,S]),U])}const W=r(d,[["render",F],["__file","thread.html.vue"]]);export{W as default}; diff --git a/3.x/assets/thread.html.c837e66a.js b/3.x/assets/thread.html.c837e66a.js new file mode 100644 index 00000000000..974b535523d --- /dev/null +++ b/3.x/assets/thread.html.c837e66a.js @@ -0,0 +1,112 @@ +import{_ as c,o as r,c as i,a,b as s,w as l,e as n,d as e,r as p}from"./app.4d248835.js";const u={},d=a("h1",{id:"thread",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#thread","aria-hidden":"true"},"#"),n(" thread")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-thread",target:"_blank",rel:"noopener noreferrer"},v=a("code",null,"thread",-1),b=n("\u5728\u7EBF\u6559\u7A0B"),k=e('

    \u63D0\u793A

    \u67E5\u770B\u5F53\u524D\u7EBF\u7A0B\u4FE1\u606F\uFF0C\u67E5\u770B\u7EBF\u7A0B\u7684\u5806\u6808

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    id\u7EBF\u7A0B id
    [n:]\u6307\u5B9A\u6700\u5FD9\u7684\u524D N \u4E2A\u7EBF\u7A0B\u5E76\u6253\u5370\u5806\u6808
    [b]\u627E\u51FA\u5F53\u524D\u963B\u585E\u5176\u4ED6\u7EBF\u7A0B\u7684\u7EBF\u7A0B
    [i <value>]\u6307\u5B9A cpu \u4F7F\u7528\u7387\u7EDF\u8BA1\u7684\u91C7\u6837\u95F4\u9694\uFF0C\u5355\u4F4D\u4E3A\u6BEB\u79D2\uFF0C\u9ED8\u8BA4\u503C\u4E3A 200
    [--all]\u663E\u793A\u6240\u6709\u5339\u914D\u7684\u7EBF\u7A0B

    cpu \u4F7F\u7528\u7387\u662F\u5982\u4F55\u7EDF\u8BA1\u51FA\u6765\u7684\uFF1F

    \u8FD9\u91CC\u7684 cpu \u4F7F\u7528\u7387\u4E0E linux \u547D\u4EE4top -H -p <pid> \u7684\u7EBF\u7A0B%CPU\u7C7B\u4F3C\uFF0C\u4E00\u6BB5\u91C7\u6837\u95F4\u9694\u65F6\u95F4\u5185\uFF0C\u5F53\u524D JVM \u91CC\u5404\u4E2A\u7EBF\u7A0B\u7684\u589E\u91CF cpu \u65F6\u95F4\u4E0E\u91C7\u6837\u95F4\u9694\u65F6\u95F4\u7684\u6BD4\u4F8B\u3002

    \u5DE5\u4F5C\u539F\u7406\u8BF4\u660E\uFF1A

    • \u9996\u5148\u7B2C\u4E00\u6B21\u91C7\u6837\uFF0C\u83B7\u53D6\u6240\u6709\u7EBF\u7A0B\u7684 CPU \u65F6\u95F4(\u8C03\u7528\u7684\u662Fjava.lang.management.ThreadMXBean#getThreadCpuTime()\u53CAsun.management.HotspotThreadMBean.getInternalThreadCpuTimes()\u63A5\u53E3)
    • \u7136\u540E\u7761\u7720\u7B49\u5F85\u4E00\u4E2A\u95F4\u9694\u65F6\u95F4\uFF08\u9ED8\u8BA4\u4E3A 200ms\uFF0C\u53EF\u4EE5\u901A\u8FC7-i\u6307\u5B9A\u95F4\u9694\u65F6\u95F4\uFF09
    • \u518D\u6B21\u7B2C\u4E8C\u6B21\u91C7\u6837\uFF0C\u83B7\u53D6\u6240\u6709\u7EBF\u7A0B\u7684 CPU \u65F6\u95F4\uFF0C\u5BF9\u6BD4\u4E24\u6B21\u91C7\u6837\u6570\u636E\uFF0C\u8BA1\u7B97\u51FA\u6BCF\u4E2A\u7EBF\u7A0B\u7684\u589E\u91CF CPU \u65F6\u95F4
    • \u7EBF\u7A0B CPU \u4F7F\u7528\u7387 = \u7EBF\u7A0B\u589E\u91CF CPU \u65F6\u95F4 / \u91C7\u6837\u95F4\u9694\u65F6\u95F4 * 100%

    \u6CE8\u610F

    \u6CE8\u610F\uFF1A \u8FD9\u4E2A\u7EDF\u8BA1\u4E5F\u4F1A\u4EA7\u751F\u4E00\u5B9A\u7684\u5F00\u9500\uFF08JDK \u8FD9\u4E2A\u63A5\u53E3\u672C\u8EAB\u5F00\u9500\u6BD4\u8F83\u5927\uFF09\uFF0C\u56E0\u6B64\u4F1A\u770B\u5230 as \u7684\u7EBF\u7A0B\u5360\u7528\u4E00\u5B9A\u7684\u767E\u5206\u6BD4\uFF0C\u4E3A\u4E86\u964D\u4F4E\u7EDF\u8BA1\u81EA\u8EAB\u7684\u5F00\u9500\u5E26\u6765\u7684\u5F71\u54CD\uFF0C\u53EF\u4EE5\u628A\u91C7\u6837\u95F4\u9694\u62C9\u957F\u4E00\u4E9B\uFF0C\u6BD4\u5982 5000 \u6BEB\u79D2\u3002

    ',8),h={class:"custom-container tip"},g=a("p",{class:"custom-container-title"},"\u63D0\u793A",-1),T=n("\u53E6\u5916\u4E00\u79CD\u67E5\u770B Java \u8FDB\u7A0B\u7684\u7EBF\u7A0B cpu \u4F7F\u7528\u7387\u65B9\u6CD5\uFF1A\u53EF\u4EE5\u4F7F\u7528"),j={href:"https://github.com/oldratlee/useful-scripts/blob/dev-2.x/docs/java.md#-show-busy-java-threads",target:"_blank",rel:"noopener noreferrer"},I=a("code",null,"show-busy-java-threads",-1),A=n("\u8FD9\u4E2A\u811A\u672C\u3002"),C=e(`

    \u4F7F\u7528\u53C2\u8003

    \u652F\u6301\u4E00\u952E\u5C55\u793A\u5F53\u524D\u6700\u5FD9\u7684\u524D N \u4E2A\u7EBF\u7A0B\u5E76\u6253\u5370\u5806\u6808\uFF1A

    $ thread -n 3
    +"C1 CompilerThread0" [Internal] cpuUsage=1.63% deltaTime=3ms time=1170ms
    +
    +
    +"arthas-command-execute" Id=23 cpuUsage=0.11% deltaTime=0ms time=401ms RUNNABLE
    +    at java.management@11.0.7/sun.management.ThreadImpl.dumpThreads0(Native Method)
    +    at java.management@11.0.7/sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:466)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.processTopBusyThreads(ThreadCommand.java:199)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.process(ThreadCommand.java:122)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process(AnnotatedCommandImpl.java:82)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access$100(AnnotatedCommandImpl.java:18)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:111)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:108)
    +    at com.taobao.arthas.core.shell.system.impl.ProcessImpl$CommandProcessTask.run(ProcessImpl.java:385)
    +    at java.base@11.0.7/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    +    at java.base@11.0.7/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    +    at java.base@11.0.7/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
    +    at java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    +    at java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    +    at java.base@11.0.7/java.lang.Thread.run(Thread.java:834)
    +
    +
    +"VM Periodic Task Thread" [Internal] cpuUsage=0.07% deltaTime=0ms time=584ms
    +
    `,3),f=n("\u6CA1\u6709\u7EBF\u7A0B ID\uFF0C\u5305\u542B"),_=a("code",null,"[Internal]",-1),x=n("\u8868\u793A\u4E3A JVM \u5185\u90E8\u7EBF\u7A0B\uFF0C\u53C2\u8003"),E=n("dashboard"),N=n("\u547D\u4EE4\u7684\u4ECB\u7ECD\u3002"),y=a("code",null,"cpuUsage",-1),P=n("\u4E3A\u91C7\u6837\u95F4\u9694\u65F6\u95F4\u5185\u7EBF\u7A0B\u7684 CPU \u4F7F\u7528\u7387\uFF0C\u4E0E"),F=n("dashboard"),S=n("\u547D\u4EE4\u7684\u6570\u636E\u4E00\u81F4\u3002"),U=a("li",null,[a("code",null,"deltaTime"),n("\u4E3A\u91C7\u6837\u95F4\u9694\u65F6\u95F4\u5185\u7EBF\u7A0B\u7684\u589E\u91CF CPU \u65F6\u95F4\uFF0C\u5C0F\u4E8E 1ms \u65F6\u88AB\u53D6\u6574\u663E\u793A\u4E3A 0ms\u3002")],-1),L=a("li",null,[a("code",null,"time"),n(" \u7EBF\u7A0B\u8FD0\u884C\u603B CPU \u65F6\u95F4\u3002")],-1),R=e(`

    \u6CE8\u610F\uFF1A\u7EBF\u7A0B\u6808\u4E3A\u7B2C\u4E8C\u91C7\u6837\u7ED3\u675F\u65F6\u83B7\u53D6\uFF0C\u4E0D\u80FD\u8868\u660E\u91C7\u6837\u95F4\u9694\u65F6\u95F4\u5185\u8BE5\u7EBF\u7A0B\u90FD\u662F\u5728\u5904\u7406\u76F8\u540C\u7684\u4EFB\u52A1\u3002\u5EFA\u8BAE\u95F4\u9694\u65F6\u95F4\u4E0D\u8981\u592A\u957F\uFF0C\u53EF\u80FD\u95F4\u9694\u65F6\u95F4\u8D8A\u5927\u8D8A\u4E0D\u51C6\u786E\u3002 \u53EF\u4EE5\u6839\u636E\u5177\u4F53\u60C5\u51B5\u5C1D\u8BD5\u6307\u5B9A\u4E0D\u540C\u7684\u95F4\u9694\u65F6\u95F4\uFF0C\u89C2\u5BDF\u8F93\u51FA\u7ED3\u679C\u3002

    \u5F53\u6CA1\u6709\u53C2\u6570\u65F6\uFF0C\u663E\u793A\u7B2C\u4E00\u9875\u7EBF\u7A0B\u7684\u4FE1\u606F

    \u9ED8\u8BA4\u6309\u7167 CPU \u589E\u91CF\u65F6\u95F4\u964D\u5E8F\u6392\u5217\uFF0C\u53EA\u663E\u793A\u7B2C\u4E00\u9875\u6570\u636E\u3002

    $ thread
    +Threads Total: 33, NEW: 0, RUNNABLE: 9, BLOCKED: 0, WAITING: 3, TIMED_WAITING: 4, TERMINATED: 0, Internal threads: 17
    +ID   NAME                           GROUP          PRIORITY  STATE     %CPU      DELTA_TIME TIME      INTERRUPT DAEMON
    +-1   C2 CompilerThread0             -              -1        -         5.06      0.010      0:0.973   false     true
    +-1   C1 CompilerThread0             -              -1        -         0.95      0.001      0:0.603   false     true
    +23   arthas-command-execute         system         5         RUNNABLE  0.17      0.000      0:0.226   false     true
    +-1   VM Periodic Task Thread        -              -1        -         0.05      0.000      0:0.094   false     true
    +-1   Sweeper thread                 -              -1        -         0.04      0.000      0:0.011   false     true
    +-1   G1 Young RemSet Sampling       -              -1        -         0.02      0.000      0:0.025   false     true
    +12   Attach Listener                system         9         RUNNABLE  0.0       0.000      0:0.022   false     true
    +11   Common-Cleaner                 InnocuousThrea 8         TIMED_WAI 0.0       0.000      0:0.000   false     true
    +3    Finalizer                      system         8         WAITING   0.0       0.000      0:0.000   false     true
    +2    Reference Handler              system         10        RUNNABLE  0.0       0.000      0:0.000   false     true
    +4    Signal Dispatcher              system         9         RUNNABLE  0.0       0.000      0:0.000   false     true
    +15   arthas-NettyHttpTelnetBootstra system         5         RUNNABLE  0.0       0.000      0:0.029   false     true
    +22   arthas-NettyHttpTelnetBootstra system         5         RUNNABLE  0.0       0.000      0:0.196   false     true
    +24   arthas-NettyHttpTelnetBootstra system         5         RUNNABLE  0.0       0.000      0:0.038   false     true
    +16   arthas-NettyWebsocketTtyBootst system         5         RUNNABLE  0.0       0.000      0:0.001   false     true
    +17   arthas-NettyWebsocketTtyBootst system         5         RUNNABLE  0.0       0.000      0:0.001   false     true
    +

    thread --all, \u663E\u793A\u6240\u6709\u5339\u914D\u7684\u7EBF\u7A0B

    \u663E\u793A\u6240\u6709\u5339\u914D\u7EBF\u7A0B\u4FE1\u606F\uFF0C\u6709\u65F6\u9700\u8981\u83B7\u53D6\u5168\u90E8 JVM \u7684\u7EBF\u7A0B\u6570\u636E\u8FDB\u884C\u5206\u6790\u3002

    thread id, \u663E\u793A\u6307\u5B9A\u7EBF\u7A0B\u7684\u8FD0\u884C\u5806\u6808

    $ thread 1
    +"main" Id=1 WAITING on java.util.concurrent.CountDownLatch$Sync@29fafb28
    +    at sun.misc.Unsafe.park(Native Method)
    +    -  waiting on java.util.concurrent.CountDownLatch$Sync@29fafb28
    +    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    +    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
    +    at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
    +    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
    +    at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
    +

    thread -b, \u627E\u51FA\u5F53\u524D\u963B\u585E\u5176\u4ED6\u7EBF\u7A0B\u7684\u7EBF\u7A0B

    \u6709\u65F6\u5019\u6211\u4EEC\u53D1\u73B0\u5E94\u7528\u5361\u4F4F\u4E86\uFF0C \u901A\u5E38\u662F\u7531\u4E8E\u67D0\u4E2A\u7EBF\u7A0B\u62FF\u4F4F\u4E86\u67D0\u4E2A\u9501\uFF0C \u5E76\u4E14\u5176\u4ED6\u7EBF\u7A0B\u90FD\u5728\u7B49\u5F85\u8FD9\u628A\u9501\u9020\u6210\u7684\u3002 \u4E3A\u4E86\u6392\u67E5\u8FD9\u7C7B\u95EE\u9898\uFF0C arthas \u63D0\u4F9B\u4E86thread -b\uFF0C \u4E00\u952E\u627E\u51FA\u90A3\u4E2A\u7F6A\u9B41\u7978\u9996\u3002

    $ thread -b
    +"http-bio-8080-exec-4" Id=27 TIMED_WAITING
    +    at java.lang.Thread.sleep(Native Method)
    +    at test.arthas.TestThreadBlocking.doGet(TestThreadBlocking.java:22)
    +    -  locked java.lang.Object@725be470 <---- but blocks 4 other threads!
    +    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    +    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    +    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    +    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    +    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    +    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    +    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    +    at test.filter.TestDurexFilter.doFilter(TestDurexFilter.java:46)
    +    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    +    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    +    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    +    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    +    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    +    at com.taobao.tomcat.valves.ContextLoadFilterValve$FilterChainAdapter.doFilter(ContextLoadFilterValve.java:191)
    +    at com.taobao.eagleeye.EagleEyeFilter.doFilter(EagleEyeFilter.java:81)
    +    at com.taobao.tomcat.valves.ContextLoadFilterValve.invoke(ContextLoadFilterValve.java:150)
    +    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    +    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    +    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    +    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:429)
    +    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085)
    +    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    +    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    +    -  locked org.apache.tomcat.util.net.SocketWrapper@7127ee12
    +    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    +    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    +    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    +    at java.lang.Thread.run(Thread.java:745)
    +
    +    Number of locked synchronizers = 1
    +    - java.util.concurrent.ThreadPoolExecutor$Worker@31a6493e
    +

    \u6CE8\u610F

    \u6CE8\u610F\uFF0C \u76EE\u524D\u53EA\u652F\u6301\u627E\u51FA synchronized \u5173\u952E\u5B57\u963B\u585E\u4F4F\u7684\u7EBF\u7A0B\uFF0C \u5982\u679C\u662Fjava.util.concurrent.Lock\uFF0C \u76EE\u524D\u8FD8\u4E0D\u652F\u6301\u3002

    thread -i, \u6307\u5B9A\u91C7\u6837\u65F6\u95F4\u95F4\u9694

    • thread -i 1000 : \u7EDF\u8BA1\u6700\u8FD1 1000ms \u5185\u7684\u7EBF\u7A0B CPU \u65F6\u95F4\u3002

    • thread -n 3 -i 1000 : \u5217\u51FA 1000ms \u5185\u6700\u5FD9\u7684 3 \u4E2A\u7EBF\u7A0B\u6808

    $ thread -n 3 -i 1000
    +"as-command-execute-daemon" Id=4759 cpuUsage=23% RUNNABLE
    +    at sun.management.ThreadImpl.dumpThreads0(Native Method)
    +    at sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:440)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.processTopBusyThreads(ThreadCommand.java:133)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.process(ThreadCommand.java:79)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process(AnnotatedCommandImpl.java:96)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access$100(AnnotatedCommandImpl.java:27)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:125)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:122)
    +    at com.taobao.arthas.core.shell.system.impl.ProcessImpl$CommandProcessTask.run(ProcessImpl.java:332)
    +    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    +    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    +    at java.lang.Thread.run(Thread.java:756)
    +
    +    Number of locked synchronizers = 1
    +    - java.util.concurrent.ThreadPoolExecutor$Worker@546aeec1
    +...
    +

    thread --state \uFF0C\u67E5\u770B\u6307\u5B9A\u72B6\u6001\u7684\u7EBF\u7A0B

    [arthas@28114]$ thread --state WAITING
    +Threads Total: 16, NEW: 0, RUNNABLE: 9, BLOCKED: 0, WAITING: 3, TIMED_WAITING: 4, TERMINATED: 0
    +ID   NAME                           GROUP           PRIORITY   STATE     %CPU      DELTA_TIME TIME      INTERRUPTE DAEMON
    +3    Finalizer                      system          8          WAITING   0.0       0.000      0:0.000   false      true
    +20   arthas-UserStat                system          9          WAITING   0.0       0.000      0:0.001   false      true
    +14   arthas-timer                   system          9          WAITING   0.0       0.000      0:0.000   false      true
    +
    `,17);function B(W,$){const t=p("ExternalLinkIcon"),o=p("RouterLink");return r(),i("div",null,[d,a("p",null,[a("a",m,[v,b,s(t)])]),k,a("div",h,[g,a("p",null,[T,a("a",j,[I,s(t)]),A])]),C,a("ul",null,[a("li",null,[f,_,x,s(o,{to:"/doc/dashboard.html"},{default:l(()=>[E]),_:1}),N]),a("li",null,[y,P,s(o,{to:"/doc/dashboard.html"},{default:l(()=>[F]),_:1}),S]),U,L]),R])}const M=c(u,[["render",B],["__file","thread.html.vue"]]);export{M as default}; diff --git a/3.x/assets/thread.html.e4dd07a8.js b/3.x/assets/thread.html.e4dd07a8.js new file mode 100644 index 00000000000..307461e33b7 --- /dev/null +++ b/3.x/assets/thread.html.e4dd07a8.js @@ -0,0 +1 @@ +const e=JSON.parse(`{"key":"v-5da9140b","path":"/en/doc/thread.html","title":"thread","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Parameters","slug":"parameters","link":"#parameters","children":[]},{"level":2,"title":"How the CPU ratios are calculated?","slug":"how-the-cpu-ratios-are-calculated","link":"#how-the-cpu-ratios-are-calculated","children":[{"level":3,"title":"Working principle description:","slug":"working-principle-description","link":"#working-principle-description","children":[]}]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"List the top n busiest threads with detailed stack trace","slug":"list-the-top-n-busiest-threads-with-detailed-stack-trace","link":"#list-the-top-n-busiest-threads-with-detailed-stack-trace","children":[]},{"level":3,"title":"List first page threads' info when no options provided","slug":"list-first-page-threads-info-when-no-options-provided","link":"#list-first-page-threads-info-when-no-options-provided","children":[]},{"level":3,"title":"thread --all, show all matching threads","slug":"thread-all-show-all-matching-threads","link":"#thread-all-show-all-matching-threads","children":[]},{"level":3,"title":"thread id, show the running stack for the target thread","slug":"thread-id-show-the-running-stack-for-the-target-thread","link":"#thread-id-show-the-running-stack-for-the-target-thread","children":[]},{"level":3,"title":"thread -b, locate the thread bocking the others","slug":"thread-b-locate-the-thread-bocking-the-others","link":"#thread-b-locate-the-thread-bocking-the-others","children":[]},{"level":3,"title":"thread -i, specify the sampling interval","slug":"thread-i-specify-the-sampling-interval","link":"#thread-i-specify-the-sampling-interval","children":[]},{"level":3,"title":"thread --state , view the special state theads","slug":"thread-state-view-the-special-state-theads","link":"#thread-state-view-the-special-state-theads","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/thread.md","version":"3.7.3"}`);export{e as data}; diff --git a/3.x/assets/trace.html.0dc105ca.js b/3.x/assets/trace.html.0dc105ca.js new file mode 100644 index 00000000000..07efb683c6c --- /dev/null +++ b/3.x/assets/trace.html.0dc105ca.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-65d67724","path":"/doc/trace.html","title":"trace","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u6CE8\u610F\u4E8B\u9879","slug":"\u6CE8\u610F\u4E8B\u9879","link":"#\u6CE8\u610F\u4E8B\u9879","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"\u542F\u52A8 Demo","slug":"\u542F\u52A8-demo","link":"#\u542F\u52A8-demo","children":[]},{"level":3,"title":"trace \u51FD\u6570","slug":"trace-\u51FD\u6570","link":"#trace-\u51FD\u6570","children":[]},{"level":3,"title":"\u6307\u5B9A Class \u5339\u914D\u7684\u6700\u5927\u6570\u91CF","slug":"\u6307\u5B9A-class-\u5339\u914D\u7684\u6700\u5927\u6570\u91CF","link":"#\u6307\u5B9A-class-\u5339\u914D\u7684\u6700\u5927\u6570\u91CF","children":[]},{"level":3,"title":"trace \u6B21\u6570\u9650\u5236","slug":"trace-\u6B21\u6570\u9650\u5236","link":"#trace-\u6B21\u6570\u9650\u5236","children":[]},{"level":3,"title":"\u5305\u542B jdk \u7684\u51FD\u6570","slug":"\u5305\u542B-jdk-\u7684\u51FD\u6570","link":"#\u5305\u542B-jdk-\u7684\u51FD\u6570","children":[]},{"level":3,"title":"\u6839\u636E\u8C03\u7528\u8017\u65F6\u8FC7\u6EE4","slug":"\u6839\u636E\u8C03\u7528\u8017\u65F6\u8FC7\u6EE4","link":"#\u6839\u636E\u8C03\u7528\u8017\u65F6\u8FC7\u6EE4","children":[]},{"level":3,"title":"trace \u591A\u4E2A\u7C7B\u6216\u8005\u591A\u4E2A\u51FD\u6570","slug":"trace-\u591A\u4E2A\u7C7B\u6216\u8005\u591A\u4E2A\u51FD\u6570","link":"#trace-\u591A\u4E2A\u7C7B\u6216\u8005\u591A\u4E2A\u51FD\u6570","children":[]},{"level":3,"title":"\u6392\u9664\u6389\u6307\u5B9A\u7684\u7C7B","slug":"\u6392\u9664\u6389\u6307\u5B9A\u7684\u7C7B","link":"#\u6392\u9664\u6389\u6307\u5B9A\u7684\u7C7B","children":[]}]},{"level":2,"title":"\u52A8\u6001 trace","slug":"\u52A8\u6001-trace","link":"#\u52A8\u6001-trace","children":[]},{"level":2,"title":"trace \u7ED3\u679C\u65F6\u95F4\u4E0D\u51C6\u786E\u95EE\u9898","slug":"trace-\u7ED3\u679C\u65F6\u95F4\u4E0D\u51C6\u786E\u95EE\u9898","link":"#trace-\u7ED3\u679C\u65F6\u95F4\u4E0D\u51C6\u786E\u95EE\u9898","children":[{"level":3,"title":"\u4F7F\u7528 -v \u53C2\u6570\u6253\u5370\u66F4\u591A\u4FE1\u606F","slug":"\u4F7F\u7528-v-\u53C2\u6570\u6253\u5370\u66F4\u591A\u4FE1\u606F","link":"#\u4F7F\u7528-v-\u53C2\u6570\u6253\u5370\u66F4\u591A\u4FE1\u606F","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":2},{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"duanwenjun","email":"47908685+duanwenjun@users.noreply.github.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1},{"name":"pandaapo","email":"35672972+pandaapo@users.noreply.github.com","commits":1}]},"filePathRelative":"doc/trace.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/trace.html.53ffd359.js b/3.x/assets/trace.html.53ffd359.js new file mode 100644 index 00000000000..e31c9c9baa4 --- /dev/null +++ b/3.x/assets/trace.html.53ffd359.js @@ -0,0 +1,111 @@ +import{_ as l,o as i,c as r,a as s,b as n,w as o,e as a,d as t,r as c}from"./app.4d248835.js";const u={},d=s("h1",{id:"trace",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#trace","aria-hidden":"true"},"#"),a(" trace")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-trace",target:"_blank",rel:"noopener noreferrer"},k=s("code",null,"trace",-1),b=a(" online tutorial"),h=t('

    TIP

    Trace method calling path, and output the time cost for each node in the path.

    trace can track the calling path specified by class-pattern / method-pattern, and calculate the time cost on the whole path.

    Parameters

    NameSpecification
    class-patternpattern for the class name
    method-patternpattern for the method name
    condition-expresscondition expression
    [E]enable regex match, the default behavior is wildcards match
    [n:]execution times
    #costtime cost
    [m <arg>]Specify the max number of matched Classes, the default value is 50. Long format is [maxMatch <arg>].

    There's one thing worthy noting here is condition expression. The condition expression supports OGNL grammar, for example, you can come up a expression like this "params[0]<0". All OGNL expressions are supported as long as they are legal to the grammar.

    ',5),v=a("Pls. refer to "),g=a("core parameters in expression"),f=a(" for more details."),x=a("Pls. also refer to "),_={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},y=a("https://github.com/alibaba/arthas/issues/71"),C=a(" for more advanced usage"),w=a("OGNL official site: "),M={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},L=a("https://commons.apache.org/proper/commons-ognl/language-guide.html"),G=t('

    Many times what we are interested is the exact trace result when the method call takes time over one particular period. It is possible to achieve this in Arthas, for example: trace *StringUtils isBlank '#cost>100' means trace result will only be output when the executing time exceeds 100ms.

    TIP

    watch/stack/trace, these three commands all support #cost.

    Notice

    ',3),T=s("li",null,[s("p",null,[s("code",null,"trace"),a(" is handy to help discovering and locating the performance flaws in your system, but pls. note Arthas can only trace the first level method call each time.")])],-1),A=s("li",null,[s("p",null,"After version 3.3.0, you can use the Dynamic Trace feature to add new matching classes/methods, see the following example.")],-1),j=a("Currently "),I=s("code",null,"trace java.lang.Thread getName",-1),S=a(" is not supported, please refer to issue: "),F={href:"https://github.com/alibaba/arthas/issues/1610",target:"_blank",rel:"noopener noreferrer"},P=a("#1610"),$=a(", considering that it is not very necessary and it is difficult to repair , So it won\u2019t be fixed for now"),E=s("h2",{id:"usage",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#usage","aria-hidden":"true"},"#"),a(" Usage")],-1),B=s("h3",{id:"start-demo",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#start-demo","aria-hidden":"true"},"#"),a(" Start Demo")],-1),q=a("Start "),N=s("code",null,"math-game",-1),Q=a(" in "),D=a("Quick Start"),O=a("."),J=t(`

    Trace method

    $ trace demo.MathGame run
    +Press Q or Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 28 ms.
    +\`---ts=2019-12-04 00:45:08;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[0.617465ms] demo.MathGame:run()
    +        \`---[0.078946ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +
    +\`---ts=2019-12-04 00:45:09;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[1.276874ms] demo.MathGame:run()
    +        \`---[0.03752ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +

    TIP

    The #24 in the result indicates that in the run function, the primeFactors() function was called on line 24 of the source file.

    Specify the max number of matched Classes

    $ trace demo.MathGame run -m 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 412 ms, listenerId: 4
    +\`---ts=2022-12-25 21:00:00;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@b4aac2
    +    \`---[0.762093ms] demo.MathGame:run()
    +        \`---[30.21% 0.230241ms] demo.MathGame:primeFactors() #46 [throws Exception]
    +
    +\`---ts=2022-12-25 21:00:10;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@b4aac2
    +    \`---[0.315298ms] demo.MathGame:run()
    +        \`---[13.95% 0.043995ms] demo.MathGame:primeFactors() #46 [throws Exception]
    +

    Trace times limit

    If the method invoked many times, use -n options to specify trace times. For example, the command will exit when received a trace result.

    $ trace demo.MathGame run -n 1
    +Press Q or Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 20 ms.
    +\`---ts=2019-12-04 00:45:53;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[0.549379ms] demo.MathGame:run()
    +        +---[0.059839ms] demo.MathGame:primeFactors() #24
    +        \`---[0.232887ms] demo.MathGame:print() #25
    +
    +Command execution times exceed limit: 1, so command will exit. You can set it with -n option.
    +

    Include jdk method

    • --skipJDKMethod <value> skip jdk method trace, default value true.
    $ trace --skipJDKMethod false demo.MathGame run
    +Press Q or Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 60 ms.
    +\`---ts=2019-12-04 00:44:41;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[1.357742ms] demo.MathGame:run()
    +        +---[0.028624ms] java.util.Random:nextInt() #23
    +        +---[0.045534ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +        +---[0.005372ms] java.lang.StringBuilder:<init>() #28
    +        +---[0.012257ms] java.lang.Integer:valueOf() #28
    +        +---[0.234537ms] java.lang.String:format() #28
    +        +---[min=0.004539ms,max=0.005778ms,total=0.010317ms,count=2] java.lang.StringBuilder:append() #28
    +        +---[0.013777ms] java.lang.Exception:getMessage() #28
    +        +---[0.004935ms] java.lang.StringBuilder:toString() #28
    +        \`---[0.06941ms] java.io.PrintStream:println() #28
    +
    +\`---ts=2019-12-04 00:44:42;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[3.030432ms] demo.MathGame:run()
    +        +---[0.010473ms] java.util.Random:nextInt() #23
    +        +---[0.023715ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +        +---[0.005198ms] java.lang.StringBuilder:<init>() #28
    +        +---[0.006405ms] java.lang.Integer:valueOf() #28
    +        +---[0.178583ms] java.lang.String:format() #28
    +        +---[min=0.011636ms,max=0.838077ms,total=0.849713ms,count=2] java.lang.StringBuilder:append() #28
    +        +---[0.008747ms] java.lang.Exception:getMessage() #28
    +        +---[0.019768ms] java.lang.StringBuilder:toString() #28
    +        \`---[0.076457ms] java.io.PrintStream:println() #28
    +

    Filtering by cost

    $ trace demo.MathGame run '#cost > 10'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 41 ms.
    +\`---ts=2018-12-04 01:12:02;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[12.033735ms] demo.MathGame:run()
    +        +---[0.006783ms] java.util.Random:nextInt()
    +        +---[11.852594ms] demo.MathGame:primeFactors()
    +        \`---[0.05447ms] demo.MathGame:print()
    +

    TIP

    Only the call path which's time cost is higher than 10ms will be shown. This feature is handy to focus on what's needed to focus when troubleshoot.

    • Here Arthas provides the similar functionality JProfile and other commercial software provide. Compared to these professional softwares, Arthas doesn't deduce the time cost trace itself takes, therefore it is not as accurate as these softwares offer. More classes and methods on the calling path, more inaccurate trace output is, but it is still helpful for diagnostics where the bottleneck is.
    • "[12.033735ms]" means the method on the node takes 12.033735 ms.
    • "[min=0.005428ms,max=0.094064ms,total=0.105228ms,count=3] demo:call()" means aggregating all same method calls into one single line. The minimum time cost is 0.005428 ms, the maximum time cost is 0.094064 ms, and the total time cost for all method calls (3 times in total) to "demo:call()" is 0.105228ms. If "throws Exception" appears in this line, it means some exceptions have been thrown from this method calls.
    • The total time cost may not equal to the sum of the time costs each sub method call takes, this is because Arthas instrumented code takes time too.

    Trace multiple classes or multiple methods

    The trace command will only trace the subcalls in the method to the trace, and will not trace down multiple layers. Because traces are expensive, multi-layer traces can lead to a lot of classes and methods that ultimately have to be traced.

    You can use the regular expression to match multiple classes and methods on the path to achieve a multi-layer trace effect to some extent.

    Trace -E com.test.ClassA|org.test.ClassB method1|method2|method3
    +

    Exclude the specified class

    TIP

    The watch/trace/monitor/stack/tt commands all support the --exclude-class-pattern parameter

    Use the --exclude-class-pattern parameter to exclude the specified class, for example:

    watch javax.servlet.Filter * --exclude-class-pattern com.demo.TestFilter
    +

    Dynamic trace

    TIP

    Supported since version 3.3.0.

    Open terminal 1, trace the run method in the above demo, and you can see the printout listenerId: 1 .

    [arthas@59161]$ trace demo.MathGame run
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 112 ms, listenerId: 1
    +\`---ts=2020-07-09 16:48:11;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[1.389634ms] demo.MathGame:run()
    +        \`---[0.123934ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +
    +\`---ts=2020-07-09 16:48:12;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[3.716391ms] demo.MathGame:run()
    +        +---[3.182813ms] demo.MathGame:primeFactors() #24
    +        \`---[0.167786ms] demo.MathGame:print() #25
    +

    Now to drill down into the sub method primeFactors, you can open a new terminal 2 and use the telnet localhost 3658 connects to the arthas, then trace primeFactors with the specify listenerId.

    [arthas@59161]$ trace demo.MathGame primeFactors --listenerId 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 34 ms, listenerId: 1
    +

    At Terminal 2 prints the results, indicating that a method has been enhanced: Affect(class count: 1 , method count: 1), but no more results are printed.

    At terminal 1, you can see that the trace result has increased by one layer:

    \`---ts=2020-07-09 16:49:29;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[0.492551ms] demo.MathGame:run()
    +        \`---[0.113929ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +            \`---[0.061462ms] demo.MathGame:primeFactors()
    +                \`---[0.001018ms] throw:java.lang.IllegalArgumentException() #46
    +
    +\`---ts=2020-07-09 16:49:30;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[0.409446ms] demo.MathGame:run()
    +        +---[0.232606ms] demo.MathGame:primeFactors() #24
    +        |   \`---[0.1294ms] demo.MathGame:primeFactors()
    +        \`---[0.084025ms] demo.MathGame:print() #25
    +

    Dynamic trace by specifying listenerId, you can go deeper and deeper. In addition, commands such as watch/tt/monitor also support similar functionality.

    Trace result time inaccuracy problem

    For example, in the following result: 0.705196 > (0.152743 + 0.145825)

    $ trace demo.MathGame run -n 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 66 ms, listenerId: 1
    +\`---ts=2021-02-08 11:27:36;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@232204a1
    +    \`--[0.705196ms] demo.MathGame:run()
    +        +---[0.152743ms] demo.MathGame:primeFactors() #24
    +        \`--[0.145825ms] demo.MathGame:print() #25
    +

    So where is the rest of the time consumed?

    1. Methods that are not traced to. For example, methods under java.* are ignored by default. This can be printed out by adding the -skipJDKMethod false parameter.

      $ trace demo.MathGame run --skipJDKMethod false
      +Press Q or Ctrl+C to abort.
      +Affect(class count: 1 , method count: 1) cost in 35 ms, listenerId: 2
      +\`---ts=2021-02-08 11:27:48;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@232204a1
      +    \`--[0.810591ms] demo.MathGame:run()
      +        +--[0.034568ms] java.util.Random:nextInt() #23
      +        +---[0.119367ms] demo.MathGame:timeFactors() #24 [throws Exception]
      +        +---[0.017407ms] java.lang.StringBuilder:<init>() #28
      +        +--[0.127922ms] java.lang.String:format() #57
      +        +---[min=0.01419ms,max=0.020221ms,total=0.034411ms,count=2] java.lang.StringBuilder:append() #57
      +        +--[0.021911ms] java.lang.Exception:getMessage() #57
      +        +---[0.015643ms] java.lang.StringBuilder:toString() #57
      +        \`--[0.086622ms] java.io.PrintStream:println() #57
      +
    2. Instruction consumption. For example, instructions such as i++, getfield, etc.

    3. Possible JVM pause during code execution, such as GC, entering synchronization blocks, etc.

    Use the -v parameter to print more information

    TIP

    The watch/trace/monitor/stack/tt commands all support the -v parameter.

    When the command is executed, there is no output result. There are two possibilities:

    1. The matched function is not executed
    2. The result of the conditional expression is false

    But the user cannot tell which situation is.

    Using the -v option, the specific value and execution result of Condition express will be printed for easy confirmation.

    `,44);function R(U,V){const e=c("ExternalLinkIcon"),p=c("RouterLink");return i(),r("div",null,[d,s("p",null,[s("a",m,[k,b,n(e)])]),h,s("p",null,[v,n(p,{to:"/en/doc/advice-class.html"},{default:o(()=>[g]),_:1}),f]),s("ul",null,[s("li",null,[x,s("a",_,[y,n(e)]),C]),s("li",null,[w,s("a",M,[L,n(e)])])]),G,s("ul",null,[T,A,s("li",null,[s("p",null,[j,I,S,s("a",F,[P,n(e)]),$])])]),E,B,s("p",null,[q,N,Q,n(p,{to:"/en/doc/quick-start.html"},{default:o(()=>[D]),_:1}),O]),J])}const Y=l(u,[["render",R],["__file","trace.html.vue"]]);export{Y as default}; diff --git a/3.x/assets/trace.html.861de4ab.js b/3.x/assets/trace.html.861de4ab.js new file mode 100644 index 00000000000..f0bdfa569f2 --- /dev/null +++ b/3.x/assets/trace.html.861de4ab.js @@ -0,0 +1,111 @@ +import{_ as l,o as i,c as r,a as s,b as a,w as p,e as n,d as c,r as o}from"./app.4d248835.js";const u={},k=s("h1",{id:"trace",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#trace","aria-hidden":"true"},"#"),n(" trace")],-1),d={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-trace",target:"_blank",rel:"noopener noreferrer"},m=s("code",null,"trace",-1),b=n("\u5728\u7EBF\u6559\u7A0B"),v=c('

    \u63D0\u793A

    \u65B9\u6CD5\u5185\u90E8\u8C03\u7528\u8DEF\u5F84\uFF0C\u5E76\u8F93\u51FA\u65B9\u6CD5\u8DEF\u5F84\u4E0A\u7684\u6BCF\u4E2A\u8282\u70B9\u4E0A\u8017\u65F6

    trace \u547D\u4EE4\u80FD\u4E3B\u52A8\u641C\u7D22 class-pattern\uFF0Fmethod-pattern \u5BF9\u5E94\u7684\u65B9\u6CD5\u8C03\u7528\u8DEF\u5F84\uFF0C\u6E32\u67D3\u548C\u7EDF\u8BA1\u6574\u4E2A\u8C03\u7528\u94FE\u8DEF\u4E0A\u7684\u6240\u6709\u6027\u80FD\u5F00\u9500\u548C\u8FFD\u8E2A\u8C03\u7528\u94FE\u8DEF\u3002

    \u53C2\u6570\u8BF4\u660E

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    class-pattern\u7C7B\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    method-pattern\u65B9\u6CD5\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    condition-express\u6761\u4EF6\u8868\u8FBE\u5F0F
    [E]\u5F00\u542F\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\uFF0C\u9ED8\u8BA4\u4E3A\u901A\u914D\u7B26\u5339\u914D
    [n:]\u547D\u4EE4\u6267\u884C\u6B21\u6570
    #cost\u65B9\u6CD5\u6267\u884C\u8017\u65F6
    [m <arg>]\u6307\u5B9A Class \u6700\u5927\u5339\u914D\u6570\u91CF\uFF0C\u9ED8\u8BA4\u503C\u4E3A 50\u3002\u957F\u683C\u5F0F\u4E3A[maxMatch <arg>]\u3002

    \u8FD9\u91CC\u91CD\u70B9\u8981\u8BF4\u660E\u7684\u662F\u6761\u4EF6\u8868\u8FBE\u5F0F\uFF0C\u6761\u4EF6\u8868\u8FBE\u5F0F\u7684\u6784\u6210\u4E3B\u8981\u7531 \bognl \u8868\u8FBE\u5F0F\u7EC4\u6210\uFF0C\u6240\u4EE5\u4F60\u53EF\u4EE5\u8FD9\u6837\u5199"params[0]<0"\uFF0C\u53EA\u8981\u662F\u4E00\u4E2A\u5408\u6CD5\u7684 ognl \u8868\u8FBE\u5F0F\uFF0C\u90FD\u80FD\u88AB\u6B63\u5E38\u652F\u6301\u3002

    ',5),h=n("\u8BF7\u53C2\u8003"),g=n("\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF"),f=n("\u4E2D\u5173\u4E8E\u8BE5\u8282\u70B9\u7684\u63CF\u8FF0\u3002"),_=n("\u7279\u6B8A\u7528\u6CD5\u8BF7\u53C2\u8003\uFF1A"),x={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},C=n("https://github.com/alibaba/arthas/issues/71"),M=n("OGNL \u8868\u8FBE\u5F0F\u5B98\u7F51\uFF1A"),L={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},G=n("https://commons.apache.org/proper/commons-ognl/language-guide.html"),y=s("p",null,[n("\u5F88\u591A\u65F6\u5019\u6211\u4EEC\u53EA\u60F3\u770B\u5230\u67D0\u4E2A\u65B9\u6CD5\u7684 rt \u5927\u4E8E\u67D0\u4E2A\u65F6\u95F4\u4E4B\u540E\u7684 trace \u7ED3\u679C\uFF0C\u73B0\u5728 Arthas \u53EF\u4EE5\u6309\u7167\u65B9\u6CD5\u6267\u884C\u7684\u8017\u65F6\u6765\u8FDB\u884C\u8FC7\u6EE4\u4E86\uFF0C\u4F8B\u5982"),s("code",null,"trace *StringUtils isBlank '#cost>100'"),n("\u8868\u793A\u5F53\u6267\u884C\u65F6\u95F4\u8D85\u8FC7 100ms \u7684\u65F6\u5019\uFF0C\u624D\u4F1A\u8F93\u51FA trace \u7684\u7ED3\u679C\u3002")],-1),j=s("div",{class:"custom-container tip"},[s("p",{class:"custom-container-title"},"\u63D0\u793A"),s("p",null,[n("watch/stack/trace \u8FD9\u4E2A\u4E09\u4E2A\u547D\u4EE4\u90FD\u652F\u6301"),s("code",null,"#cost")])],-1),w=s("h2",{id:"\u6CE8\u610F\u4E8B\u9879",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#\u6CE8\u610F\u4E8B\u9879","aria-hidden":"true"},"#"),n(" \u6CE8\u610F\u4E8B\u9879")],-1),A=s("p",null,[s("code",null,"trace"),n(" \u80FD\u65B9\u4FBF\u7684\u5E2E\u52A9\u4F60\u5B9A\u4F4D\u548C\u53D1\u73B0\u56E0 RT \u9AD8\u800C\u5BFC\u81F4\u7684\u6027\u80FD\u95EE\u9898\u7F3A\u9677\uFF0C\u4F46\u5176\u6BCF\u6B21\u53EA\u80FD\u8DDF\u8E2A\u4E00\u7EA7\u65B9\u6CD5\u7684\u8C03\u7528\u94FE\u8DEF\u3002")],-1),F=n("\u53C2\u8003\uFF1A"),$={href:"https://github.com/alibaba/arthas/issues/597",target:"_blank",rel:"noopener noreferrer"},E=n("Trace \u547D\u4EE4\u7684\u5B9E\u73B0\u539F\u7406"),S=s("li",null,[s("p",null,"3.3.0 \u7248\u672C\u540E\uFF0C\u53EF\u4EE5\u4F7F\u7528\u52A8\u6001 Trace \u529F\u80FD\uFF0C\u4E0D\u65AD\u589E\u52A0\u65B0\u7684\u5339\u914D\u7C7B\uFF0C\u53C2\u8003\u4E0B\u9762\u7684\u793A\u4F8B\u3002")],-1),T=n("\u76EE\u524D\u4E0D\u652F\u6301 "),I=s("code",null,"trace java.lang.Thread getName",-1),B=n("\uFF0C\u53C2\u8003 issue: "),P={href:"https://github.com/alibaba/arthas/issues/1610",target:"_blank",rel:"noopener noreferrer"},J=n("#1610"),Q=n(" \uFF0C\u8003\u8651\u5230\u4E0D\u662F\u975E\u5E38\u5FC5\u8981\u573A\u666F\uFF0C\u4E14\u4FEE\u590D\u6709\u4E00\u5B9A\u96BE\u5EA6\uFF0C\u56E0\u6B64\u5F53\u524D\u6682\u4E0D\u4FEE\u590D"),R=s("h2",{id:"\u4F7F\u7528\u53C2\u8003",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#\u4F7F\u7528\u53C2\u8003","aria-hidden":"true"},"#"),n(" \u4F7F\u7528\u53C2\u8003")],-1),D=s("h3",{id:"\u542F\u52A8-demo",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#\u542F\u52A8-demo","aria-hidden":"true"},"#"),n(" \u542F\u52A8 Demo")],-1),N=n("\u542F\u52A8"),K=n("\u5FEB\u901F\u5165\u95E8"),V=n("\u91CC\u7684"),q=s("code",null,"math-game",-1),O=n("\u3002"),U=c(`

    trace \u51FD\u6570

    $ trace demo.MathGame run
    +Press Q or Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 28 ms.
    +\`---ts=2019-12-04 00:45:08;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[0.617465ms] demo.MathGame:run()
    +        \`---[0.078946ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +
    +\`---ts=2019-12-04 00:45:09;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[1.276874ms] demo.MathGame:run()
    +        \`---[0.03752ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +

    \u63D0\u793A

    \u7ED3\u679C\u91CC\u7684 #24\uFF0C\u8868\u793A\u5728 run \u51FD\u6570\u91CC\uFF0C\u5728\u6E90\u6587\u4EF6\u7684\u7B2C24\u884C\u8C03\u7528\u4E86primeFactors()\u51FD\u6570\u3002

    \u6307\u5B9A Class \u5339\u914D\u7684\u6700\u5927\u6570\u91CF

    $ trace demo.MathGame run -m 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 412 ms, listenerId: 4
    +\`---ts=2022-12-25 21:00:00;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@b4aac2
    +    \`---[0.762093ms] demo.MathGame:run()
    +        \`---[30.21% 0.230241ms] demo.MathGame:primeFactors() #46 [throws Exception]
    +
    +\`---ts=2022-12-25 21:00:10;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@b4aac2
    +    \`---[0.315298ms] demo.MathGame:run()
    +        \`---[13.95% 0.043995ms] demo.MathGame:primeFactors() #46 [throws Exception]
    +

    trace \u6B21\u6570\u9650\u5236

    \u5982\u679C\u65B9\u6CD5\u8C03\u7528\u7684\u6B21\u6570\u5F88\u591A\uFF0C\u90A3\u4E48\u53EF\u4EE5\u7528-n\u53C2\u6570\u6307\u5B9A\u6355\u6349\u7ED3\u679C\u7684\u6B21\u6570\u3002\u6BD4\u5982\u4E0B\u9762\u7684\u4F8B\u5B50\u91CC\uFF0C\u6355\u6349\u5230\u4E00\u6B21\u8C03\u7528\u5C31\u9000\u51FA\u547D\u4EE4\u3002

    $ trace demo.MathGame run -n 1
    +Press Q or Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 20 ms.
    +\`---ts=2019-12-04 00:45:53;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[0.549379ms] demo.MathGame:run()
    +        +---[0.059839ms] demo.MathGame:primeFactors() #24
    +        \`---[0.232887ms] demo.MathGame:print() #25
    +
    +Command execution times exceed limit: 1, so command will exit. You can set it with -n option.
    +

    \u5305\u542B jdk \u7684\u51FD\u6570

    • --skipJDKMethod <value> skip jdk method trace, default value true.

    \u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0Ctrace \u4E0D\u4F1A\u5305\u542B jdk \u91CC\u7684\u51FD\u6570\u8C03\u7528\uFF0C\u5982\u679C\u5E0C\u671B trace jdk \u91CC\u7684\u51FD\u6570\uFF0C\u9700\u8981\u663E\u5F0F\u8BBE\u7F6E--skipJDKMethod false\u3002

    $ trace --skipJDKMethod false demo.MathGame run
    +Press Q or Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 60 ms.
    +\`---ts=2019-12-04 00:44:41;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[1.357742ms] demo.MathGame:run()
    +        +---[0.028624ms] java.util.Random:nextInt() #23
    +        +---[0.045534ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +        +---[0.005372ms] java.lang.StringBuilder:<init>() #28
    +        +---[0.012257ms] java.lang.Integer:valueOf() #28
    +        +---[0.234537ms] java.lang.String:format() #28
    +        +---[min=0.004539ms,max=0.005778ms,total=0.010317ms,count=2] java.lang.StringBuilder:append() #28
    +        +---[0.013777ms] java.lang.Exception:getMessage() #28
    +        +---[0.004935ms] java.lang.StringBuilder:toString() #28
    +        \`---[0.06941ms] java.io.PrintStream:println() #28
    +
    +\`---ts=2019-12-04 00:44:42;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[3.030432ms] demo.MathGame:run()
    +        +---[0.010473ms] java.util.Random:nextInt() #23
    +        +---[0.023715ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +        +---[0.005198ms] java.lang.StringBuilder:<init>() #28
    +        +---[0.006405ms] java.lang.Integer:valueOf() #28
    +        +---[0.178583ms] java.lang.String:format() #28
    +        +---[min=0.011636ms,max=0.838077ms,total=0.849713ms,count=2] java.lang.StringBuilder:append() #28
    +        +---[0.008747ms] java.lang.Exception:getMessage() #28
    +        +---[0.019768ms] java.lang.StringBuilder:toString() #28
    +        \`---[0.076457ms] java.io.PrintStream:println() #28
    +

    \u6839\u636E\u8C03\u7528\u8017\u65F6\u8FC7\u6EE4

    $ trace demo.MathGame run '#cost > 10'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 41 ms.
    +\`---ts=2018-12-04 01:12:02;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[12.033735ms] demo.MathGame:run()
    +        +---[0.006783ms] java.util.Random:nextInt()
    +        +---[11.852594ms] demo.MathGame:primeFactors()
    +        \`---[0.05447ms] demo.MathGame:print()
    +

    \u63D0\u793A

    \u53EA\u4F1A\u5C55\u793A\u8017\u65F6\u5927\u4E8E 10ms \u7684\u8C03\u7528\u8DEF\u5F84\uFF0C\u6709\u52A9\u4E8E\u5728\u6392\u67E5\u95EE\u9898\u7684\u65F6\u5019\uFF0C\u53EA\u5173\u6CE8\u5F02\u5E38\u60C5\u51B5

    • \u662F\u4E0D\u662F\u5F88\u773C\u719F\uFF0C\u6CA1\u9519\uFF0C\u5728 JProfiler \u7B49\u6536\u8D39\u8F6F\u4EF6\u4E2D\u4F60\u66FE\u7ECF\u89C1\u8BC6\u7C7B\u4F3C\u7684\u529F\u80FD\uFF0C\u8FD9\u91CC\u4F60\u5C06\u53EF\u4EE5\u901A\u8FC7\u547D\u4EE4\u5C31\u80FD\u6253\u5370\u51FA\u6307\u5B9A\u8C03\u7528\u8DEF\u5F84\u3002 \u53CB\u60C5\u63D0\u9192\u4E0B\uFF0Ctrace \u5728\u6267\u884C\u7684\u8FC7\u7A0B\u4E2D\u672C\u8EAB\u662F\u4F1A\u6709\u4E00\u5B9A\u7684\u6027\u80FD\u5F00\u9500\uFF0C\u5728\u7EDF\u8BA1\u7684\u62A5\u544A\u4E2D\u5E76\u672A\u50CF JProfiler \u4E00\u6837\u9884\u5148\u51CF\u53BB\u5176\u81EA\u8EAB\u7684\u7EDF\u8BA1\u5F00\u9500\u3002\u6240\u4EE5\u8FD9\u7EDF\u8BA1\u51FA\u6765\u6709\u4E9B\u8BB8\u7684\u4E0D\u51C6\uFF0C\u6E32\u67D3\u8DEF\u5F84\u4E0A\u8C03\u7528\u7684\u7C7B\u3001\u65B9\u6CD5\u8D8A\u591A\uFF0C\u6027\u80FD\u504F\u5DEE\u8D8A\u5927\u3002\u4F46\u8FD8\u662F\u80FD\u8BA9\u4F60\u770B\u6E05\u4E00\u4E9B\u4E8B\u60C5\u7684\u3002
    • [12.033735ms] \u7684\u542B\u4E49\uFF0C12.033735 \u7684\u542B\u4E49\u662F\uFF1A\u5F53\u524D\u8282\u70B9\u5728\u5F53\u524D\u6B65\u9AA4\u7684\u8017\u65F6\uFF0C\u5355\u4F4D\u4E3A\u6BEB\u79D2
    • [0,0,0ms,11]xxx:yyy() [throws Exception]\uFF0C\u5BF9\u8BE5\u65B9\u6CD5\u4E2D\u76F8\u540C\u7684\u65B9\u6CD5\u8C03\u7528\u8FDB\u884C\u4E86\u5408\u5E76\uFF0C0,0,0ms,11 \u8868\u793A\u65B9\u6CD5\u8C03\u7528\u8017\u65F6\uFF0Cmin,max,total,count\uFF1Bthrows Exception \u8868\u660E\u8BE5\u65B9\u6CD5\u8C03\u7528\u4E2D\u5B58\u5728\u5F02\u5E38\u8FD4\u56DE
    • \u8FD9\u91CC\u5B58\u5728\u4E00\u4E2A\u7EDF\u8BA1\u4E0D\u51C6\u786E\u7684\u95EE\u9898\uFF0C\u5C31\u662F\u6240\u6709\u65B9\u6CD5\u8017\u65F6\u52A0\u8D77\u6765\u53EF\u80FD\u4F1A\u5C0F\u4E8E\u8BE5\u76D1\u6D4B\u65B9\u6CD5\u7684\u603B\u8017\u65F6\uFF0C\u8FD9\u4E2A\u662F\u7531\u4E8E Arthas \u672C\u8EAB\u7684\u903B\u8F91\u4F1A\u6709\u4E00\u5B9A\u7684\u8017\u65F6

    trace \u591A\u4E2A\u7C7B\u6216\u8005\u591A\u4E2A\u51FD\u6570

    trace \u547D\u4EE4\u53EA\u4F1A trace \u5339\u914D\u5230\u7684\u51FD\u6570\u91CC\u7684\u5B50\u8C03\u7528\uFF0C\u5E76\u4E0D\u4F1A\u5411\u4E0B trace \u591A\u5C42\u3002\u56E0\u4E3A trace \u662F\u4EE3\u4EF7\u6BD4\u8F83\u8D35\u7684\uFF0C\u591A\u5C42 trace \u53EF\u80FD\u4F1A\u5BFC\u81F4\u6700\u7EC8\u8981 trace \u7684\u7C7B\u548C\u51FD\u6570\u975E\u5E38\u591A\u3002

    \u53EF\u4EE5\u7528\u6B63\u5219\u8868\u5339\u914D\u8DEF\u5F84\u4E0A\u7684\u591A\u4E2A\u7C7B\u548C\u51FD\u6570\uFF0C\u4E00\u5B9A\u7A0B\u5EA6\u4E0A\u8FBE\u5230\u591A\u5C42 trace \u7684\u6548\u679C\u3002

    trace -E com.test.ClassA|org.test.ClassB method1|method2|method3
    +

    \u6392\u9664\u6389\u6307\u5B9A\u7684\u7C7B

    \u4F7F\u7528 --exclude-class-pattern \u53C2\u6570\u53EF\u4EE5\u6392\u9664\u6389\u6307\u5B9A\u7684\u7C7B\uFF0C\u6BD4\u5982\uFF1A

    trace javax.servlet.Filter * --exclude-class-pattern com.demo.TestFilter
    +

    \u52A8\u6001 trace

    \u63D0\u793A

    3.3.0 \u7248\u672C\u540E\u652F\u6301\u3002

    \u6253\u5F00\u7EC8\u7AEF 1\uFF0Ctrace \u4E0A\u9762 demo \u91CC\u7684run\u51FD\u6570\uFF0C\u53EF\u4EE5\u770B\u5230\u6253\u5370\u51FA listenerId: 1\uFF1A

    [arthas@59161]$ trace demo.MathGame run
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 112 ms, listenerId: 1
    +\`---ts=2020-07-09 16:48:11;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[1.389634ms] demo.MathGame:run()
    +        \`---[0.123934ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +
    +\`---ts=2020-07-09 16:48:12;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[3.716391ms] demo.MathGame:run()
    +        +---[3.182813ms] demo.MathGame:primeFactors() #24
    +        \`---[0.167786ms] demo.MathGame:print() #25
    +

    \u73B0\u5728\u60F3\u8981\u6DF1\u5165\u5B50\u51FD\u6570primeFactors\uFF0C\u53EF\u4EE5\u6253\u5F00\u4E00\u4E2A\u65B0\u7EC8\u7AEF 2\uFF0C\u4F7F\u7528telnet localhost 3658\u8FDE\u63A5\u4E0A arthas\uFF0C\u518D trace primeFactors\u65F6\uFF0C\u6307\u5B9AlistenerId\u3002

    [arthas@59161]$ trace demo.MathGame primeFactors --listenerId 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 34 ms, listenerId: 1
    +

    \u8FD9\u65F6\u7EC8\u7AEF 2 \u6253\u5370\u7684\u7ED3\u679C\uFF0C\u8BF4\u660E\u5DF2\u7ECF\u589E\u5F3A\u4E86\u4E00\u4E2A\u51FD\u6570\uFF1AAffect(class count: 1 , method count: 1)\uFF0C\u4F46\u4E0D\u518D\u6253\u5370\u66F4\u591A\u7684\u7ED3\u679C\u3002

    \u518D\u67E5\u770B\u7EC8\u7AEF 1\uFF0C\u53EF\u4EE5\u53D1\u73B0 trace \u7684\u7ED3\u679C\u589E\u52A0\u4E86\u4E00\u5C42\uFF0C\u6253\u5370\u4E86primeFactors\u51FD\u6570\u91CC\u7684\u5185\u5BB9\uFF1A

    \`---ts=2020-07-09 16:49:29;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[0.492551ms] demo.MathGame:run()
    +        \`---[0.113929ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +            \`---[0.061462ms] demo.MathGame:primeFactors()
    +                \`---[0.001018ms] throw:java.lang.IllegalArgumentException() #46
    +
    +\`---ts=2020-07-09 16:49:30;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    \`---[0.409446ms] demo.MathGame:run()
    +        +---[0.232606ms] demo.MathGame:primeFactors() #24
    +        |   \`---[0.1294ms] demo.MathGame:primeFactors()
    +        \`---[0.084025ms] demo.MathGame:print() #25
    +

    \u901A\u8FC7\u6307\u5B9AlistenerId\u7684\u65B9\u5F0F\u52A8\u6001 trace\uFF0C\u53EF\u4EE5\u4E0D\u65AD\u6DF1\u5165\u3002\u53E6\u5916 watch/tt/monitor\u7B49\u547D\u4EE4\u4E5F\u652F\u6301\u7C7B\u4F3C\u7684\u529F\u80FD\u3002

    trace \u7ED3\u679C\u65F6\u95F4\u4E0D\u51C6\u786E\u95EE\u9898

    \u6BD4\u5982\u4E0B\u9762\u7684\u7ED3\u679C\u91CC\uFF1A0.705196 > (0.152743 + 0.145825)

    $ trace demo.MathGame run -n 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 66 ms, listenerId: 1
    +\`---ts=2021-02-08 11:27:36;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@232204a1
    +    \`---[0.705196ms] demo.MathGame:run()
    +        +---[0.152743ms] demo.MathGame:primeFactors() #24
    +        \`---[0.145825ms] demo.MathGame:print() #25
    +

    \u90A3\u4E48\u5176\u5B83\u7684\u65F6\u95F4\u6D88\u8017\u5728\u54EA\u4E9B\u5730\u65B9\uFF1F

    1. \u6CA1\u6709\u88AB trace \u5230\u7684\u51FD\u6570\u3002\u6BD4\u5982java.* \u4E0B\u7684\u51FD\u6570\u8C03\u7528\u9ED8\u8BA4\u4F1A\u5FFD\u7565\u6389\u3002\u901A\u8FC7\u589E\u52A0--skipJDKMethod false\u53C2\u6570\u53EF\u4EE5\u6253\u5370\u51FA\u6765\u3002

      $ trace demo.MathGame run --skipJDKMethod false
      +Press Q or Ctrl+C to abort.
      +Affect(class count: 1 , method count: 1) cost in 35 ms, listenerId: 2
      +\`---ts=2021-02-08 11:27:48;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@232204a1
      +    \`---[0.810591ms] demo.MathGame:run()
      +        +---[0.034568ms] java.util.Random:nextInt() #23
      +        +---[0.119367ms] demo.MathGame:primeFactors() #24 [throws Exception]
      +        +---[0.017407ms] java.lang.StringBuilder:<init>() #28
      +        +---[0.127922ms] java.lang.String:format() #57
      +        +---[min=0.01419ms,max=0.020221ms,total=0.034411ms,count=2] java.lang.StringBuilder:append() #57
      +        +---[0.021911ms] java.lang.Exception:getMessage() #57
      +        +---[0.015643ms] java.lang.StringBuilder:toString() #57
      +        \`---[0.086622ms] java.io.PrintStream:println() #57
      +
    2. \u975E\u51FD\u6570\u8C03\u7528\u7684\u6307\u4EE4\u6D88\u8017\u3002\u6BD4\u5982 i++, getfield\u7B49\u6307\u4EE4\u3002

    3. \u5728\u4EE3\u7801\u6267\u884C\u8FC7\u7A0B\u4E2D\uFF0CJVM \u53EF\u80FD\u51FA\u73B0\u505C\u987F\uFF0C\u6BD4\u5982 GC\uFF0C\u8FDB\u5165\u540C\u6B65\u5757\u7B49\u3002

    \u4F7F\u7528 -v \u53C2\u6570\u6253\u5370\u66F4\u591A\u4FE1\u606F

    \u63D0\u793A

    watch/trace/monitor/stack/tt \u547D\u4EE4\u90FD\u652F\u6301 -v \u53C2\u6570

    \u5F53\u547D\u4EE4\u6267\u884C\u4E4B\u540E\uFF0C\u6CA1\u6709\u8F93\u51FA\u7ED3\u679C\u3002\u6709\u4E24\u79CD\u53EF\u80FD\uFF1A

    1. \u5339\u914D\u5230\u7684\u51FD\u6570\u6CA1\u6709\u88AB\u6267\u884C
    2. \u6761\u4EF6\u8868\u8FBE\u5F0F\u7ED3\u679C\u662F false

    \u4F46\u7528\u6237\u533A\u5206\u4E0D\u51FA\u662F\u54EA\u79CD\u60C5\u51B5\u3002

    \u4F7F\u7528 -v\u9009\u9879\uFF0C\u5219\u4F1A\u6253\u5370Condition express\u7684\u5177\u4F53\u503C\u548C\u6267\u884C\u7ED3\u679C\uFF0C\u65B9\u4FBF\u786E\u8BA4\u3002

    `,44);function Y(z,H){const e=o("ExternalLinkIcon"),t=o("RouterLink");return i(),r("div",null,[k,s("p",null,[s("a",d,[m,b,a(e)])]),v,s("p",null,[h,a(t,{to:"/doc/advice-class.html"},{default:p(()=>[g]),_:1}),f]),s("ul",null,[s("li",null,[_,s("a",x,[C,a(e)])]),s("li",null,[M,s("a",L,[G,a(e)])])]),y,j,w,s("ul",null,[s("li",null,[A,s("p",null,[F,s("a",$,[E,a(e)])])]),S,s("li",null,[s("p",null,[T,I,B,s("a",P,[J,a(e)]),Q])])]),R,D,s("p",null,[N,a(t,{to:"/doc/quick-start.html"},{default:p(()=>[K]),_:1}),V,q,O]),U])}const X=l(u,[["render",Y],["__file","trace.html.vue"]]);export{X as default}; diff --git a/3.x/assets/trace.html.987171f7.js b/3.x/assets/trace.html.987171f7.js new file mode 100644 index 00000000000..23565188913 --- /dev/null +++ b/3.x/assets/trace.html.987171f7.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-06075838","path":"/en/doc/trace.html","title":"trace","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Parameters","slug":"parameters","link":"#parameters","children":[]},{"level":2,"title":"Notice","slug":"notice","link":"#notice","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"Start Demo","slug":"start-demo","link":"#start-demo","children":[]},{"level":3,"title":"Trace method","slug":"trace-method","link":"#trace-method","children":[]},{"level":3,"title":"Specify the max number of matched Classes","slug":"specify-the-max-number-of-matched-classes","link":"#specify-the-max-number-of-matched-classes","children":[]},{"level":3,"title":"Trace times limit","slug":"trace-times-limit","link":"#trace-times-limit","children":[]},{"level":3,"title":"Include jdk method","slug":"include-jdk-method","link":"#include-jdk-method","children":[]},{"level":3,"title":"Filtering by cost","slug":"filtering-by-cost","link":"#filtering-by-cost","children":[]},{"level":3,"title":"Trace multiple classes or multiple methods","slug":"trace-multiple-classes-or-multiple-methods","link":"#trace-multiple-classes-or-multiple-methods","children":[]},{"level":3,"title":"Exclude the specified class","slug":"exclude-the-specified-class","link":"#exclude-the-specified-class","children":[]},{"level":3,"title":"Dynamic trace","slug":"dynamic-trace","link":"#dynamic-trace","children":[]}]},{"level":2,"title":"Trace result time inaccuracy problem","slug":"trace-result-time-inaccuracy-problem","link":"#trace-result-time-inaccuracy-problem","children":[{"level":3,"title":"Use the -v parameter to print more information","slug":"use-the-v-parameter-to-print-more-information","link":"#use-the-v-parameter-to-print-more-information","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":2},{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1},{"name":"pandaapo","email":"35672972+pandaapo@users.noreply.github.com","commits":1}]},"filePathRelative":"en/doc/trace.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/tt.html.1800bc01.js b/3.x/assets/tt.html.1800bc01.js new file mode 100644 index 00000000000..e850b7a6558 --- /dev/null +++ b/3.x/assets/tt.html.1800bc01.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-71adf3e9","path":"/doc/tt.html","title":"tt","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u6CE8\u610F\u4E8B\u9879","slug":"\u6CE8\u610F\u4E8B\u9879","link":"#\u6CE8\u610F\u4E8B\u9879","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"\u542F\u52A8 Demo","slug":"\u542F\u52A8-demo","link":"#\u542F\u52A8-demo","children":[]},{"level":3,"title":"\u8BB0\u5F55\u8C03\u7528","slug":"\u8BB0\u5F55\u8C03\u7528","link":"#\u8BB0\u5F55\u8C03\u7528","children":[]},{"level":3,"title":"\u6307\u5B9A Class \u6700\u5927\u5339\u914D\u6570\u91CF","slug":"\u6307\u5B9A-class-\u6700\u5927\u5339\u914D\u6570\u91CF","link":"#\u6307\u5B9A-class-\u6700\u5927\u5339\u914D\u6570\u91CF","children":[]},{"level":3,"title":"\u68C0\u7D22\u8C03\u7528\u8BB0\u5F55","slug":"\u68C0\u7D22\u8C03\u7528\u8BB0\u5F55","link":"#\u68C0\u7D22\u8C03\u7528\u8BB0\u5F55","children":[]},{"level":3,"title":"\u67E5\u770B\u8C03\u7528\u4FE1\u606F","slug":"\u67E5\u770B\u8C03\u7528\u4FE1\u606F","link":"#\u67E5\u770B\u8C03\u7528\u4FE1\u606F","children":[]},{"level":3,"title":"\u91CD\u505A\u4E00\u6B21\u8C03\u7528","slug":"\u91CD\u505A\u4E00\u6B21\u8C03\u7528","link":"#\u91CD\u505A\u4E00\u6B21\u8C03\u7528","children":[]},{"level":3,"title":"\u89C2\u5BDF\u8868\u8FBE\u5F0F","slug":"\u89C2\u5BDF\u8868\u8FBE\u5F0F","link":"#\u89C2\u5BDF\u8868\u8FBE\u5F0F","children":[]},{"level":3,"title":"\u901A\u8FC7\u7D22\u5F15\u5220\u9664\u6307\u5B9A\u7684 tt \u8BB0\u5F55","slug":"\u901A\u8FC7\u7D22\u5F15\u5220\u9664\u6307\u5B9A\u7684-tt-\u8BB0\u5F55","link":"#\u901A\u8FC7\u7D22\u5F15\u5220\u9664\u6307\u5B9A\u7684-tt-\u8BB0\u5F55","children":[]},{"level":3,"title":"\u6E05\u9664\u6240\u6709\u7684 tt \u8BB0\u5F55","slug":"\u6E05\u9664\u6240\u6709\u7684-tt-\u8BB0\u5F55","link":"#\u6E05\u9664\u6240\u6709\u7684-tt-\u8BB0\u5F55","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":2},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":2},{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"pandaapo","email":"35672972+pandaapo@users.noreply.github.com","commits":1}]},"filePathRelative":"doc/tt.md","version":"3.7.3"}');export{l as data}; diff --git a/3.x/assets/tt.html.51ba2266.js b/3.x/assets/tt.html.51ba2266.js new file mode 100644 index 00000000000..18cccb76014 --- /dev/null +++ b/3.x/assets/tt.html.51ba2266.js @@ -0,0 +1,92 @@ +import{_ as p,o as i,c as r,a as n,b as a,w as o,e as s,d as e,r as c}from"./app.4d248835.js";const d={},u=n("h1",{id:"tt",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#tt","aria-hidden":"true"},"#"),s(" tt")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-tt",target:"_blank",rel:"noopener noreferrer"},b=n("code",null,"tt",-1),h=s(" online tutorial"),k=e('

    Check the parameters, return values and exceptions of the methods at different times.

    watch is a powerful command but due to its feasibility and complexity, it's quite hard to locate the issue effectively.

    In such difficulties, tt comes into play.

    With the help of tt (TimeTunnel), you can check the contexts of the methods at different times in execution history.

    Precautions

    • The implementation of the tt command is to save the input parameters/return values of the function into a Map<Integer, TimeFragment>. The default size is 100.
    • After using tt related functions, you need to manually release the memory, otherwise OOM may occur for a long time. Exiting arthas will not automatically clear tt's cache map.

    Usage

    Start Demo

    ',8),v=s("Start "),f=n("code",null,"math-game",-1),g=s(" in "),x=s("Quick Start"),_=s("."),T=e(`

    Record method calls

    $ tt -t demo.MathGame primeFactors
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 66 ms.
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2018-12-04 11:15:38  1.096236  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1001    2018-12-04 11:15:39  0.191848  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1002    2018-12-04 11:15:40  0.069523  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1003    2018-12-04 11:15:41  0.186073  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1004    2018-12-04 11:15:42  17.76437  true    false    0x4b67cf4d     MathGame                       primeFactors
    +

    Specify the max number of matched Classes

    $ tt -t -m 1 demo.MathGame primeFactors
    +Press Q or Ctrl+C to abort.
    +Affect(class count:1 , method count:1) cost in 130 ms, listenerId: 1.
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2022-12-25 19:41:45  2.629929  true    false    0x3bf400       MathGame                       primeFactors
    + 1001    2022-12-25 19:41:55  0.146161  false   true     0x3bf400       MathGame                       primeFactors
    +
    • -t

      record the calling context of the method demo.MathGame primeFactors

    • -n 3

      limit the number of the records (avoid overflow for too many records; with -n option, Arthas can automatically stop recording once the records reach the specified limit)

    • -m 1

      limit the number of matched Classes to avoid JVM suspending when too many matched Classes. The default value is 50.

    • Property

    NameSpecification
    INDEXthe index for each call based on time
    TIMESTAMPtime to invoke the method
    COST(ms)time cost of the method call
    IS-RETwhether method exits with normal return
    IS-EXPwhether method failed with exceptions
    OBJECThashCode() of the object invoking the method
    CLASSclass name of the object invoking the method
    METHODmethod being invoked
    • Condition expression

    Tips:

    1. tt -t *Test print params.length==1 with different amounts of parameters;
    2. tt -t *Test print 'params[1] instanceof Integer' with different types of parameters;
    3. tt -t *Test print params[0].mobile=="13989838402" with specified parameter.

    Advanced:

    `,10),E=s("Critical fields in expression"),M={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},S=s("Special usage"),I={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},y=s("OGNL official guide"),C=e(`

    List all records

    $ tt -l
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2018-12-04 11:15:38  1.096236  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1001    2018-12-04 11:15:39  0.191848  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1002    2018-12-04 11:15:40  0.069523  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1003    2018-12-04 11:15:41  0.186073  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1004    2018-12-04 11:15:42  17.76437  true    false    0x4b67cf4d     MathGame                       primeFactors
    +                              9
    + 1005    2018-12-04 11:15:43  0.4776    false   true     0x4b67cf4d     MathGame                       primeFactors
    +Affect(row-cnt:6) cost in 4 ms.
    +

    Searching for records

    $ tt -s 'method.name=="primeFactors"'
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2018-12-04 11:15:38  1.096236  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1001    2018-12-04 11:15:39  0.191848  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1002    2018-12-04 11:15:40  0.069523  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1003    2018-12-04 11:15:41  0.186073  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1004    2018-12-04 11:15:42  17.76437  true    false    0x4b67cf4d     MathGame                       primeFactors
    +                              9
    + 1005    2018-12-04 11:15:43  0.4776    false   true     0x4b67cf4d     MathGame                       primeFactors
    +Affect(row-cnt:6) cost in 607 ms.
    +

    Advanced:

    `,5),A=s("Critical fields in expression"),w=e(`

    Check context of the call

    Using tt -i <index> to check a specific calling details.

    $ tt -i 1003
    + INDEX            1003
    + GMT-CREATE       2018-12-04 11:15:41
    + COST(ms)         0.186073
    + OBJECT           0x4b67cf4d
    + CLASS            demo.MathGame
    + METHOD           primeFactors
    + IS-RETURN        false
    + IS-EXCEPTION     true
    + PARAMETERS[0]    @Integer[-564322413]
    + THROW-EXCEPTION  java.lang.IllegalArgumentException: number is: -564322413, need >= 2
    +                    at demo.MathGame.primeFactors(MathGame.java:46)
    +                    at demo.MathGame.run(MathGame.java:24)
    +                    at demo.MathGame.main(MathGame.java:16)
    +
    +Affect(row-cnt:1) cost in 11 ms.
    +

    Replay record

    Since Arthas stores the context of the call, you can even replay the method calling afterwards with extra option -p to replay the issue for advanced troubleshooting, option --replay-times define the replay execution times, option --replay-interval define the interval(unit in ms,with default value 1000) of replays

    $ tt -i 1004 -p
    + RE-INDEX       1004
    + GMT-REPLAY     2018-12-04 11:26:00
    + OBJECT         0x4b67cf4d
    + CLASS          demo.MathGame
    + METHOD         primeFactors
    + PARAMETERS[0]  @Integer[946738738]
    + IS-RETURN      true
    + IS-EXCEPTION   false
    + RETURN-OBJ     @ArrayList[
    +                    @Integer[2],
    +                    @Integer[11],
    +                    @Integer[17],
    +                    @Integer[2531387],
    +                ]
    +Time fragment[1004] successfully replayed.
    +Affect(row-cnt:1) cost in 14 ms.
    +

    Watch express

    -w, --watch-express watch the time fragment by ognl express.

    `,8),G=s("You can used all variables in "),O=s("fundamental fields in expressions"),F=s(" for the watch express\u3002"),P=e(`
    [arthas@10718]$ tt -t demo.MathGame run -n 5
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 56 ms, listenerId: 1
    + INDEX      TIMESTAMP                   COST(ms)     IS-RET     IS-EXP      OBJECT              CLASS                                     METHOD
    +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    + 1000       2021-01-08 21:54:17         0.901091     true       false       0x7699a589          MathGame                                  run
    +[arthas@10718]$ tt -w 'target.illegalArgumentCount'  -x 1 -i 1000
    +@Integer[60]
    +Affect(row-cnt:1) cost in 7 ms.
    +
    • Get a static field and calling a static method
    [arthas@10718]$ tt -t demo.MathGame run -n 5
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 56 ms, listenerId: 1
    + INDEX      TIMESTAMP                   COST(ms)     IS-RET     IS-EXP      OBJECT              CLASS                                     METHOD
    +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    + 1000       2021-01-08 21:54:17         0.901091     true       false       0x7699a589          MathGame                                  run
    +[arthas@10718]$ tt -w '@demo.MathGame@random.nextInt(100)'  -x 1 -i 1000
    +@Integer[46]
    +
    `,3),R=s("Note that "),N=n("code",null,"com.taobao.arthas.core.advisor.Advice#getLoader",-1),L=s(" is used here, and that it is better to use the exact "),D=n("code",null,"classloader",-1),X=s(),B=s("ognl"),J=s("."),H=s("Advanced usage "),$={href:"https://github.com/alibaba/arthas/issues/482",target:"_blank",rel:"noopener noreferrer"},j=s("get spring context to call the bean method"),q=e(`

    F.Y.I

    1. Loss of the ThreadLocal

      Arthas save params into an array, then invoke the method with the params again. The method execute in another thread, so the ThreadLocal lost.

    2. params may be modified

      Arthas save params into an array, they are object references. The Objects may be modified by other code.

    Delete the specified tt record by index

    tt -d 1001
    +

    Clear all tt records

    tt --delete-all
    +
    `,6);function U(V,Q){const l=c("ExternalLinkIcon"),t=c("RouterLink");return i(),r("div",null,[u,n("p",null,[n("a",m,[b,h,a(l)])]),k,n("p",null,[v,f,g,a(t,{to:"/en/doc/quick-start.html"},{default:o(()=>[x]),_:1}),_]),T,n("ul",null,[n("li",null,[a(t,{to:"/en/doc/advice-class.html"},{default:o(()=>[E]),_:1})]),n("li",null,[n("a",M,[S,a(l)])]),n("li",null,[n("a",I,[y,a(l)])])]),C,n("ul",null,[n("li",null,[a(t,{to:"/en/doc/advice-class.html"},{default:o(()=>[A]),_:1})])]),w,n("ul",null,[n("li",null,[G,a(t,{to:"/en/doc/advice-class.html"},{default:o(()=>[O]),_:1}),F])]),P,n("p",null,[R,N,L,D,X,a(t,{to:"/en/doc/ognl.html"},{default:o(()=>[B]),_:1}),J]),n("p",null,[H,n("a",$,[j,a(l)])]),q])}const Y=p(d,[["render",U],["__file","tt.html.vue"]]);export{Y as default}; diff --git a/3.x/assets/tt.html.980704e8.js b/3.x/assets/tt.html.980704e8.js new file mode 100644 index 00000000000..94af40f214a --- /dev/null +++ b/3.x/assets/tt.html.980704e8.js @@ -0,0 +1,93 @@ +import{_ as c,o as i,c as r,a as s,b as a,w as p,e as n,d as e,r as l}from"./app.4d248835.js";const d={},u=s("h1",{id:"tt",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#tt","aria-hidden":"true"},"#"),n(" tt")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-tt",target:"_blank",rel:"noopener noreferrer"},b=s("code",null,"tt",-1),k=n("\u5728\u7EBF\u6559\u7A0B"),v=e('

    \u63D0\u793A

    \u65B9\u6CD5\u6267\u884C\u6570\u636E\u7684\u65F6\u7A7A\u96A7\u9053\uFF0C\u8BB0\u5F55\u4E0B\u6307\u5B9A\u65B9\u6CD5\u6BCF\u6B21\u8C03\u7528\u7684\u5165\u53C2\u548C\u8FD4\u56DE\u4FE1\u606F\uFF0C\u5E76\u80FD\u5BF9\u8FD9\u4E9B\u4E0D\u540C\u7684\u65F6\u95F4\u4E0B\u8C03\u7528\u8FDB\u884C\u89C2\u6D4B

    watch \u867D\u7136\u5F88\u65B9\u4FBF\u548C\u7075\u6D3B\uFF0C\u4F46\u9700\u8981\u63D0\u524D\u60F3\u6E05\u695A\u89C2\u5BDF\u8868\u8FBE\u5F0F\u7684\u62FC\u5199\uFF0C\u8FD9\u5BF9\u6392\u67E5\u95EE\u9898\u800C\u8A00\u8981\u6C42\u592A\u9AD8\uFF0C\u56E0\u4E3A\u5F88\u591A\u65F6\u5019\u6211\u4EEC\u5E76\u4E0D\u6E05\u695A\u95EE\u9898\u51FA\u81EA\u4E8E\u4F55\u65B9\uFF0C\u53EA\u80FD\u9760\u86DB\u4E1D\u9A6C\u8FF9\u8FDB\u884C\u731C\u6D4B\u3002

    \u8FD9\u4E2A\u65F6\u5019\u5982\u679C\u80FD\u8BB0\u5F55\u4E0B\u5F53\u65F6\u65B9\u6CD5\u8C03\u7528\u7684\u6240\u6709\u5165\u53C2\u548C\u8FD4\u56DE\u503C\u3001\u629B\u51FA\u7684\u5F02\u5E38\u4F1A\u5BF9\u6574\u4E2A\u95EE\u9898\u7684\u601D\u8003\u4E0E\u5224\u65AD\u975E\u5E38\u6709\u5E2E\u52A9\u3002

    \u4E8E\u662F\u4E4E\uFF0CTimeTunnel \u547D\u4EE4\u5C31\u8BDE\u751F\u4E86\u3002

    \u6CE8\u610F\u4E8B\u9879

    • tt \u547D\u4EE4\u7684\u5B9E\u73B0\u662F\uFF1A\u628A\u51FD\u6570\u7684\u5165\u53C2/\u8FD4\u56DE\u503C\u7B49\uFF0C\u4FDD\u5B58\u5230\u4E00\u4E2AMap<Integer, TimeFragment>\u91CC\uFF0C\u9ED8\u8BA4\u7684\u5927\u5C0F\u662F 100\u3002
    • tt \u76F8\u5173\u529F\u80FD\u5728\u4F7F\u7528\u5B8C\u4E4B\u540E\uFF0C\u9700\u8981\u624B\u52A8\u91CA\u653E\u5185\u5B58\uFF0C\u5426\u5219\u957F\u65F6\u95F4\u53EF\u80FD\u5BFC\u81F4OOM\u3002\u9000\u51FA arthas \u4E0D\u4F1A\u81EA\u52A8\u6E05\u9664 tt \u7684\u7F13\u5B58 map\u3002

    \u4F7F\u7528\u53C2\u8003

    \u542F\u52A8 Demo

    ',8),h=n("\u542F\u52A8"),f=n("\u5FEB\u901F\u5165\u95E8"),_=n("\u91CC\u7684"),g=s("code",null,"math-game",-1),T=n("\u3002"),E=e(`

    \u8BB0\u5F55\u8C03\u7528

    \u5BF9\u4E8E\u4E00\u4E2A\u6700\u57FA\u672C\u7684\u4F7F\u7528\u6765\u8BF4\uFF0C\u5C31\u662F\u8BB0\u5F55\u4E0B\u5F53\u524D\u65B9\u6CD5\u7684\u6BCF\u6B21\u8C03\u7528\u73AF\u5883\u73B0\u573A\u3002

    $ tt -t demo.MathGame primeFactors
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 66 ms.
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2018-12-04 11:15:38  1.096236  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1001    2018-12-04 11:15:39  0.191848  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1002    2018-12-04 11:15:40  0.069523  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1003    2018-12-04 11:15:41  0.186073  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1004    2018-12-04 11:15:42  17.76437  true    false    0x4b67cf4d     MathGame                       primeFactors
    +

    \u6307\u5B9A Class \u6700\u5927\u5339\u914D\u6570\u91CF

    $ tt -t -m 1 demo.MathGame primeFactors
    +Press Q or Ctrl+C to abort.
    +Affect(class count:1 , method count:1) cost in 130 ms, listenerId: 1.
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2022-12-25 19:41:45  2.629929  true    false    0x3bf400       MathGame                       primeFactors
    + 1001    2022-12-25 19:41:55  0.146161  false   true     0x3bf400       MathGame                       primeFactors
    +
    • \u547D\u4EE4\u53C2\u6570\u89E3\u6790

      • -t

        tt \u547D\u4EE4\u6709\u5F88\u591A\u4E2A\u4E3B\u53C2\u6570\uFF0C-t \u5C31\u662F\u5176\u4E2D\u4E4B\u4E00\u3002\u8FD9\u4E2A\u53C2\u6570\u7684\u8868\u660E\u5E0C\u671B\u8BB0\u5F55\u4E0B\u7C7B *Test \u7684 print \u65B9\u6CD5\u7684\u6BCF\u6B21\u6267\u884C\u60C5\u51B5\u3002

      • -n 3

        \u5F53\u4F60\u6267\u884C\u4E00\u4E2A\u8C03\u7528\u91CF\u4E0D\u9AD8\u7684\u65B9\u6CD5\u65F6\u53EF\u80FD\u4F60\u8FD8\u80FD\u6709\u8DB3\u591F\u7684\u65F6\u95F4\u7528 CTRL+C \u4E2D\u65AD tt \u547D\u4EE4\u8BB0\u5F55\u7684\u8FC7\u7A0B\uFF0C\u4F46\u5982\u679C\u9047\u5230\u8C03\u7528\u91CF\u975E\u5E38\u5927\u7684\u65B9\u6CD5\uFF0C\u77AC\u95F4\u5C31\u80FD\u5C06\u4F60\u7684 JVM \u5185\u5B58\u6491\u7206\u3002

        \u6B64\u65F6\u4F60\u53EF\u4EE5\u901A\u8FC7 -n \u53C2\u6570\u6307\u5B9A\u4F60\u9700\u8981\u8BB0\u5F55\u7684\u6B21\u6570\uFF0C\u5F53\u8FBE\u5230\u8BB0\u5F55\u6B21\u6570\u65F6 Arthas \u4F1A\u4E3B\u52A8\u4E2D\u65AD tt \u547D\u4EE4\u7684\u8BB0\u5F55\u8FC7\u7A0B\uFF0C\u907F\u514D\u4EBA\u5DE5\u64CD\u4F5C\u65E0\u6CD5\u505C\u6B62\u7684\u60C5\u51B5\u3002

      • -m 1

        \u901A\u8FC7 -m \u53C2\u6570\u6307\u5B9A Class \u5339\u914D\u7684\u6700\u5927\u6570\u91CF\uFF0C\u9632\u6B62\u5339\u914D\u5230\u7684 Class \u6570\u91CF\u592A\u591A\u5BFC\u81F4 JVM \u6302\u8D77\uFF0C\u9ED8\u8BA4\u503C\u662F 50\u3002

    • \u8868\u683C\u5B57\u6BB5\u8BF4\u660E

    \u8868\u683C\u5B57\u6BB5\u5B57\u6BB5\u89E3\u91CA
    INDEX\u65F6\u95F4\u7247\u6BB5\u8BB0\u5F55\u7F16\u53F7\uFF0C\u6BCF\u4E00\u4E2A\u7F16\u53F7\u4EE3\u8868\u7740\u4E00\u6B21\u8C03\u7528\uFF0C\u540E\u7EED tt \u8FD8\u6709\u5F88\u591A\u547D\u4EE4\u90FD\u662F\u57FA\u4E8E\u6B64\u7F16\u53F7\u6307\u5B9A\u8BB0\u5F55\u64CD\u4F5C\uFF0C\u975E\u5E38\u91CD\u8981\u3002
    TIMESTAMP\u65B9\u6CD5\u6267\u884C\u7684\u672C\u673A\u65F6\u95F4\uFF0C\u8BB0\u5F55\u4E86\u8FD9\u4E2A\u65F6\u95F4\u7247\u6BB5\u6240\u53D1\u751F\u7684\u672C\u673A\u65F6\u95F4
    COST(ms)\u65B9\u6CD5\u6267\u884C\u7684\u8017\u65F6
    IS-RET\u65B9\u6CD5\u662F\u5426\u4EE5\u6B63\u5E38\u8FD4\u56DE\u7684\u5F62\u5F0F\u7ED3\u675F
    IS-EXP\u65B9\u6CD5\u662F\u5426\u4EE5\u629B\u5F02\u5E38\u7684\u5F62\u5F0F\u7ED3\u675F
    OBJECT\u6267\u884C\u5BF9\u8C61\u7684hashCode()\uFF0C\u6CE8\u610F\uFF0C\u66FE\u7ECF\u6709\u4EBA\u8BEF\u8BA4\u4E3A\u662F\u5BF9\u8C61\u5728 JVM \u4E2D\u7684\u5185\u5B58\u5730\u5740\uFF0C\u4F46\u5F88\u9057\u61BE\u4ED6\u4E0D\u662F\u3002\u4F46\u4ED6\u80FD\u5E2E\u52A9\u4F60\u7B80\u5355\u7684\u6807\u8BB0\u5F53\u524D\u6267\u884C\u65B9\u6CD5\u7684\u7C7B\u5B9E\u4F53
    CLASS\u6267\u884C\u7684\u7C7B\u540D
    METHOD\u6267\u884C\u7684\u65B9\u6CD5\u540D
    `,7),M=e("
  • \u6761\u4EF6\u8868\u8FBE\u5F0F

    \u4E0D\u77E5\u9053\u5927\u5BB6\u662F\u5426\u6709\u5728\u4F7F\u7528\u8FC7\u7A0B\u4E2D\u9047\u5230\u4EE5\u4E0B\u56F0\u60D1

    • Arthas \u4F3C\u4E4E\u5F88\u96BE\u533A\u5206\u51FA\u91CD\u8F7D\u7684\u65B9\u6CD5
    • \u6211\u53EA\u9700\u8981\u89C2\u5BDF\u7279\u5B9A\u53C2\u6570\uFF0C\u4F46\u662F tt \u5374\u5168\u90E8\u90FD\u7ED9\u6211\u8BB0\u5F55\u4E86\u4E0B\u6765

    \u6761\u4EF6\u8868\u8FBE\u5F0F\u4E5F\u662F\u7528 \bOGNL \u6765\u7F16\u5199\uFF0C\u6838\u5FC3\u7684\u5224\u65AD\u5BF9\u8C61\u4F9D\u7136\u662F Advice \u5BF9\u8C61\u3002\u9664\u4E86 tt \u547D\u4EE4\u4E4B\u5916\uFF0Cwatch\u3001trace\u3001stack \u547D\u4EE4\u4E5F\u90FD\u652F\u6301\u6761\u4EF6\u8868\u8FBE\u5F0F\u3002

  • \u89E3\u51B3\u65B9\u6CD5\u91CD\u8F7D

    tt -t *Test print params.length==1

    \u901A\u8FC7\u5236\u5B9A\u53C2\u6570\u4E2A\u6570\u7684\u5F62\u5F0F\u89E3\u51B3\u4E0D\u540C\u7684\u65B9\u6CD5\u7B7E\u540D\uFF0C\u5982\u679C\u53C2\u6570\u4E2A\u6570\u4E00\u6837\uFF0C\u4F60\u8FD8\u53EF\u4EE5\u8FD9\u6837\u5199

    tt -t *Test print 'params[1] instanceof Integer'

  • \u89E3\u51B3\u6307\u5B9A\u53C2\u6570

    tt -t *Test print params[0].mobile=="13989838402"

  • ",3),x=s("p",null,[n("\u6784\u6210\u6761\u4EF6\u8868\u8FBE\u5F0F\u7684 "),s("code",null,"Advice"),n(" \u5BF9\u8C61")],-1),I=n("\u524D\u8FB9\u770B\u5230\u4E86\u5F88\u591A\u6761\u4EF6\u8868\u8FBE\u5F0F\u4E2D\uFF0C\u90FD\u4F7F\u7528\u4E86 "),S=s("code",null,"params[0]",-1),C=n("\uFF0C\u6709\u5173\u8FD9\u4E2A\u53D8\u91CF\u7684\u4ECB\u7ECD\uFF0C\u8BF7\u53C2\u8003"),A=n("\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF"),G=e(`

    \u68C0\u7D22\u8C03\u7528\u8BB0\u5F55

    \u5F53\u4F60\u7528 tt \u8BB0\u5F55\u4E86\u4E00\u5927\u7247\u7684\u65F6\u95F4\u7247\u6BB5\u4E4B\u540E\uFF0C\u4F60\u5E0C\u671B\u80FD\u4ECE\u4E2D\u7B5B\u9009\u51FA\u81EA\u5DF1\u9700\u8981\u7684\u65F6\u95F4\u7247\u6BB5\uFF0C\u8FD9\u4E2A\u65F6\u5019\u4F60\u5C31\u9700\u8981\u5BF9\u73B0\u6709\u8BB0\u5F55\u8FDB\u884C\u68C0\u7D22\u3002

    \u5047\u8BBE\u6211\u4EEC\u6709\u8FD9\u4E9B\u8BB0\u5F55

    $ tt -l
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2018-12-04 11:15:38  1.096236  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1001    2018-12-04 11:15:39  0.191848  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1002    2018-12-04 11:15:40  0.069523  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1003    2018-12-04 11:15:41  0.186073  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1004    2018-12-04 11:15:42  17.76437  true    false    0x4b67cf4d     MathGame                       primeFactors
    +                              9
    + 1005    2018-12-04 11:15:43  0.4776    false   true     0x4b67cf4d     MathGame                       primeFactors
    +Affect(row-cnt:6) cost in 4 ms.
    +

    \u6211\u9700\u8981\u7B5B\u9009\u51FA primeFactors \u65B9\u6CD5\u7684\u8C03\u7528\u4FE1\u606F

    $ tt -s 'method.name=="primeFactors"'
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2018-12-04 11:15:38  1.096236  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1001    2018-12-04 11:15:39  0.191848  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1002    2018-12-04 11:15:40  0.069523  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1003    2018-12-04 11:15:41  0.186073  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1004    2018-12-04 11:15:42  17.76437  true    false    0x4b67cf4d     MathGame                       primeFactors
    +                              9
    + 1005    2018-12-04 11:15:43  0.4776    false   true     0x4b67cf4d     MathGame                       primeFactors
    +Affect(row-cnt:6) cost in 607 ms.
    +

    \u4F60\u9700\u8981\u4E00\u4E2A -s \u53C2\u6570\u3002\u540C\u6837\u7684\uFF0C\u641C\u7D22\u8868\u8FBE\u5F0F\u7684\u6838\u5FC3\u5BF9\u8C61\u4F9D\u65E7\u662F Advice \u5BF9\u8C61\u3002

    \u67E5\u770B\u8C03\u7528\u4FE1\u606F

    \u5BF9\u4E8E\u5177\u4F53\u4E00\u4E2A\u65F6\u95F4\u7247\u7684\u4FE1\u606F\u800C\u8A00\uFF0C\u4F60\u53EF\u4EE5\u901A\u8FC7 -i \u53C2\u6570\u540E\u8FB9\u8DDF\u7740\u5BF9\u5E94\u7684 INDEX \u7F16\u53F7\u67E5\u770B\u5230\u4ED6\u7684\u8BE6\u7EC6\u4FE1\u606F\u3002

    $ tt -i 1003
    + INDEX            1003
    + GMT-CREATE       2018-12-04 11:15:41
    + COST(ms)         0.186073
    + OBJECT           0x4b67cf4d
    + CLASS            demo.MathGame
    + METHOD           primeFactors
    + IS-RETURN        false
    + IS-EXCEPTION     true
    + PARAMETERS[0]    @Integer[-564322413]
    + THROW-EXCEPTION  java.lang.IllegalArgumentException: number is: -564322413, need >= 2
    +                      at demo.MathGame.primeFactors(MathGame.java:46)
    +                      at demo.MathGame.run(MathGame.java:24)
    +                      at demo.MathGame.main(MathGame.java:16)
    +
    +Affect(row-cnt:1) cost in 11 ms.
    +

    \u91CD\u505A\u4E00\u6B21\u8C03\u7528

    \u5F53\u4F60\u7A0D\u7A0D\u505A\u4E86\u4E00\u4E9B\u8C03\u6574\u4E4B\u540E\uFF0C\u4F60\u53EF\u80FD\u9700\u8981\u524D\u7AEF\u7CFB\u7EDF\u91CD\u65B0\u89E6\u53D1\u4E00\u6B21\u4F60\u7684\u8C03\u7528\uFF0C\u6B64\u65F6\u5F97\u6C42\u7237\u7237\u544A\u5976\u5976\u7684\u9700\u8981\u524D\u7AEF\u914D\u5408\u8054\u8C03\u7684\u540C\u5B66\u518D\u6B21\u53D1\u8D77\u4E00\u6B21\u8C03\u7528\u3002\u800C\u6709\u4E9B\u573A\u666F\u4E0B\uFF0C\u8FD9\u4E2A\u8C03\u7528\u4E0D\u662F\u8FD9\u4E48\u597D\u89E6\u53D1\u7684\u3002

    tt \u547D\u4EE4\u7531\u4E8E\u4FDD\u5B58\u4E86\u5F53\u65F6\u8C03\u7528\u7684\u6240\u6709\u73B0\u573A\u4FE1\u606F\uFF0C\u6240\u4EE5\u6211\u4EEC\u53EF\u4EE5\u81EA\u5DF1\u4E3B\u52A8\u5BF9\u4E00\u4E2A INDEX \u7F16\u53F7\u7684\u65F6\u95F4\u7247\u81EA\u4E3B\u53D1\u8D77\u4E00\u6B21\u8C03\u7528\uFF0C\u4ECE\u800C\u89E3\u653E\u4F60\u7684\u6C9F\u901A\u6210\u672C\u3002\u6B64\u65F6\u4F60\u9700\u8981 -p \u53C2\u6570\u3002\u901A\u8FC7 --replay-times \u6307\u5B9A \u8C03\u7528\u6B21\u6570\uFF0C\u901A\u8FC7 --replay-interval \u6307\u5B9A\u591A\u6B21\u8C03\u7528\u95F4\u9694(\u5355\u4F4D ms, \u9ED8\u8BA4 1000ms)

    $ tt -i 1004 -p
    + RE-INDEX       1004
    + GMT-REPLAY     2018-12-04 11:26:00
    + OBJECT         0x4b67cf4d
    + CLASS          demo.MathGame
    + METHOD         primeFactors
    + PARAMETERS[0]  @Integer[946738738]
    + IS-RETURN      true
    + IS-EXCEPTION   false
    + COST(ms)         0.186073
    + RETURN-OBJ     @ArrayList[
    +                    @Integer[2],
    +                    @Integer[11],
    +                    @Integer[17],
    +                    @Integer[2531387],
    +                ]
    +Time fragment[1004] successfully replayed.
    +Affect(row-cnt:1) cost in 14 ms.
    +

    \u4F60\u4F1A\u53D1\u73B0\u7ED3\u679C\u867D\u7136\u4E00\u6837\uFF0C\u4F46\u8C03\u7528\u7684\u8DEF\u5F84\u53D1\u751F\u4E86\u53D8\u5316\uFF0C\u7531\u539F\u6765\u7684\u7A0B\u5E8F\u53D1\u8D77\u53D8\u6210\u4E86 Arthas \u81EA\u5DF1\u7684\u5185\u90E8\u7EBF\u7A0B\u53D1\u8D77\u7684\u8C03\u7528\u4E86\u3002

    \u89C2\u5BDF\u8868\u8FBE\u5F0F

    -w, --watch-express \u89C2\u5BDF\u65F6\u7A7A\u96A7\u9053\u4F7F\u7528ognl \u8868\u8FBE\u5F0F

    `,17),O=n("\u4F7F\u7528"),F=n("\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF"),P=n("\u4E2D\u6240\u6709\u53D8\u91CF\u4F5C\u4E3A\u5DF2\u77E5\u6761\u4EF6\u7F16\u5199\u8868\u8FBE\u5F0F\u3002"),R=e(`
    [arthas@10718]$ tt -t demo.MathGame run -n 5
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 56 ms, listenerId: 1
    + INDEX      TIMESTAMP                   COST(ms)     IS-RET     IS-EXP      OBJECT              CLASS                                     METHOD
    +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    + 1000       2021-01-08 21:54:17         0.901091     true       false       0x7699a589          MathGame                                  run
    +[arthas@10718]$ tt -w 'target.illegalArgumentCount'  -x 1 -i 1000
    +@Integer[60]
    +Affect(row-cnt:1) cost in 7 ms.
    +
    • \u83B7\u53D6\u7C7B\u7684\u9759\u6001\u5B57\u6BB5\u3001\u8C03\u7528\u7C7B\u7684\u9759\u6001\u65B9\u6CD5
    [arthas@10718]$ tt -t demo.MathGame run -n 5
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 56 ms, listenerId: 1
    + INDEX      TIMESTAMP                   COST(ms)     IS-RET     IS-EXP      OBJECT              CLASS                                     METHOD
    +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    + 1000       2021-01-08 21:54:17         0.901091     true       false       0x7699a589          MathGame                                  run
    +[arthas@10718]$ tt -w '@demo.MathGame@random.nextInt(100)'  -x 1 -i 1000
    +@Integer[46]
    +
    `,3),w=n("\u6CE8\u610F\u8FD9\u91CC\u4F7F\u7528 "),N=s("code",null,"com.taobao.arthas.core.advisor.Advice#getLoader",-1),D=n("\u52A0\u8F7D,\u4F7F\u7528\u7CBE\u786E"),L=s("code",null,"classloader",-1),X=n(),y=n("ognl"),B=n("\u66F4\u597D\u3002"),J=n("\u9AD8\u7EA7\u7528\u6CD5 "),H={href:"https://github.com/alibaba/arthas/issues/482",target:"_blank",rel:"noopener noreferrer"},$=n("\u83B7\u53D6 spring context \u8C03\u7528 bean \u65B9\u6CD5"),V=e(`
    • \u9700\u8981\u5F3A\u8C03\u7684\u70B9

      1. ThreadLocal \u4FE1\u606F\u4E22\u5931

        \u5F88\u591A\u6846\u67B6\u5077\u5077\u7684\u5C06\u4E00\u4E9B\u73AF\u5883\u53D8\u91CF\u4FE1\u606F\u585E\u5230\u4E86\u53D1\u8D77\u8C03\u7528\u7EBF\u7A0B\u7684 ThreadLocal \u4E2D\uFF0C\u7531\u4E8E\u8C03\u7528\u7EBF\u7A0B\u53D1\u751F\u4E86\u53D8\u5316\uFF0C\u8FD9\u4E9B ThreadLocal \u7EBF\u7A0B\u4FE1\u606F\u65E0\u6CD5\u901A\u8FC7 Arthas \u4FDD\u5B58\uFF0C\u6240\u4EE5\u8FD9\u4E9B\u4FE1\u606F\u5C06\u4F1A\u4E22\u5931\u3002

        \u4E00\u4E9B\u5E38\u89C1\u7684 CASE \u6BD4\u5982\uFF1A\u9E70\u773C\u7684 TraceId \u7B49\u3002

      2. \u5F15\u7528\u7684\u5BF9\u8C61

        \u9700\u8981\u5F3A\u8C03\u7684\u662F\uFF0Ctt \u547D\u4EE4\u662F\u5C06\u5F53\u524D\u73AF\u5883\u7684\u5BF9\u8C61\u5F15\u7528\u4FDD\u5B58\u8D77\u6765\uFF0C\u4F46\u4EC5\u4EC5\u4E5F\u53EA\u80FD\u4FDD\u5B58\u4E00\u4E2A\u5F15\u7528\u800C\u5DF2\u3002\u5982\u679C\u65B9\u6CD5\u5185\u90E8\u5BF9\u5165\u53C2\u8FDB\u884C\u4E86\u53D8\u66F4\uFF0C\u6216\u8005\u8FD4\u56DE\u7684\u5BF9\u8C61\u7ECF\u8FC7\u4E86\u540E\u7EED\u7684\u5904\u7406\uFF0C\u90A3\u4E48\u5728 tt \u67E5\u770B\u7684\u65F6\u5019\u5C06\u65E0\u6CD5\u770B\u5230\u5F53\u65F6\u6700\u51C6\u786E\u7684\u503C\u3002\u8FD9\u4E5F\u662F\u4E3A\u4EC0\u4E48 watch \u547D\u4EE4\u5B58\u5728\u7684\u610F\u4E49\u3002

    \u901A\u8FC7\u7D22\u5F15\u5220\u9664\u6307\u5B9A\u7684 tt \u8BB0\u5F55

    tt -d 1001
    +

    \u6E05\u9664\u6240\u6709\u7684 tt \u8BB0\u5F55

    tt --delete-all
    +
    `,5);function q(j,Q){const o=l("ExternalLinkIcon"),t=l("RouterLink");return i(),r("div",null,[u,s("p",null,[s("a",m,[b,k,a(o)])]),v,s("p",null,[h,a(t,{to:"/doc/quick-start.html"},{default:p(()=>[f]),_:1}),_,g,T]),E,s("ul",null,[M,s("li",null,[x,s("p",null,[I,S,C,a(t,{to:"/doc/advice-class.html"},{default:p(()=>[A]),_:1})])])]),G,s("ul",null,[s("li",null,[O,a(t,{to:"/doc/advice-class.html"},{default:p(()=>[F]),_:1}),P])]),R,s("p",null,[w,N,D,L,X,a(t,{to:"/doc/ognl.html"},{default:p(()=>[y]),_:1}),B]),s("p",null,[J,s("a",H,[$,a(o)])]),V])}const W=c(d,[["render",q],["__file","tt.html.vue"]]);export{W as default}; diff --git a/3.x/assets/tt.html.fd7438d0.js b/3.x/assets/tt.html.fd7438d0.js new file mode 100644 index 00000000000..5cdcbc80fba --- /dev/null +++ b/3.x/assets/tt.html.fd7438d0.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-79eacb55","path":"/en/doc/tt.html","title":"tt","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Precautions","slug":"precautions","link":"#precautions","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"Start Demo","slug":"start-demo","link":"#start-demo","children":[]},{"level":3,"title":"Record method calls","slug":"record-method-calls","link":"#record-method-calls","children":[]},{"level":3,"title":"Specify the max number of matched Classes","slug":"specify-the-max-number-of-matched-classes","link":"#specify-the-max-number-of-matched-classes","children":[]},{"level":3,"title":"List all records","slug":"list-all-records","link":"#list-all-records","children":[]},{"level":3,"title":"Searching for records","slug":"searching-for-records","link":"#searching-for-records","children":[]},{"level":3,"title":"Check context of the call","slug":"check-context-of-the-call","link":"#check-context-of-the-call","children":[]},{"level":3,"title":"Replay record","slug":"replay-record","link":"#replay-record","children":[]},{"level":3,"title":"Watch express","slug":"watch-express","link":"#watch-express","children":[]},{"level":3,"title":"Delete the specified tt record by index","slug":"delete-the-specified-tt-record-by-index","link":"#delete-the-specified-tt-record-by-index","children":[]},{"level":3,"title":"Clear all tt records","slug":"clear-all-tt-records","link":"#clear-all-tt-records","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":2},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":2},{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"pandaapo","email":"35672972+pandaapo@users.noreply.github.com","commits":1}]},"filePathRelative":"en/doc/tt.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/tunnel-server-agents.03d5eafa.js b/3.x/assets/tunnel-server-agents.03d5eafa.js new file mode 100644 index 00000000000..30cdf3e7e5d --- /dev/null +++ b/3.x/assets/tunnel-server-agents.03d5eafa.js @@ -0,0 +1 @@ +const s="/3.x/images/arthas-tunnel-server.png",e="/3.x/images/tunnel-server-apps.png",n="/3.x/images/tunnel-server-agents.png";export{e as _,s as a,n as b}; diff --git a/3.x/assets/tunnel.html.203ccf1d.js b/3.x/assets/tunnel.html.203ccf1d.js new file mode 100644 index 00000000000..1f46f1ed0e6 --- /dev/null +++ b/3.x/assets/tunnel.html.203ccf1d.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-07074726","path":"/en/doc/tunnel.html","title":"Arthas Tunnel","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Download and deploy arthas tunnel server","slug":"download-and-deploy-arthas-tunnel-server","link":"#download-and-deploy-arthas-tunnel-server","children":[]},{"level":2,"title":"Connecting to the tunnel server when starting arthas","slug":"connecting-to-the-tunnel-server-when-starting-arthas","link":"#connecting-to-the-tunnel-server-when-starting-arthas","children":[]},{"level":2,"title":"Best practices","slug":"best-practices","link":"#best-practices","children":[]},{"level":2,"title":"Tunnel Server Management Page","slug":"tunnel-server-management-page","link":"#tunnel-server-management-page","children":[]},{"level":2,"title":"Security and Privilege Management","slug":"security-and-privilege-management","link":"#security-and-privilege-management","children":[]},{"level":2,"title":"Cluster Management","slug":"cluster-management","link":"#cluster-management","children":[]},{"level":2,"title":"How arthas tunnel server works","slug":"how-arthas-tunnel-server-works","link":"#how-arthas-tunnel-server-works","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":3},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":2},{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1}]},"filePathRelative":"en/doc/tunnel.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/tunnel.html.5346db5d.js b/3.x/assets/tunnel.html.5346db5d.js new file mode 100644 index 00000000000..d6935ccf4e9 --- /dev/null +++ b/3.x/assets/tunnel.html.5346db5d.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-d2ddc9fe","path":"/doc/tunnel.html","title":"Arthas Tunnel","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4E0B\u8F7D\u90E8\u7F72 arthas tunnel server","slug":"\u4E0B\u8F7D\u90E8\u7F72-arthas-tunnel-server","link":"#\u4E0B\u8F7D\u90E8\u7F72-arthas-tunnel-server","children":[]},{"level":2,"title":"\u542F\u52A8 arthas \u65F6\u8FDE\u63A5\u5230 tunnel server","slug":"\u542F\u52A8-arthas-\u65F6\u8FDE\u63A5\u5230-tunnel-server","link":"#\u542F\u52A8-arthas-\u65F6\u8FDE\u63A5\u5230-tunnel-server","children":[]},{"level":2,"title":"\u6700\u4F73\u5B9E\u8DF5","slug":"\u6700\u4F73\u5B9E\u8DF5","link":"#\u6700\u4F73\u5B9E\u8DF5","children":[]},{"level":2,"title":"Tunnel Server \u7684\u7BA1\u7406\u9875\u9762","slug":"tunnel-server-\u7684\u7BA1\u7406\u9875\u9762","link":"#tunnel-server-\u7684\u7BA1\u7406\u9875\u9762","children":[]},{"level":2,"title":"\u5B89\u5168\u548C\u6743\u9650\u7BA1\u7406","slug":"\u5B89\u5168\u548C\u6743\u9650\u7BA1\u7406","link":"#\u5B89\u5168\u548C\u6743\u9650\u7BA1\u7406","children":[]},{"level":2,"title":"\u96C6\u7FA4\u65B9\u5F0F\u7BA1\u7406","slug":"\u96C6\u7FA4\u65B9\u5F0F\u7BA1\u7406","link":"#\u96C6\u7FA4\u65B9\u5F0F\u7BA1\u7406","children":[]},{"level":2,"title":"Arthas tunnel server \u7684\u5DE5\u4F5C\u539F\u7406","slug":"arthas-tunnel-server-\u7684\u5DE5\u4F5C\u539F\u7406","link":"#arthas-tunnel-server-\u7684\u5DE5\u4F5C\u539F\u7406","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":3},{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1}]},"filePathRelative":"doc/tunnel.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/tunnel.html.9c3dcb91.js b/3.x/assets/tunnel.html.9c3dcb91.js new file mode 100644 index 00000000000..7a00d9db568 --- /dev/null +++ b/3.x/assets/tunnel.html.9c3dcb91.js @@ -0,0 +1,47 @@ +import{_ as o,a as c,b as d}from"./tunnel-server-agents.03d5eafa.js";import{_ as p,o as h,c as u,a as e,b as n,w as i,e as s,d as t,r as l}from"./app.4d248835.js";const v={},b=e("h1",{id:"arthas-tunnel",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#arthas-tunnel","aria-hidden":"true"},"#"),s(" Arthas Tunnel")],-1),m=e("p",null,"\u901A\u8FC7 Arthas Tunnel Server/Client \u6765\u8FDC\u7A0B\u7BA1\u7406/\u8FDE\u63A5\u591A\u4E2A Agent\u3002",-1),_=e("p",null,"\u6BD4\u5982\uFF0C\u5728\u6D41\u5F0F\u8BA1\u7B97\u91CC\uFF0CJava \u8FDB\u7A0B\u53EF\u4EE5\u662F\u5728\u4E0D\u540C\u7684\u673A\u5668\u542F\u52A8\u7684\uFF0C\u60F3\u8981\u4F7F\u7528 Arthas \u53BB\u8BCA\u65AD\u4F1A\u6BD4\u8F83\u9EBB\u70E6\uFF0C\u56E0\u4E3A\u7528\u6237\u901A\u5E38\u6CA1\u6709\u673A\u5668\u7684\u6743\u9650\uFF0C\u5373\u4F7F\u767B\u9646\u673A\u5668\u4E5F\u5206\u4E0D\u6E05\u662F\u54EA\u4E2A Java \u8FDB\u7A0B\u3002",-1),g=e("p",null,"\u5728\u8FD9\u79CD\u60C5\u51B5\u4E0B\uFF0C\u53EF\u4EE5\u4F7F\u7528 Arthas Tunnel Server/Client\u3002",-1),k=e("p",null,"\u53C2\u8003:",-1),f=s("1: "),x=s("Web Console"),w=s("2: "),I=s("Arthas Spring Boot Starter"),A=e("h2",{id:"\u4E0B\u8F7D\u90E8\u7F72-arthas-tunnel-server",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u4E0B\u8F7D\u90E8\u7F72-arthas-tunnel-server","aria-hidden":"true"},"#"),s(" \u4E0B\u8F7D\u90E8\u7F72 arthas tunnel server")],-1),E={href:"https://github.com/alibaba/arthas/releases",target:"_blank",rel:"noopener noreferrer"},N=s("https://github.com/alibaba/arthas/releases"),R=s("\u4ECE Github Releases \u9875\u4E0B\u8F7D\uFF1A "),L={href:"https://github.com/alibaba/arthas/releases",target:"_blank",rel:"noopener noreferrer"},S=s("https://github.com/alibaba/arthas/releases"),T=t(`

    Arthas tunnel server \u662F\u4E00\u4E2A spring boot fat jar \u5E94\u7528\uFF0C\u76F4\u63A5java -jar\u542F\u52A8\uFF1A

    java -jar  arthas-tunnel-server.jar
    +

    \u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0Carthas tunnel server \u7684 web \u7AEF\u53E3\u662F8080\uFF0Carthas agent \u8FDE\u63A5\u7684\u7AEF\u53E3\u662F7777\u3002

    `,3),V=s("\u542F\u52A8\u4E4B\u540E\uFF0C\u53EF\u4EE5\u8BBF\u95EE "),B={href:"http://127.0.0.1:8080/",target:"_blank",rel:"noopener noreferrer"},y=s("http://127.0.0.1:8080/"),C=s(" \uFF0C\u518D\u901A\u8FC7"),D=e("code",null,"agentId",-1),J=s("\u8FDE\u63A5\u5230\u5DF2\u6CE8\u518C\u7684 arthas agent \u4E0A\u3002"),O=s("\u901A\u8FC7 Spring Boot \u7684 Endpoint\uFF0C\u53EF\u4EE5\u67E5\u770B\u5230\u5177\u4F53\u7684\u8FDE\u63A5\u4FE1\u606F\uFF1A "),j={href:"http://127.0.0.1:8080/actuator/arthas",target:"_blank",rel:"noopener noreferrer"},P=s("http://127.0.0.1:8080/actuator/arthas"),U=s(" \uFF0C\u767B\u9646\u7528\u6237\u540D\u662F"),G=e("code",null,"arthas",-1),Z=s("\uFF0C\u5BC6\u7801\u5728 arthas tunnel server \u7684\u65E5\u5FD7\u91CC\u53EF\u4EE5\u627E\u5230\uFF0C\u6BD4\u5982\uFF1A"),K=t(`
    32851 [main] INFO  o.s.b.a.s.s.UserDetailsServiceAutoConfiguration
    +
    +Using generated security password: f1dca050-3777-48f4-a577-6367e55a78a2
    +

    \u542F\u52A8 arthas \u65F6\u8FDE\u63A5\u5230 tunnel server

    \u5728\u542F\u52A8 arthas\uFF0C\u53EF\u4EE5\u4F20\u9012--tunnel-server\u53C2\u6570\uFF0C\u6BD4\u5982\uFF1A

    as3.sh --tunnel-server 'ws://127.0.0.1:7777/ws'
    +

    \u4E5F\u53EF\u4EE5\u4F7F\u7528\u4E0B\u9762\u7684\u6D4B\u8BD5\u5730\u5740\uFF08\u4E0D\u4FDD\u8BC1\u4E00\u76F4\u53EF\u7528\uFF09\uFF1A

    as3.sh --tunnel-server 'ws://47.75.156.201:80/ws'
    +
    • \u5982\u679C\u6709\u7279\u6B8A\u9700\u6C42\uFF0C\u53EF\u4EE5\u901A\u8FC7--agent-id\u53C2\u6570\u91CC\u6307\u5B9A agentId\u3002\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u4F1A\u751F\u6210\u968F\u673A ID\u3002

    attach \u6210\u529F\u4E4B\u540E\uFF0C\u4F1A\u6253\u5370\u51FA agentId\uFF0C\u6BD4\u5982\uFF1A

      ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \\ |  .--. ''--.  .--'|  '--'  | /  O  \\ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |\`.  \`-.
    +|  | |  ||  |\\  \\    |  |   |  |  |  ||  | |  |.-'    |
    +\`--' \`--'\`--' '--'   \`--'   \`--'  \`--'\`--' \`--'\`-----'
    +
    +
    +wiki      https://arthas.aliyun.com/3.x/doc
    +tutorials https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html
    +version   3.1.2
    +pid       86183
    +time      2019-08-30 15:40:53
    +id        URJZ5L48RPBR2ALI5K4V
    +

    \u5982\u679C\u662F\u542F\u52A8\u65F6\u6CA1\u6709\u8FDE\u63A5\u5230 tunnel server\uFF0C\u4E5F\u53EF\u4EE5\u5728\u540E\u7EED\u81EA\u52A8\u91CD\u8FDE\u6210\u529F\u4E4B\u540E\uFF0C\u901A\u8FC7 session \u547D\u4EE4\u6765\u83B7\u53D6 agentId\uFF1A

    [arthas@86183]$ session
    + Name           Value
    +-----------------------------------------------------
    + JAVA_PID       86183
    + SESSION_ID     f7273eb5-e7b0-4a00-bc5b-3fe55d741882
    + AGENT_ID       URJZ5L48RPBR2ALI5K4V
    + TUNNEL_SERVER  ws://47.75.156.201:80/ws
    +
    `,11),M=s("\u4EE5\u4E0A\u9762\u7684\u4E3A\u4F8B\uFF0C\u5728\u6D4F\u89C8\u5668\u91CC\u8BBF\u95EE "),$={href:"http://47.75.156.201/arthas/?port=80",target:"_blank",rel:"noopener noreferrer"},F=s("http://47.75.156.201/arthas/?port=80"),W=s(" \uFF0C\u8F93\u5165 "),Y=e("code",null,"agentId",-1),q=s("\uFF0C\u5C31\u53EF\u4EE5\u8FDE\u63A5\u5230\u672C\u673A\u4E0A\u7684 arthas \u4E86\u3002"),z=t('

    \u6700\u4F73\u5B9E\u8DF5

    \u63D0\u793A

    \u6CE8\u610F\uFF0CagentId \u8981\u4FDD\u6301\u552F\u4E00\uFF0C\u5426\u5219\u4F1A\u5728 tunnel server \u4E0A\u51B2\u7A81\uFF0C\u4E0D\u80FD\u6B63\u5E38\u5DE5\u4F5C\u3002

    \u5982\u679C arthas agent \u914D\u7F6E\u4E86 appName\uFF0C\u5219\u751F\u6210\u7684 agentId \u4F1A\u5E26\u4E0AappName\u7684\u524D\u7F00\u3002

    \u6BD4\u5982\u5728\u52A0\u4E0A\u542F\u52A8\u53C2\u6570\uFF1Aas3.sh --tunnel-server 'ws://127.0.0.1:7777/ws' --app-name demoapp \uFF0C\u5219\u751F\u6210\u7684 agentId \u53EF\u80FD\u662Fdemoapp_URJZ5L48RPBR2ALI5K4V\u3002

    Tunnel server \u4F1A\u4EE5_\u505A\u5206\u9694\u7B26\uFF0C\u63D0\u53D6\u51FAappName\uFF0C\u65B9\u4FBF\u6309\u5E94\u7528\u8FDB\u884C\u7BA1\u7406\u3002

    \u63D0\u793A

    \u53E6\u5916\uFF0C\u4E5F\u53EF\u4EE5\u5728\u89E3\u538B\u7684 arthas \u76EE\u5F55\u4E0B\u7684 arthas.properties\uFF0C\u6216\u8005\u5728 spring boot \u5E94\u7528\u7684application.properties\u91CC\u914D\u7F6EappName\u3002

    Tunnel Server \u7684\u7BA1\u7406\u9875\u9762

    \u63D0\u793A

    \u9700\u8981\u5728 spring boot \u7684application.properties\u91CC\u914D\u7F6E arthas.enable-detail-pages=true

    \u6CE8\u610F\uFF0C\u5F00\u653E\u7BA1\u7406\u9875\u9762\u6709\u98CE\u9669\uFF01\u7BA1\u7406\u9875\u9762\u6CA1\u6709\u5B89\u5168\u62E6\u622A\u529F\u80FD\uFF0C\u52A1\u5FC5\u81EA\u884C\u589E\u52A0\u5B89\u5168\u63AA\u65BD\u3002

    \u5728\u672C\u5730\u542F\u52A8 tunnel-server\uFF0C\u7136\u540E\u4F7F\u7528as3.sh attach\uFF0C\u5E76\u4E14\u6307\u5B9A\u5E94\u7528\u540D--app-name test\uFF1A

    $ as3.sh --tunnel-server 'ws://127.0.0.1:7777/ws' --app-name test
    +telnet connecting to arthas server... current timestamp is 1627539688
    +Trying 127.0.0.1...
    +Connected to 127.0.0.1.
    +Escape character is '^]'.
    +  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \\ |  .--. ''--.  .--'|  '--'  | /  O  \\ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |\`.  \`-.
    +|  | |  ||  |\\  \\    |  |   |  |  |  ||  | |  |.-'    |
    +\`--' \`--'\`--' '--'   \`--'   \`--'  \`--'\`--' \`--'\`-----'
    +
    +
    +wiki       https://arthas.aliyun.com/3.x/doc
    +tutorials  https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html
    +version    3.5.3
    +main_class demo.MathGame
    +pid        65825
    +time       2021-07-29 14:21:29
    +id         test_PE3LZO9NA9ENJYTPGL9L
    +

    \u7136\u540E\u8BBF\u95EE tunnel-server\uFF0C\u53EF\u4EE5\u770B\u5230\u6240\u6709\u8FDE\u63A5\u7684\u5E94\u7528\u5217\u8868\uFF1A

    `,12),H={href:"http://localhost:8080/apps.html",target:"_blank",rel:"noopener noreferrer"},Q=s("http://localhost:8080/apps.html"),X=e("p",null,[e("img",{src:o,alt:""})],-1),ee=e("p",null,"\u518D\u6253\u5F00\u8BE6\u60C5\uFF0C\u5219\u53EF\u4EE5\u770B\u5230\u8FDE\u63A5\u7684\u6240\u6709 agent \u5217\u8868\uFF1A",-1),se={href:"http://localhost:8080/agents.html?app=test",target:"_blank",rel:"noopener noreferrer"},ne=s("http://localhost:8080/agents.html?app=test"),ae=t('

    \u5B89\u5168\u548C\u6743\u9650\u7BA1\u7406

    \u63D0\u793A

    \u5F3A\u70C8\u5EFA\u8BAE\u4E0D\u8981\u628A tunnel server \u76F4\u63A5\u66B4\u9732\u5230\u516C\u7F51\u4E0A\u3002

    \u76EE\u524D tunnel server \u6CA1\u6709\u4E13\u95E8\u7684\u6743\u9650\u7BA1\u7406

    1. \u7528\u6237\u9700\u8981\u81EA\u884C\u5F00\u53D1\uFF0C\u5BF9 app name \u9274\u6743\u3002
    2. \u5982\u679C\u5F00\u653E\u7BA1\u7406\u9875\u9762\uFF0C\u9700\u8981\u589E\u52A0\u5B89\u5168\u63AA\u65BD\u3002

    \u96C6\u7FA4\u65B9\u5F0F\u7BA1\u7406

    \u5982\u679C\u5E0C\u671B\u90E8\u7F72\u591A\u53F0 tunnel server\uFF0C\u53EF\u4EE5\u901A\u8FC7 nginx \u505A\u8F6C\u53D1\uFF0Credis \u6765\u4FDD\u5B58 agent \u4FE1\u606F\u3002

    • nginx \u9700\u8981\u914D\u7F6E sticky session\uFF0C\u4FDD\u8BC1\u7528\u6237 web socket \u8FDE\u63A5\u5230\u540C\u4E00\u4E2A\u540E\u7AEF tunnel server \u4E0A\u3002\u7B80\u5355\u7684\u914D\u7F6E\u65B9\u5F0F\u662F\u7528ip_hash\u3002

    Arthas tunnel server \u7684\u5DE5\u4F5C\u539F\u7406

    browser <-> arthas tunnel server <-> arthas tunnel client <-> arthas agent
    +
    `,10),te={href:"https://github.com/alibaba/arthas/blob/master/tunnel-server/README.md#",target:"_blank",rel:"noopener noreferrer"},re=s("tunnel-server/README.md");function ie(le,oe){const r=l("RouterLink"),a=l("ExternalLinkIcon");return h(),u("div",null,[b,m,_,g,k,e("ul",null,[e("li",null,[f,n(r,{to:"/doc/web-console.html"},{default:i(()=>[x]),_:1})]),e("li",null,[w,n(r,{to:"/doc/spring-boot-starter.html"},{default:i(()=>[I]),_:1})])]),A,e("p",null,[e("a",E,[N,n(a)])]),e("ul",null,[e("li",null,[R,e("a",L,[S,n(a)])])]),T,e("p",null,[V,e("a",B,[y,n(a)]),C,D,J]),e("p",null,[O,e("a",j,[P,n(a)]),U,G,Z]),K,e("p",null,[M,e("a",$,[F,n(a)]),W,Y,q]),z,e("p",null,[e("a",H,[Q,n(a)])]),X,ee,e("p",null,[e("a",se,[ne,n(a)])]),ae,e("p",null,[e("a",te,[re,n(a)])])])}const pe=p(v,[["render",ie],["__file","tunnel.html.vue"]]);export{pe as default}; diff --git a/3.x/assets/tunnel.html.d20e61ab.js b/3.x/assets/tunnel.html.d20e61ab.js new file mode 100644 index 00000000000..cb6d3eecb36 --- /dev/null +++ b/3.x/assets/tunnel.html.d20e61ab.js @@ -0,0 +1,47 @@ +import{_ as l,a as c,b as d}from"./tunnel-server-agents.03d5eafa.js";import{_ as p,o as h,c as u,a as e,b as a,w as r,e as n,d as t,r as i}from"./app.4d248835.js";const v={},m=e("h1",{id:"arthas-tunnel",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#arthas-tunnel","aria-hidden":"true"},"#"),n(" Arthas Tunnel")],-1),b=e("p",null,"Manage/connect multiple Agents remotely via Arthas Tunnel Server/Client.",-1),g=e("p",null,"For example, in streaming computing, Java processes can be started on different machines, and it can be difficult to use Arthas to diagnose them, because the user usually does not have access to the machine.",-1),_=e("p",null,"In this case, Arthas Tunnel Server/Client can be used.",-1),k=e("p",null,"Reference:",-1),f=n("1: "),w=n("Web Console"),y=n("2: "),x=n("Arthas Spring Boot Starter"),I=e("h2",{id:"download-and-deploy-arthas-tunnel-server",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#download-and-deploy-arthas-tunnel-server","aria-hidden":"true"},"#"),n(" Download and deploy arthas tunnel server")],-1),A={href:"https://github.com/alibaba/arthas/releases",target:"_blank",rel:"noopener noreferrer"},N=n("https://github.com/alibaba/arthas/releases"),T=t(`

    Arthas tunnel server is a spring boot fat jar application, start with the java -jar command:

    java -jar  arthas-tunnel-server.jar
    +

    By default, the web port of the arthas tunnel server is 8080, and the port connected by the arthas agent is 7777.

    `,3),R=n("Once started, you can go to "),E={href:"http://127.0.0.1:8080/",target:"_blank",rel:"noopener noreferrer"},L=n("http://127.0.0.1:8080/"),S=n(" and connect to the registered arthas agent via "),B=e("code",null,"agentId",-1),P=n("."),C=n("Through Spring Boot's Endpoint, you can view the specific connection information: "),V={href:"http://127.0.0.1:8080/actuator/arthas",target:"_blank",rel:"noopener noreferrer"},D=n("http://127.0.0.1:8080/actuator/arthas"),O=n(", the login user name is "),M=e("code",null,"arthas",-1),U=n(", and the password can be found in the log of arthas tunnel server, for example:"),j=t(`
    32851 [main] INFO o.s.b.a.s.s.UserDetailsServiceAutoConfiguration
    +
    +Using generated security password: f1dca050-3777-48f4-a577-6367e55a78a2
    +

    Connecting to the tunnel server when starting arthas

    When starting arthas, you can use the --tunnel-server parameter, for example:

    as3.sh --tunnel-server 'ws://127.0.0.1:7777/ws'
    +

    You can also use the following test address (not guaranteed to be available all the time):

    as3.sh --tunnel-server 'ws://47.75.156.201:80/ws'
    +
    • You can specify the agentId by the --agent-id parameter. By default, a random ID is generated.

    After Arthas attach succeeds, the agentId will be printed, such as:

      ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \\ |  .--. ''--.  .--'|  '--'  | /  O  \\ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |\`.  \`-.
    +|  | |  ||  |\\  \\    |  |   |  |  |  ||  | |  |.-'    |
    +\`--' \`--'\`--' '--'   \`--'   \`--'  \`--'\`--' \`--'\`-----'
    +
    +
    +wiki      https://arthas.aliyun.com/3.x/doc
    +tutorials https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html
    +version   3.1.2
    +pid       86183
    +time      2019-08-30 15:40:53
    +id        URJZ5L48RPBR2ALI5K4V
    +

    If the connection is not connected to the tunnel server at startup, you can also obtain the agentId through the session command after reconnection succeeds:

    [arthas@86183]$ session
    + Name           Value
    +-----------------------------------------------------
    + JAVA_PID       86183
    + SESSION_ID     f7273eb5-e7b0-4a00-bc5b-3fe55d741882
    + AGENT_ID       URJZ5L48RPBR2ALI5K4V
    + TUNNEL_SERVER  ws://47.75.156.201:80/ws
    +
    `,11),J=n("For the above example, go to "),F={href:"http://47.75.156.201/arthas/?port=80",target:"_blank",rel:"noopener noreferrer"},G=n("http://47.75.156.201/arthas/?port=80"),Z=n(" in the browser and input the "),K=e("code",null,"agentId",-1),W=n(" to connect to arthas on remote machine."),Y=t('

    Best practices

    WARNING

    Note that the agentId must be unique, otherwise it will conflict on the tunnel server and not work properly.

    If the arthas agent is configured with appName, the generated agentId will be prefixed with appName.

    For example, if you add the startup parameter as3.sh --tunnel-server 'ws://127.0.0.1:7777/ws' --app-name demoapp, the generated agentId might be demoapp_URJZ5L48RPBR2ALI5K4V.

    Tunnel server will use _ as a delimiter to extract appName, which is convenient to manage by application.

    TIP

    Alternatively, you can configure appName in arthas.properties in the unzipped arthas directory, or in application.properties of the spring boot application.

    Tunnel Server Management Page

    TIP

    Need to configure arthas.enable-detail-pages=true in application.properties of spring boot

    Attention, opening admin pages is risky! There is no security blocking function on the management page, you must add security measures by yourself.

    Start the tunnel-server locally, then use as3.sh attach, and specify the application name --app-name test:

    $ as3.sh --tunnel-server 'ws://127.0.0.1:7777/ws' --app-name test
    +telnet connecting to arthas server... current timestamp is 1627539688
    +Trying 127.0.0.1...
    +Connected to 127.0.0.1.
    +Escape character is '^]'.
    +  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \\ |  .--. ''--.  .--'|  '--'  | /  O  \\ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |\`.  \`-.
    +|  | |  ||  |\\  \\    |  |   |  |  |  ||  | |  |.-'    |
    +\`--' \`--'\`--' '--'   \`--'   \`--'  \`--'\`--' \`--'\`-----'
    +
    +
    +wiki       https://arthas.aliyun.com/3.x/doc
    +tutorials  https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html
    +version    3.5.3
    +main_class demo.MathGame
    +pid        65825
    +time       2021-07-29 14:21:29
    +id         test_PE3LZO9NA9ENJYTPGL9L
    +

    Then visit tunnel-server, you can see a list of all connected applications:

    `,12),$={href:"http://localhost:8080/apps.html",target:"_blank",rel:"noopener noreferrer"},q=n("http://localhost:8080/apps.html"),z=e("p",null,[e("img",{src:l,alt:""})],-1),H=e("p",null,"Then open the details, you can see a list of all connected agents:",-1),Q={href:"http://localhost:8080/agents.html?app=test",target:"_blank",rel:"noopener noreferrer"},X=n("http://localhost:8080/agents.html?app=test"),ee=t('

    Security and Privilege Management

    TIP

    It is strongly recommended not to expose the tunnel server directly to the public network.

    Currently tunnel server does not have special permission management

    1. Users need to develop by themselves and authenticate the app name.
    2. If the management page is opened, security measures need to be added.

    Cluster Management

    If you want to deploy multiple tunnel servers, you can use nginx for forwarding and redis to store agent information.

    Nginx needs to configure sticky session to ensure that the user's web socket is connected to the same back-end tunnel server. The simple configuration method is to use ip_hash.

    How arthas tunnel server works

    browser <-> arthas tunnel server <-> arthas tunnel client <-> arthas agent
    +
    `,10),ne={href:"https://github.com/alibaba/arthas/blob/master/tunnel-server/README.md#",target:"_blank",rel:"noopener noreferrer"},ae=n("tunnel-server/README.md");function se(te,oe){const o=i("RouterLink"),s=i("ExternalLinkIcon");return h(),u("div",null,[m,b,g,_,k,e("ul",null,[e("li",null,[f,a(o,{to:"/en/doc/web-console.html"},{default:r(()=>[w]),_:1})]),e("li",null,[y,a(o,{to:"/en/doc/spring-boot-starter.html"},{default:r(()=>[x]),_:1})])]),I,e("p",null,[e("a",A,[N,a(s)])]),T,e("p",null,[R,e("a",E,[L,a(s)]),S,B,P]),e("p",null,[C,e("a",V,[D,a(s)]),O,M,U]),j,e("p",null,[J,e("a",F,[G,a(s)]),Z,K,W]),Y,e("p",null,[e("a",$,[q,a(s)])]),z,H,e("p",null,[e("a",Q,[X,a(s)])]),ee,e("p",null,[e("a",ne,[ae,a(s)])])])}const le=p(v,[["render",se],["__file","tunnel.html.vue"]]);export{le as default}; diff --git a/3.x/assets/version.html.18257b2f.js b/3.x/assets/version.html.18257b2f.js new file mode 100644 index 00000000000..5263ee0f990 --- /dev/null +++ b/3.x/assets/version.html.18257b2f.js @@ -0,0 +1,3 @@ +import{_ as e,o as s,c as a,d as n}from"./app.4d248835.js";const r={},i=n(`

    version

    prints out Arthas's version.

    Usage

    $ version
    + 3.5.1
    +
    `,4),d=[i];function o(t,c){return s(),a("div",null,d)}const h=e(r,[["render",o],["__file","version.html.vue"]]);export{h as default}; diff --git a/3.x/assets/version.html.2ce43555.js b/3.x/assets/version.html.2ce43555.js new file mode 100644 index 00000000000..b41df3e12dd --- /dev/null +++ b/3.x/assets/version.html.2ce43555.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-9a4bc0f6","path":"/en/doc/version.html","title":"version","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]}],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/version.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/version.html.48ec1551.js b/3.x/assets/version.html.48ec1551.js new file mode 100644 index 00000000000..971e8552573 --- /dev/null +++ b/3.x/assets/version.html.48ec1551.js @@ -0,0 +1,3 @@ +import{_ as e,o as a,c as n,d as r}from"./app.4d248835.js";const s={},i=r(`

    version

    \u8F93\u51FA\u5F53\u524D\u76EE\u6807 Java \u8FDB\u7A0B\u6240\u52A0\u8F7D\u7684 Arthas \u7248\u672C\u53F7

    \u4F7F\u7528\u53C2\u8003

    $ version
    + 3.5.1
    +
    `,4),t=[i];function d(c,o){return a(),n("div",null,t)}const h=e(s,[["render",d],["__file","version.html.vue"]]);export{h as default}; diff --git a/3.x/assets/version.html.85cfef6a.js b/3.x/assets/version.html.85cfef6a.js new file mode 100644 index 00000000000..97b0eb98bf3 --- /dev/null +++ b/3.x/assets/version.html.85cfef6a.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-5b5d3371","path":"/doc/version.html","title":"version","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[]}],"git":{"updatedTime":1660041759000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/version.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/vmoption.html.58b16737.js b/3.x/assets/vmoption.html.58b16737.js new file mode 100644 index 00000000000..5ca888a5b16 --- /dev/null +++ b/3.x/assets/vmoption.html.58b16737.js @@ -0,0 +1 @@ +const i=JSON.parse('{"key":"v-40db67fd","path":"/doc/vmoption.html","title":"vmoption","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"\u67E5\u770B\u6240\u6709\u7684 option","slug":"\u67E5\u770B\u6240\u6709\u7684-option","link":"#\u67E5\u770B\u6240\u6709\u7684-option","children":[]},{"level":3,"title":"\u67E5\u770B\u6307\u5B9A\u7684 option","slug":"\u67E5\u770B\u6307\u5B9A\u7684-option","link":"#\u67E5\u770B\u6307\u5B9A\u7684-option","children":[]},{"level":3,"title":"\u66F4\u65B0\u6307\u5B9A\u7684 option","slug":"\u66F4\u65B0\u6307\u5B9A\u7684-option","link":"#\u66F4\u65B0\u6307\u5B9A\u7684-option","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/vmoption.md","version":"3.7.3"}');export{i as data}; diff --git a/3.x/assets/vmoption.html.a450713f.js b/3.x/assets/vmoption.html.a450713f.js new file mode 100644 index 00000000000..b6a4bbe870c --- /dev/null +++ b/3.x/assets/vmoption.html.a450713f.js @@ -0,0 +1,40 @@ +import{_ as s,o as i,c as l,a as n,b as o,e as a,d as t,r}from"./app.4d248835.js";const d={},c=n("h1",{id:"vmoption",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#vmoption","aria-hidden":"true"},"#"),a(" vmoption")],-1),p={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-vmoption",target:"_blank",rel:"noopener noreferrer"},u=n("code",null,"vmoption",-1),v=a(" online tutorial"),b=t(`

    TIP

    Display, and update the vm diagnostic options.

    Usage

    View all options

    [arthas@56963]$ vmoption
    + KEY                    VALUE                   ORIGIN                 WRITEABLE
    +---------------------------------------------------------------------------------------------
    + HeapDumpBeforeFullGC   false                   DEFAULT                true
    + HeapDumpAfterFullGC    false                   DEFAULT                true
    + HeapDumpOnOutOfMemory  false                   DEFAULT                true
    + Error
    + HeapDumpPath                                   DEFAULT                true
    + CMSAbortablePrecleanW  100                     DEFAULT                true
    + aitMillis
    + CMSWaitDuration        2000                    DEFAULT                true
    + CMSTriggerInterval     -1                      DEFAULT                true
    + PrintGC                false                   DEFAULT                true
    + PrintGCDetails         true                    MANAGEMENT             true
    + PrintGCDateStamps      false                   DEFAULT                true
    + PrintGCTimeStamps      false                   DEFAULT                true
    + PrintGCID              false                   DEFAULT                true
    + PrintClassHistogramBe  false                   DEFAULT                true
    + foreFullGC
    + PrintClassHistogramAf  false                   DEFAULT                true
    + terFullGC
    + PrintClassHistogram    false                   DEFAULT                true
    + MinHeapFreeRatio       0                       DEFAULT                true
    + MaxHeapFreeRatio       100                     DEFAULT                true
    + PrintConcurrentLocks   false                   DEFAULT                true
    +

    View individual option

    $ vmoption PrintGC
    + KEY                 VALUE                ORIGIN              WRITEABLE
    +---------------------------------------------------------------------------------
    + PrintGC             false                MANAGEMENT          true
    +

    Update individual option

    $ vmoption PrintGC true
    +Successfully updated the vm option.
    + NAME     BEFORE-VALUE  AFTER-VALUE
    +------------------------------------
    + PrintGC  false         true
    +
    $ vmoption PrintGCDetails true
    +Successfully updated the vm option.
    + NAME            BEFORE-VALUE  AFTER-VALUE
    +-------------------------------------------
    + PrintGCDetails  false         true
    +
    `,9);function m(h,k){const e=r("ExternalLinkIcon");return i(),l("div",null,[c,n("p",null,[n("a",p,[u,v,o(e)])]),b])}const A=s(d,[["render",m],["__file","vmoption.html.vue"]]);export{A as default}; diff --git a/3.x/assets/vmoption.html.c32a5087.js b/3.x/assets/vmoption.html.c32a5087.js new file mode 100644 index 00000000000..1728ca0cc8e --- /dev/null +++ b/3.x/assets/vmoption.html.c32a5087.js @@ -0,0 +1,40 @@ +import{_ as e,o as l,c as i,a as n,b as o,e as a,d as t,r}from"./app.4d248835.js";const d={},c=n("h1",{id:"vmoption",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#vmoption","aria-hidden":"true"},"#"),a(" vmoption")],-1),p={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-vmoption",target:"_blank",rel:"noopener noreferrer"},u=n("code",null,"vmoption",-1),v=a("\u5728\u7EBF\u6559\u7A0B"),b=t(`

    \u63D0\u793A

    \u67E5\u770B\uFF0C\u66F4\u65B0 VM \u8BCA\u65AD\u76F8\u5173\u7684\u53C2\u6570

    \u4F7F\u7528\u53C2\u8003

    \u67E5\u770B\u6240\u6709\u7684 option

    [arthas@56963]$ vmoption
    + KEY                    VALUE                   ORIGIN                 WRITEABLE
    +---------------------------------------------------------------------------------------------
    + HeapDumpBeforeFullGC   false                   DEFAULT                true
    + HeapDumpAfterFullGC    false                   DEFAULT                true
    + HeapDumpOnOutOfMemory  false                   DEFAULT                true
    + Error
    + HeapDumpPath                                   DEFAULT                true
    + CMSAbortablePrecleanW  100                     DEFAULT                true
    + aitMillis
    + CMSWaitDuration        2000                    DEFAULT                true
    + CMSTriggerInterval     -1                      DEFAULT                true
    + PrintGC                false                   DEFAULT                true
    + PrintGCDetails         true                    MANAGEMENT             true
    + PrintGCDateStamps      false                   DEFAULT                true
    + PrintGCTimeStamps      false                   DEFAULT                true
    + PrintGCID              false                   DEFAULT                true
    + PrintClassHistogramBe  false                   DEFAULT                true
    + foreFullGC
    + PrintClassHistogramAf  false                   DEFAULT                true
    + terFullGC
    + PrintClassHistogram    false                   DEFAULT                true
    + MinHeapFreeRatio       0                       DEFAULT                true
    + MaxHeapFreeRatio       100                     DEFAULT                true
    + PrintConcurrentLocks   false                   DEFAULT                true
    +

    \u67E5\u770B\u6307\u5B9A\u7684 option

    $ vmoption PrintGC
    + KEY                 VALUE                ORIGIN              WRITEABLE
    +---------------------------------------------------------------------------------
    + PrintGC             false                MANAGEMENT          true
    +

    \u66F4\u65B0\u6307\u5B9A\u7684 option

    $ vmoption PrintGC true
    +Successfully updated the vm option.
    + NAME     BEFORE-VALUE  AFTER-VALUE
    +------------------------------------
    + PrintGC  false         true
    +
    $ vmoption PrintGCDetails true
    +Successfully updated the vm option.
    + NAME            BEFORE-VALUE  AFTER-VALUE
    +-------------------------------------------
    + PrintGCDetails  false         true
    +
    `,9);function m(h,k){const s=r("ExternalLinkIcon");return l(),i("div",null,[c,n("p",null,[n("a",p,[u,v,o(s)])]),b])}const A=e(d,[["render",m],["__file","vmoption.html.vue"]]);export{A as default}; diff --git a/3.x/assets/vmoption.html.c8c7e7fc.js b/3.x/assets/vmoption.html.c8c7e7fc.js new file mode 100644 index 00000000000..1817322f9d6 --- /dev/null +++ b/3.x/assets/vmoption.html.c8c7e7fc.js @@ -0,0 +1 @@ +const i=JSON.parse('{"key":"v-4e08032e","path":"/en/doc/vmoption.html","title":"vmoption","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"View all options","slug":"view-all-options","link":"#view-all-options","children":[]},{"level":3,"title":"View individual option","slug":"view-individual-option","link":"#view-individual-option","children":[]},{"level":3,"title":"Update individual option","slug":"update-individual-option","link":"#update-individual-option","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/vmoption.md","version":"3.7.3"}');export{i as data}; diff --git a/3.x/assets/vmtool.html.3a06f08b.js b/3.x/assets/vmtool.html.3a06f08b.js new file mode 100644 index 00000000000..f131bb39218 --- /dev/null +++ b/3.x/assets/vmtool.html.3a06f08b.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-10890efa","path":"/doc/vmtool.html","title":"vmtool","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u83B7\u53D6\u5BF9\u8C61","slug":"\u83B7\u53D6\u5BF9\u8C61","link":"#\u83B7\u53D6\u5BF9\u8C61","children":[]},{"level":2,"title":"\u6307\u5B9A classloader name","slug":"\u6307\u5B9A-classloader-name","link":"#\u6307\u5B9A-classloader-name","children":[]},{"level":2,"title":"\u6307\u5B9A classloader hash","slug":"\u6307\u5B9A-classloader-hash","link":"#\u6307\u5B9A-classloader-hash","children":[]},{"level":2,"title":"\u6307\u5B9A\u8FD4\u56DE\u7ED3\u679C\u5C55\u5F00\u5C42\u6570","slug":"\u6307\u5B9A\u8FD4\u56DE\u7ED3\u679C\u5C55\u5F00\u5C42\u6570","link":"#\u6307\u5B9A\u8FD4\u56DE\u7ED3\u679C\u5C55\u5F00\u5C42\u6570","children":[]},{"level":2,"title":"\u6267\u884C\u8868\u8FBE\u5F0F","slug":"\u6267\u884C\u8868\u8FBE\u5F0F","link":"#\u6267\u884C\u8868\u8FBE\u5F0F","children":[]},{"level":2,"title":"\u5F3A\u5236 GC","slug":"\u5F3A\u5236-gc","link":"#\u5F3A\u5236-gc","children":[]},{"level":2,"title":"interrupt \u6307\u5B9A\u7EBF\u7A0B","slug":"interrupt-\u6307\u5B9A\u7EBF\u7A0B","link":"#interrupt-\u6307\u5B9A\u7EBF\u7A0B","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":2},{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1}]},"filePathRelative":"doc/vmtool.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/vmtool.html.65118aec.js b/3.x/assets/vmtool.html.65118aec.js new file mode 100644 index 00000000000..a1ad471c347 --- /dev/null +++ b/3.x/assets/vmtool.html.65118aec.js @@ -0,0 +1,29 @@ +import{_ as r,o as c,c as l,a as e,b as s,w as d,e as a,d as o,r as t}from"./app.4d248835.js";const p={},u=e("h1",{id:"vmtool",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#vmtool","aria-hidden":"true"},"#"),a(" vmtool")],-1),h=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"TIP"),e("p",null,"@since 3.5.1")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-vmtool",target:"_blank",rel:"noopener noreferrer"},v=e("code",null,"vmtool",-1),b=a(" online tutorial"),g=e("p",null,[e("code",null,"vmtool"),a(" uses the "),e("code",null,"JVMTI"),a(" to support "),e("code",null,"getInstances"),a(" in jvm and "),e("code",null,"forceGc"),a(".")],-1),k={href:"https://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.html",target:"_blank",rel:"noopener noreferrer"},f=a("JVM Tool Interface"),x=o(`

    getInstances

    $ vmtool --action getInstances --className java.lang.String --limit 10
    +@String[][
    +    @String[com/taobao/arthas/core/shell/session/Session],
    +    @String[com.taobao.arthas.core.shell.session.Session],
    +    @String[com/taobao/arthas/core/shell/session/Session],
    +    @String[com/taobao/arthas/core/shell/session/Session],
    +    @String[com/taobao/arthas/core/shell/session/Session.class],
    +    @String[com/taobao/arthas/core/shell/session/Session.class],
    +    @String[com/taobao/arthas/core/shell/session/Session.class],
    +    @String[com/],
    +    @String[java/util/concurrent/ConcurrentHashMap$ValueIterator],
    +    @String[java/util/concurrent/locks/LockSupport],
    +]
    +

    TIP

    Through the --limit parameter, you can limit the number of return values to avoid pressure on the JVM when obtaining large data. The default value of limit is 10.

    Specify classloader name

    vmtool --action getInstances --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader --className org.springframework.context.ApplicationContext
    +

    Specify classloader hash

    The classloader that loads the class can be found through the sc command.

    $ sc -d org.springframework.context.ApplicationContext
    + class-info org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext
    + code-source file:/private/tmp/demo-arthas-spring-boot.jar!/BOOT-INF/lib/spring-boot-1.5.13.RELEASE.jar!/
    + name org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext
    +...
    + class-loader +-org.springframework.boot.loader.LaunchedURLClassLoader@19469ea2
    +                     +-sun.misc.Launcher$AppClassLoader@75b84c92
    +                       +-sun.misc.Launcher$ExtClassLoader@4f023edb
    + classLoaderHash 19469ea2
    +

    Then use the -c/--classloader parameter to specify:

    vmtool --action getInstances -c 19469ea2 --className org.springframework.context.ApplicationContext
    +

    Specify the number of expanded layers of returned results

    TIP

    The return result of the getInstances action is bound to the instances variable, which is an array.

    The expansion level of the result can be specified by the -x/--expand parameter, the default value is 1.

    vmtool --action getInstances -c 19469ea2 --className org.springframework.context.ApplicationContext -x 2
    +

    Execute expression

    TIP

    The return result of the getInstances action is bound to the instances variable, which is an array. The specified expression can be executed through the --express parameter.

    vmtool --action getInstances --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader --className org.springframework.context.ApplicationContext --express'instances[0].getBeanDefinitionNames()'
    +

    Force GC

    vmtool --action forceGc
    +
    `,18),_=a("Use the "),S=e("code",null,"vmoption",-1),L=a(" command to dynamically turn on the "),y=e("code",null,"PrintGC",-1),C=a(" option."),I=o(`

    interrupt \u6307\u5B9A\u7EBF\u7A0B

    The thread id is specified by the -t parameter. It can be obtained using the thread command.

    vmtool --action interruptThread -t 1
    +
    `,3);function T(w,A){const n=t("ExternalLinkIcon"),i=t("RouterLink");return c(),l("div",null,[u,h,e("p",null,[e("a",m,[v,b,s(n)])]),g,e("ul",null,[e("li",null,[e("a",k,[f,s(n)])])]),x,e("ul",null,[e("li",null,[_,s(i,{to:"/en/doc/vmoption.html"},{default:d(()=>[S]),_:1}),L,y,C])]),I])}const E=r(p,[["render",T],["__file","vmtool.html.vue"]]);export{E as default}; diff --git a/3.x/assets/vmtool.html.ab0c1d24.js b/3.x/assets/vmtool.html.ab0c1d24.js new file mode 100644 index 00000000000..8c69140fbb0 --- /dev/null +++ b/3.x/assets/vmtool.html.ab0c1d24.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-76745066","path":"/en/doc/vmtool.html","title":"vmtool","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"getInstances","slug":"getinstances","link":"#getinstances","children":[]},{"level":2,"title":"Specify classloader name","slug":"specify-classloader-name","link":"#specify-classloader-name","children":[]},{"level":2,"title":"Specify classloader hash","slug":"specify-classloader-hash","link":"#specify-classloader-hash","children":[]},{"level":2,"title":"Specify the number of expanded layers of returned results","slug":"specify-the-number-of-expanded-layers-of-returned-results","link":"#specify-the-number-of-expanded-layers-of-returned-results","children":[]},{"level":2,"title":"Execute expression","slug":"execute-expression","link":"#execute-expression","children":[]},{"level":2,"title":"Force GC","slug":"force-gc","link":"#force-gc","children":[]},{"level":2,"title":"interrupt \u6307\u5B9A\u7EBF\u7A0B","slug":"interrupt-\u6307\u5B9A\u7EBF\u7A0B","link":"#interrupt-\u6307\u5B9A\u7EBF\u7A0B","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":2},{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1}]},"filePathRelative":"en/doc/vmtool.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/vmtool.html.dc9e0833.js b/3.x/assets/vmtool.html.dc9e0833.js new file mode 100644 index 00000000000..33eb544513e --- /dev/null +++ b/3.x/assets/vmtool.html.dc9e0833.js @@ -0,0 +1,29 @@ +import{_ as c,o as r,c as l,a,b as e,w as d,e as s,d as t,r as o}from"./app.4d248835.js";const p={},u=a("h1",{id:"vmtool",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#vmtool","aria-hidden":"true"},"#"),s(" vmtool")],-1),m=a("div",{class:"custom-container tip"},[a("p",{class:"custom-container-title"},"\u63D0\u793A"),a("p",null,"@since 3.5.1")],-1),v={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-vmtool",target:"_blank",rel:"noopener noreferrer"},h=a("code",null,"vmtool",-1),b=s("\u5728\u7EBF\u6559\u7A0B"),g=a("p",null,[a("code",null,"vmtool"),s(" \u5229\u7528"),a("code",null,"JVMTI"),s("\u63A5\u53E3\uFF0C\u5B9E\u73B0\u67E5\u8BE2\u5185\u5B58\u5BF9\u8C61\uFF0C\u5F3A\u5236 GC \u7B49\u529F\u80FD\u3002")],-1),k={href:"https://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.html",target:"_blank",rel:"noopener noreferrer"},_=s("JVM Tool Interface"),x=t(`

    \u83B7\u53D6\u5BF9\u8C61

    $ vmtool --action getInstances --className java.lang.String --limit 10
    +@String[][
    +    @String[com/taobao/arthas/core/shell/session/Session],
    +    @String[com.taobao.arthas.core.shell.session.Session],
    +    @String[com/taobao/arthas/core/shell/session/Session],
    +    @String[com/taobao/arthas/core/shell/session/Session],
    +    @String[com/taobao/arthas/core/shell/session/Session.class],
    +    @String[com/taobao/arthas/core/shell/session/Session.class],
    +    @String[com/taobao/arthas/core/shell/session/Session.class],
    +    @String[com/],
    +    @String[java/util/concurrent/ConcurrentHashMap$ValueIterator],
    +    @String[java/util/concurrent/locks/LockSupport],
    +]
    +

    \u63D0\u793A

    \u901A\u8FC7 --limit\u53C2\u6570\uFF0C\u53EF\u4EE5\u9650\u5236\u8FD4\u56DE\u503C\u6570\u91CF\uFF0C\u907F\u514D\u83B7\u53D6\u8D85\u5927\u6570\u636E\u65F6\u5BF9 JVM \u9020\u6210\u538B\u529B\u3002\u9ED8\u8BA4\u503C\u662F 10\u3002

    \u6307\u5B9A classloader name

    vmtool --action getInstances --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader --className org.springframework.context.ApplicationContext
    +

    \u6307\u5B9A classloader hash

    \u53EF\u4EE5\u901A\u8FC7sc\u547D\u4EE4\u67E5\u627E\u5230\u52A0\u8F7D class \u7684 classloader\u3002

    $ sc -d org.springframework.context.ApplicationContext
    + class-info        org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext
    + code-source       file:/private/tmp/demo-arthas-spring-boot.jar!/BOOT-INF/lib/spring-boot-1.5.13.RELEASE.jar!/
    + name              org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext
    +...
    + class-loader      +-org.springframework.boot.loader.LaunchedURLClassLoader@19469ea2
    +                     +-sun.misc.Launcher$AppClassLoader@75b84c92
    +                       +-sun.misc.Launcher$ExtClassLoader@4f023edb
    + classLoaderHash   19469ea2
    +

    \u7136\u540E\u7528-c/--classloader \u53C2\u6570\u6307\u5B9A\uFF1A

    vmtool --action getInstances -c 19469ea2 --className org.springframework.context.ApplicationContext
    +

    \u6307\u5B9A\u8FD4\u56DE\u7ED3\u679C\u5C55\u5F00\u5C42\u6570

    \u63D0\u793A

    getInstances action \u8FD4\u56DE\u7ED3\u679C\u7ED1\u5B9A\u5230instances\u53D8\u91CF\u4E0A\uFF0C\u5B83\u662F\u6570\u7EC4\u3002

    \u901A\u8FC7 -x/--expand \u53C2\u6570\u53EF\u4EE5\u6307\u5B9A\u7ED3\u679C\u7684\u5C55\u5F00\u5C42\u6B21\uFF0C\u9ED8\u8BA4\u503C\u662F 1\u3002

    vmtool --action getInstances -c 19469ea2 --className org.springframework.context.ApplicationContext -x 2
    +

    \u6267\u884C\u8868\u8FBE\u5F0F

    \u63D0\u793A

    getInstances action \u8FD4\u56DE\u7ED3\u679C\u7ED1\u5B9A\u5230instances\u53D8\u91CF\u4E0A\uFF0C\u5B83\u662F\u6570\u7EC4\u3002\u53EF\u4EE5\u901A\u8FC7--express\u53C2\u6570\u6267\u884C\u6307\u5B9A\u7684\u8868\u8FBE\u5F0F\u3002

    vmtool --action getInstances --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader --className org.springframework.context.ApplicationContext --express 'instances[0].getBeanDefinitionNames()'
    +

    \u5F3A\u5236 GC

    vmtool --action forceGc
    +
    `,18),f=s("\u53EF\u4EE5\u7ED3\u5408 "),C=a("code",null,"vmoption",-1),L=s(" \u547D\u4EE4\u52A8\u6001\u6253\u5F00"),S=a("code",null,"PrintGC",-1),I=s("\u5F00\u5173\u3002"),w=t(`

    interrupt \u6307\u5B9A\u7EBF\u7A0B

    thread id \u901A\u8FC7-t\u53C2\u6570\u6307\u5B9A\uFF0C\u53EF\u4EE5\u4F7F\u7528 thread\u547D\u4EE4\u83B7\u53D6\u3002

    vmtool --action interruptThread -t 1
    +
    `,3);function A(N,E){const n=o("ExternalLinkIcon"),i=o("RouterLink");return r(),l("div",null,[u,m,a("p",null,[a("a",v,[h,b,e(n)])]),g,a("ul",null,[a("li",null,[a("a",k,[_,e(n)])])]),x,a("ul",null,[a("li",null,[f,e(i,{to:"/doc/vmoption.html"},{default:d(()=>[C]),_:1}),L,S,I])]),w])}const V=c(p,[["render",A],["__file","vmtool.html.vue"]]);export{V as default}; diff --git a/3.x/assets/watch.html.30c91d3e.js b/3.x/assets/watch.html.30c91d3e.js new file mode 100644 index 00000000000..0ce43218a2a --- /dev/null +++ b/3.x/assets/watch.html.30c91d3e.js @@ -0,0 +1,188 @@ +import{_ as i,o as l,c as r,a as n,b as a,w as o,e as s,d as p,r as c}from"./app.4d248835.js";const u={},d=n("h1",{id:"watch",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#watch","aria-hidden":"true"},"#"),s(" watch")],-1),m={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=command-watch",target:"_blank",rel:"noopener noreferrer"},k=n("code",null,"watch",-1),v=s(" online tutorial"),b=n("p",null,[s("Monitor methods in data aspect including "),n("code",null,"return values"),s(", "),n("code",null,"exceptions"),s(" and "),n("code",null,"parameters"),s(".")],-1),h=s("With the help of "),g={href:"https://commons.apache.org/proper/commons-ognl/index.html",target:"_blank",rel:"noopener noreferrer"},f=s("OGNL"),x=s(", you can easily check the details of variables when methods being invoked."),_=p('

    Parameters & Options

    There are four different scenarios for watch command, which makes it rather complicated.

    NameSpecification
    class-patternpattern for the class name
    method-patternpattern for the method name
    expressionexpression to watch, default value {params, target, returnObj}
    condition-expressioncondition expression to filter
    [b]before method being invoked
    [e]when method encountering exceptions
    [s]when method exits normally
    [f]when method exits (either succeed or fail with exceptions)
    [E]turn on regex matching while the default is wildcard matching
    [x:]the depth to print the specified property with default value: 1, the max value is 4
    [m <arg>]Specify the max number of matched Classes, the default value is 50. Long format is [maxMatch <arg>].

    F.Y.I

    1. any valid OGNL expression as "{params,returnObj}" supported
    2. there are four watching points: -b, -e, -s and -f (the first three are off in default while -f on);
    3. at the watching point, Arthas will use the expression to evaluate the variables and print them out;
    4. in parameters and out parameters are different since they can be modified within the invoked methods; params stands for in parameters in -bwhile out parameters in other watching points;
    5. there are no return values and exceptions when using -b.
    6. In the result of the watch command, the location information will be printed. There are three possible values for location: AtEnter, AtExit, and AtExceptionExit. Corresponding to the method entry, the method returns normally, and the method throws an exception.

    Advanced:

    ',6),y=s("Critical fields in "),w=n("em",null,"expression",-1),I={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},A=s("Special usages"),C={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},G=s("OGNL official guide"),j=n("h2",{id:"usage",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#usage","aria-hidden":"true"},"#"),s(" Usage")],-1),M=n("h3",{id:"start-demo",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#start-demo","aria-hidden":"true"},"#"),s(" Start Demo")],-1),L=s("Start "),E=n("code",null,"math-game",-1),O=s(" in "),F=s("Quick Start"),q=s("."),T=p(`

    Check the out parameters, this and return value

    TIP

    The expression to watch, default value {params, target, returnObj}

    $ watch demo.MathGame primeFactors -x 2
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 32 ms, listenerId: 5
    +method=demo.MathGame.primeFactors location=AtExceptionExit
    +ts=2021-08-31 15:22:57; [cost=0.220625ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[-179173],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@31cefde0],
    +        illegalArgumentCount=@Integer[44],
    +    ],
    +    null,
    +]
    +method=demo.MathGame.primeFactors location=AtExit
    +ts=2021-08-31 15:22:58; [cost=1.020982ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@31cefde0],
    +        illegalArgumentCount=@Integer[44],
    +    ],
    +    @ArrayList[
    +        @Integer[2],
    +        @Integer[2],
    +        @Integer[26947],
    +    ],
    +]
    +
    • In the above result, the method is executed twice, the first result is location=AtExceptionExit, indicating that the method throws an exception, so returnObj is null
    • In the second result is location=AtExit, indicating that the method returns normally, so you can see that the result of returnObj is an ArrayList

    Specify the max number of matched Classes

    $ watch demo.MathGame primeFactors -m 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 302 ms, listenerId: 3
    +method=demo.MathGame.primeFactors location=AtExceptionExit
    +ts=2022-12-25 19:58:41; [cost=0.222419ms] result=@ArrayList[
    +    @Object[][isEmpty=false;size=1],
    +    @MathGame[demo.MathGame@3bf400],
    +    null,
    +]
    +method=demo.MathGame.primeFactors location=AtExceptionExit
    +ts=2022-12-25 19:58:51; [cost=0.046928ms] result=@ArrayList[
    +    @Object[][isEmpty=false;size=1],
    +    @MathGame[demo.MathGame@3bf400],
    +    null,
    +]
    +

    Check in parameters

    $ watch demo.MathGame primeFactors "{params,returnObj}" -x 2 -b
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 50 ms.
    +ts=2018-12-03 19:23:23; [cost=0.0353ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[-1077465243],
    +    ],
    +    null,
    +]
    +

    Compared to the previous check:

    • return value is null since it's -b.

    Check before and after at the same time

    $ watch demo.MathGame primeFactors "{params,target,returnObj}" -x 2 -b -s -n 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 46 ms.
    +ts=2018-12-03 19:29:54; [cost=0.01696ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@522b408a],
    +        illegalArgumentCount=@Integer[13038],
    +    ],
    +    null,
    +]
    +ts=2018-12-03 19:29:54; [cost=4.277392ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@522b408a],
    +        illegalArgumentCount=@Integer[13038],
    +    ],
    +    @ArrayList[
    +        @Integer[2],
    +        @Integer[2],
    +        @Integer[2],
    +        @Integer[5],
    +        @Integer[5],
    +        @Integer[73],
    +        @Integer[241],
    +        @Integer[439],
    +    ],
    +]
    +

    F.Y.I

    • -n 2: threshold of execution times is 2.
    • the first block of output is the before watching point;
    • *the order of the output determined by the *watching* order itself (nothing to do with the order of the options -b -s).

    Use -x to check more details

    $ watch demo.MathGame primeFactors "{params,target}" -x 3
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 58 ms.
    +ts=2018-12-03 19:34:19; [cost=0.587833ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[
    +            serialVersionUID=@Long[3905348978240129619],
    +            seed=@AtomicLong[3133719055989],
    +            multiplier=@Long[25214903917],
    +            addend=@Long[11],
    +            mask=@Long[281474976710655],
    +            DOUBLE_UNIT=@Double[1.1102230246251565E-16],
    +            BadBound=@String[bound must be positive],
    +            BadRange=@String[bound must be greater than origin],
    +            BadSize=@String[size must be non-negative],
    +            seedUniquifier=@AtomicLong[-3282039941672302964],
    +            nextNextGaussian=@Double[0.0],
    +            haveNextNextGaussian=@Boolean[false],
    +            serialPersistentFields=@ObjectStreamField[][isEmpty=false;size=3],
    +            unsafe=@Unsafe[sun.misc.Unsafe@2eaa1027],
    +            seedOffset=@Long[24],
    +        ],
    +        illegalArgumentCount=@Integer[13159],
    +    ],
    +]
    +
    • -x: Expand level of object (1 by default)
    • The max value of -x is 4, to prevent the expansion result taking up too much memory. Users can specify the field in the ognl expression.

    Use condition expressions to locate specific call

    $ watch demo.MathGame primeFactors "{params[0],target}" "params[0]<0"
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 68 ms.
    +ts=2018-12-03 19:36:04; [cost=0.530255ms] result=@ArrayList[
    +    @Integer[-18178089],
    +    @MathGame[demo.MathGame@41cf53f9],
    +]
    +

    Check exceptions

    $ watch demo.MathGame primeFactors "{params[0],throwExp}" -e -x 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 62 ms.
    +ts=2018-12-03 19:38:00; [cost=1.414993ms] result=@ArrayList[
    +    @Integer[-1120397038],
    +    java.lang.IllegalArgumentException: number is: -1120397038, need >= 2
    +	at demo.MathGame.primeFactors(MathGame.java:46)
    +	at demo.MathGame.run(MathGame.java:24)
    +	at demo.MathGame.main(MathGame.java:16)
    +,
    +]
    +
    • -e\b: Trigger when an exception is thrown
    • throwExp: the exception object

    Filter by time cost

    $ watch demo.MathGame primeFactors '{params, returnObj}' '#cost>200' -x 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 66 ms.
    +ts=2018-12-03 19:40:28; [cost=2112.168897ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @ArrayList[
    +        @Integer[5],
    +        @Integer[428379493],
    +    ],
    +]
    +
    • #cost>200 (ms) filter out all invokings that take less than 200ms.

    Check the field of the target object

    • target is the this object in java.
    $ watch demo.MathGame primeFactors 'target'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 52 ms.
    +ts=2018-12-03 19:41:52; [cost=0.477882ms] result=@MathGame[
    +    random=@Random[java.util.Random@522b408a],
    +    illegalArgumentCount=@Integer[13355],
    +]
    +
    • target.field_name: the field of the current object.
    $ watch demo.MathGame primeFactors 'target.illegalArgumentCount'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 67 ms.
    +ts=2018-12-03 20:04:34; [cost=131.303498ms] result=@Integer[8]
    +ts=2018-12-03 20:04:35; [cost=0.961441ms] result=@Integer[8]
    +

    Get a static field and calling a static method

    watch demo.MathGame * '{params,@demo.MathGame@random.nextInt(100)}' -v -n 1 -x 2
    +[arthas@6527]$ watch demo.MathGame * '{params,@demo.MathGame@random.nextInt(100)}' -n 1 -x 2
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 5) cost in 34 ms, listenerId: 3
    +ts=2021-01-05 21:35:20; [cost=0.173966ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[-138282],
    +    ],
    +    @Integer[89],
    +]
    +
    `,32),P=s("Note that here you use "),R=n("code",null,"Thread.currentThread().getContextClassLoader()",-1),N=s(" to load, and it is better to use the exact "),S=n("code",null,"classloader",-1),U=s(),$=s("ognl"),B=s("."),D=p(`

    Exclude the specified class

    TIP

    The watch/trace/monitor/stack/tt commands all support the --exclude-class-pattern parameter

    Use the --exclude-class-pattern parameter to exclude the specified class, for example:

    watch javax.servlet.Filter * --exclude-class-pattern com.demo.TestFilter
    +

    Does not match subclass

    By default, the watch/trace/monitor/stack/tt commands will match subclass. If you don't want to match, you can turn it off.

    options disable-sub-class true
    +

    Use the -v parameter to print more information

    The watch/trace/monitor/stack/tt commands all support the -v parameter.

    When the command is executed, there is no output result. There are two possibilities:

    1. The matched function is not executed
    2. The result of the conditional expression is false

    But the user cannot tell which situation is.

    Using the -v option, the specific value and execution result of Condition express will be printed for easy confirmation.

    such as:

    $ watch -v -x 2 demo.MathGame print 'params' 'params[0] > 100000'
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 29 ms, listenerId: 11
    +Condition express: params[0] > 100000 , result: false
    +Condition express: params[0] > 100000 , result: false
    +Condition express: params[0] > 100000 , result: true
    +ts=2020-12-02 22:38:56; [cost=0.060843ms] result=@Object[][
    +    @Integer[1],
    +    @ArrayList[
    +        @Integer[200033],
    +    ],
    +]
    +Condition express: params[0] > 100000 , result: true
    +ts=2020-12-02 22:38:57; [cost=0.052877ms] result=@Object[][
    +    @Integer[1],
    +    @ArrayList[
    +        @Integer[29],
    +        @Integer[4243],
    +    ],
    +]
    +
    `,15);function z(Q,V){const e=c("ExternalLinkIcon"),t=c("RouterLink");return l(),r("div",null,[d,n("p",null,[n("a",m,[k,v,a(e)])]),b,n("p",null,[h,n("a",g,[f,a(e)]),x]),_,n("ul",null,[n("li",null,[a(t,{to:"/en/doc/advice-class.html"},{default:o(()=>[y,w]),_:1})]),n("li",null,[n("a",I,[A,a(e)])]),n("li",null,[n("a",C,[G,a(e)])])]),j,M,n("p",null,[L,E,O,a(t,{to:"/en/doc/quick-start.html"},{default:o(()=>[F]),_:1}),q]),T,n("ul",null,[n("li",null,[P,R,N,S,U,a(t,{to:"/en/doc/ognl.html"},{default:o(()=>[$]),_:1}),B])]),D])}const Y=i(u,[["render",z],["__file","watch.html.vue"]]);export{Y as default}; diff --git a/3.x/assets/watch.html.3663bb24.js b/3.x/assets/watch.html.3663bb24.js new file mode 100644 index 00000000000..1b2d2910610 --- /dev/null +++ b/3.x/assets/watch.html.3663bb24.js @@ -0,0 +1 @@ +const l=JSON.parse('{"key":"v-24fc49da","path":"/doc/watch.html","title":"watch","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u53C2\u6570\u8BF4\u660E","slug":"\u53C2\u6570\u8BF4\u660E","link":"#\u53C2\u6570\u8BF4\u660E","children":[]},{"level":2,"title":"\u4F7F\u7528\u53C2\u8003","slug":"\u4F7F\u7528\u53C2\u8003","link":"#\u4F7F\u7528\u53C2\u8003","children":[{"level":3,"title":"\u542F\u52A8 Demo","slug":"\u542F\u52A8-demo","link":"#\u542F\u52A8-demo","children":[]},{"level":3,"title":"\u89C2\u5BDF\u51FD\u6570\u8C03\u7528\u8FD4\u56DE\u65F6\u7684\u53C2\u6570\u3001this \u5BF9\u8C61\u548C\u8FD4\u56DE\u503C","slug":"\u89C2\u5BDF\u51FD\u6570\u8C03\u7528\u8FD4\u56DE\u65F6\u7684\u53C2\u6570\u3001this-\u5BF9\u8C61\u548C\u8FD4\u56DE\u503C","link":"#\u89C2\u5BDF\u51FD\u6570\u8C03\u7528\u8FD4\u56DE\u65F6\u7684\u53C2\u6570\u3001this-\u5BF9\u8C61\u548C\u8FD4\u56DE\u503C","children":[]},{"level":3,"title":"\u6307\u5B9A Class \u6700\u5927\u5339\u914D\u6570\u91CF","slug":"\u6307\u5B9A-class-\u6700\u5927\u5339\u914D\u6570\u91CF","link":"#\u6307\u5B9A-class-\u6700\u5927\u5339\u914D\u6570\u91CF","children":[]},{"level":3,"title":"\u89C2\u5BDF\u51FD\u6570\u8C03\u7528\u5165\u53E3\u7684\u53C2\u6570\u548C\u8FD4\u56DE\u503C","slug":"\u89C2\u5BDF\u51FD\u6570\u8C03\u7528\u5165\u53E3\u7684\u53C2\u6570\u548C\u8FD4\u56DE\u503C","link":"#\u89C2\u5BDF\u51FD\u6570\u8C03\u7528\u5165\u53E3\u7684\u53C2\u6570\u548C\u8FD4\u56DE\u503C","children":[]},{"level":3,"title":"\u540C\u65F6\u89C2\u5BDF\u51FD\u6570\u8C03\u7528\u524D\u548C\u51FD\u6570\u8FD4\u56DE\u540E","slug":"\u540C\u65F6\u89C2\u5BDF\u51FD\u6570\u8C03\u7528\u524D\u548C\u51FD\u6570\u8FD4\u56DE\u540E","link":"#\u540C\u65F6\u89C2\u5BDF\u51FD\u6570\u8C03\u7528\u524D\u548C\u51FD\u6570\u8FD4\u56DE\u540E","children":[]},{"level":3,"title":"\u8C03\u6574-x\u7684\u503C\uFF0C\u89C2\u5BDF\u5177\u4F53\u7684\u51FD\u6570\u53C2\u6570\u503C","slug":"\u8C03\u6574-x\u7684\u503C-\u89C2\u5BDF\u5177\u4F53\u7684\u51FD\u6570\u53C2\u6570\u503C","link":"#\u8C03\u6574-x\u7684\u503C-\u89C2\u5BDF\u5177\u4F53\u7684\u51FD\u6570\u53C2\u6570\u503C","children":[]},{"level":3,"title":"\u6761\u4EF6\u8868\u8FBE\u5F0F\u7684\u4F8B\u5B50","slug":"\u6761\u4EF6\u8868\u8FBE\u5F0F\u7684\u4F8B\u5B50","link":"#\u6761\u4EF6\u8868\u8FBE\u5F0F\u7684\u4F8B\u5B50","children":[]},{"level":3,"title":"\u89C2\u5BDF\u5F02\u5E38\u4FE1\u606F\u7684\u4F8B\u5B50","slug":"\u89C2\u5BDF\u5F02\u5E38\u4FE1\u606F\u7684\u4F8B\u5B50","link":"#\u89C2\u5BDF\u5F02\u5E38\u4FE1\u606F\u7684\u4F8B\u5B50","children":[]},{"level":3,"title":"\u6309\u7167\u8017\u65F6\u8FDB\u884C\u8FC7\u6EE4","slug":"\u6309\u7167\u8017\u65F6\u8FDB\u884C\u8FC7\u6EE4","link":"#\u6309\u7167\u8017\u65F6\u8FDB\u884C\u8FC7\u6EE4","children":[]},{"level":3,"title":"\u89C2\u5BDF\u5F53\u524D\u5BF9\u8C61\u4E2D\u7684\u5C5E\u6027","slug":"\u89C2\u5BDF\u5F53\u524D\u5BF9\u8C61\u4E2D\u7684\u5C5E\u6027","link":"#\u89C2\u5BDF\u5F53\u524D\u5BF9\u8C61\u4E2D\u7684\u5C5E\u6027","children":[]},{"level":3,"title":"\u83B7\u53D6\u7C7B\u7684\u9759\u6001\u5B57\u6BB5\u3001\u8C03\u7528\u7C7B\u7684\u9759\u6001\u51FD\u6570\u7684\u4F8B\u5B50","slug":"\u83B7\u53D6\u7C7B\u7684\u9759\u6001\u5B57\u6BB5\u3001\u8C03\u7528\u7C7B\u7684\u9759\u6001\u51FD\u6570\u7684\u4F8B\u5B50","link":"#\u83B7\u53D6\u7C7B\u7684\u9759\u6001\u5B57\u6BB5\u3001\u8C03\u7528\u7C7B\u7684\u9759\u6001\u51FD\u6570\u7684\u4F8B\u5B50","children":[]},{"level":3,"title":"\u6392\u9664\u6389\u6307\u5B9A\u7684\u7C7B","slug":"\u6392\u9664\u6389\u6307\u5B9A\u7684\u7C7B","link":"#\u6392\u9664\u6389\u6307\u5B9A\u7684\u7C7B","children":[]},{"level":3,"title":"\u4E0D\u5339\u914D\u5B50\u7C7B","slug":"\u4E0D\u5339\u914D\u5B50\u7C7B","link":"#\u4E0D\u5339\u914D\u5B50\u7C7B","children":[]},{"level":3,"title":"\u4F7F\u7528 -v \u53C2\u6570\u6253\u5370\u66F4\u591A\u4FE1\u606F","slug":"\u4F7F\u7528-v-\u53C2\u6570\u6253\u5370\u66F4\u591A\u4FE1\u606F","link":"#\u4F7F\u7528-v-\u53C2\u6570\u6253\u5370\u66F4\u591A\u4FE1\u606F","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1},{"name":"pandaapo","email":"35672972+pandaapo@users.noreply.github.com","commits":1}]},"filePathRelative":"doc/watch.md","version":"3.7.3"}');export{l as data}; diff --git a/3.x/assets/watch.html.8b8293d0.js b/3.x/assets/watch.html.8b8293d0.js new file mode 100644 index 00000000000..7f47244bd96 --- /dev/null +++ b/3.x/assets/watch.html.8b8293d0.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-75a5aa24","path":"/en/doc/watch.html","title":"watch","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Parameters & Options","slug":"parameters-options","link":"#parameters-options","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[{"level":3,"title":"Start Demo","slug":"start-demo","link":"#start-demo","children":[]},{"level":3,"title":"Check the out parameters, this and return value","slug":"check-the-out-parameters-this-and-return-value","link":"#check-the-out-parameters-this-and-return-value","children":[]},{"level":3,"title":"Specify the max number of matched Classes","slug":"specify-the-max-number-of-matched-classes","link":"#specify-the-max-number-of-matched-classes","children":[]},{"level":3,"title":"Check in parameters","slug":"check-in-parameters","link":"#check-in-parameters","children":[]},{"level":3,"title":"Check before and after at the same time","slug":"check-before-and-after-at-the-same-time","link":"#check-before-and-after-at-the-same-time","children":[]},{"level":3,"title":"Use -x to check more details","slug":"use-x-to-check-more-details","link":"#use-x-to-check-more-details","children":[]},{"level":3,"title":"Use condition expressions to locate specific call","slug":"use-condition-expressions-to-locate-specific-call","link":"#use-condition-expressions-to-locate-specific-call","children":[]},{"level":3,"title":"Check exceptions","slug":"check-exceptions","link":"#check-exceptions","children":[]},{"level":3,"title":"Filter by time cost","slug":"filter-by-time-cost","link":"#filter-by-time-cost","children":[]},{"level":3,"title":"Check the field of the target object","slug":"check-the-field-of-the-target-object","link":"#check-the-field-of-the-target-object","children":[]},{"level":3,"title":"Get a static field and calling a static method","slug":"get-a-static-field-and-calling-a-static-method","link":"#get-a-static-field-and-calling-a-static-method","children":[]},{"level":3,"title":"Exclude the specified class","slug":"exclude-the-specified-class","link":"#exclude-the-specified-class","children":[]},{"level":3,"title":"Does not match subclass","slug":"does-not-match-subclass","link":"#does-not-match-subclass","children":[]},{"level":3,"title":"Use the -v parameter to print more information","slug":"use-the-v-parameter-to-print-more-information","link":"#use-the-v-parameter-to-print-more-information","children":[]}]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@users.noreply.github.com","commits":1},{"name":"pandaapo","email":"35672972+pandaapo@users.noreply.github.com","commits":1}]},"filePathRelative":"en/doc/watch.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/assets/watch.html.e73d5269.js b/3.x/assets/watch.html.e73d5269.js new file mode 100644 index 00000000000..52c28b6ddbc --- /dev/null +++ b/3.x/assets/watch.html.e73d5269.js @@ -0,0 +1,188 @@ +import{_ as c,o as i,c as r,a as s,b as a,w as o,e as n,d as e,r as l}from"./app.4d248835.js";const u={},d=s("h1",{id:"watch",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#watch","aria-hidden":"true"},"#"),n(" watch")],-1),k={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=command-watch",target:"_blank",rel:"noopener noreferrer"},m=s("code",null,"watch",-1),v=n("\u5728\u7EBF\u6559\u7A0B"),b=e('

    \u63D0\u793A

    \u51FD\u6570\u6267\u884C\u6570\u636E\u89C2\u6D4B

    \u8BA9\u4F60\u80FD\u65B9\u4FBF\u7684\u89C2\u5BDF\u5230\u6307\u5B9A\u51FD\u6570\u7684\u8C03\u7528\u60C5\u51B5\u3002\u80FD\u89C2\u5BDF\u5230\u7684\u8303\u56F4\u4E3A\uFF1A\u8FD4\u56DE\u503C\u3001\u629B\u51FA\u5F02\u5E38\u3001\u5165\u53C2\uFF0C\u901A\u8FC7\u7F16\u5199 OGNL \u8868\u8FBE\u5F0F\u8FDB\u884C\u5BF9\u5E94\u53D8\u91CF\u7684\u67E5\u770B\u3002

    \u53C2\u6570\u8BF4\u660E

    watch \u7684\u53C2\u6570\u6BD4\u8F83\u591A\uFF0C\u4E3B\u8981\u662F\u56E0\u4E3A\u5B83\u80FD\u5728 4 \u4E2A\u4E0D\u540C\u7684\u573A\u666F\u89C2\u5BDF\u5BF9\u8C61

    \u53C2\u6570\u540D\u79F0\u53C2\u6570\u8BF4\u660E
    class-pattern\u7C7B\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    method-pattern\u51FD\u6570\u540D\u8868\u8FBE\u5F0F\u5339\u914D
    express\u89C2\u5BDF\u8868\u8FBE\u5F0F\uFF0C\u9ED8\u8BA4\u503C\uFF1A{params, target, returnObj}
    condition-express\u6761\u4EF6\u8868\u8FBE\u5F0F
    [b]\u5728\u51FD\u6570\u8C03\u7528\u4E4B\u524D\u89C2\u5BDF
    [e]\u5728\u51FD\u6570\u5F02\u5E38\u4E4B\u540E\u89C2\u5BDF
    [s]\u5728\u51FD\u6570\u8FD4\u56DE\u4E4B\u540E\u89C2\u5BDF
    [f]\u5728\u51FD\u6570\u7ED3\u675F\u4E4B\u540E(\u6B63\u5E38\u8FD4\u56DE\u548C\u5F02\u5E38\u8FD4\u56DE)\u89C2\u5BDF
    [E]\u5F00\u542F\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\uFF0C\u9ED8\u8BA4\u4E3A\u901A\u914D\u7B26\u5339\u914D
    [x:]\u6307\u5B9A\u8F93\u51FA\u7ED3\u679C\u7684\u5C5E\u6027\u904D\u5386\u6DF1\u5EA6\uFF0C\u9ED8\u8BA4\u4E3A 1\uFF0C\u6700\u5927\u503C\u662F 4
    [m <arg>]\u6307\u5B9A Class \u6700\u5927\u5339\u914D\u6570\u91CF\uFF0C\u9ED8\u8BA4\u503C\u4E3A 50\u3002\u957F\u683C\u5F0F\u4E3A[maxMatch <arg>]\u3002

    \u8FD9\u91CC\u91CD\u70B9\u8981\u8BF4\u660E\u7684\u662F\u89C2\u5BDF\u8868\u8FBE\u5F0F\uFF0C\u89C2\u5BDF\u8868\u8FBE\u5F0F\u7684\u6784\u6210\u4E3B\u8981\u7531 ognl \u8868\u8FBE\u5F0F\u7EC4\u6210\uFF0C\u6240\u4EE5\u4F60\u53EF\u4EE5\u8FD9\u6837\u5199"{params,returnObj}"\uFF0C\u53EA\u8981\u662F\u4E00\u4E2A\u5408\u6CD5\u7684 ognl \u8868\u8FBE\u5F0F\uFF0C\u90FD\u80FD\u88AB\u6B63\u5E38\u652F\u6301\u3002

    ',6),h=n("\u89C2\u5BDF\u7684\u7EF4\u5EA6\u4E5F\u6BD4\u8F83\u591A\uFF0C\u4E3B\u8981\u4F53\u73B0\u5728\u53C2\u6570 "),g=s("code",null,"advice",-1),f=n(" \u7684\u6570\u636E\u7ED3\u6784\u4E0A\u3002"),x=s("code",null,"Advice",-1),_=n(" \u53C2\u6570\u6700\u4E3B\u8981\u662F\u5C01\u88C5\u4E86\u901A\u77E5\u8282\u70B9\u7684\u6240\u6709\u4FE1\u606F\u3002\u8BF7\u53C2\u8003"),y=n("\u8868\u8FBE\u5F0F\u6838\u5FC3\u53D8\u91CF"),A=n("\u4E2D\u5173\u4E8E\u8BE5\u8282\u70B9\u7684\u63CF\u8FF0\u3002"),I=n("\u7279\u6B8A\u7528\u6CD5\u8BF7\u53C2\u8003\uFF1A"),w={href:"https://github.com/alibaba/arthas/issues/71",target:"_blank",rel:"noopener noreferrer"},C=n("https://github.com/alibaba/arthas/issues/71"),G=n("OGNL \u8868\u8FBE\u5F0F\u5B98\u7F51\uFF1A"),M={href:"https://commons.apache.org/proper/commons-ognl/language-guide.html",target:"_blank",rel:"noopener noreferrer"},L=n("https://commons.apache.org/proper/commons-ognl/language-guide.html"),j=e('

    \u7279\u522B\u8BF4\u660E\uFF1A

    • watch \u547D\u4EE4\u5B9A\u4E49\u4E86 4 \u4E2A\u89C2\u5BDF\u4E8B\u4EF6\u70B9\uFF0C\u5373 -b \u51FD\u6570\u8C03\u7528\u524D\uFF0C-e \u51FD\u6570\u5F02\u5E38\u540E\uFF0C-s \u51FD\u6570\u8FD4\u56DE\u540E\uFF0C-f \u51FD\u6570\u7ED3\u675F\u540E
    • 4 \u4E2A\u89C2\u5BDF\u4E8B\u4EF6\u70B9 -b\u3001-e\u3001-s \u9ED8\u8BA4\u5173\u95ED\uFF0C-f \u9ED8\u8BA4\u6253\u5F00\uFF0C\u5F53\u6307\u5B9A\u89C2\u5BDF\u70B9\u88AB\u6253\u5F00\u540E\uFF0C\u5728\u76F8\u5E94\u4E8B\u4EF6\u70B9\u4F1A\u5BF9\u89C2\u5BDF\u8868\u8FBE\u5F0F\u8FDB\u884C\u6C42\u503C\u5E76\u8F93\u51FA
    • \u8FD9\u91CC\u8981\u6CE8\u610F\u51FD\u6570\u5165\u53C2\u548C\u51FD\u6570\u51FA\u53C2\u7684\u533A\u522B\uFF0C\u6709\u53EF\u80FD\u5728\u4E2D\u95F4\u88AB\u4FEE\u6539\u5BFC\u81F4\u524D\u540E\u4E0D\u4E00\u81F4\uFF0C\u9664\u4E86 -b \u4E8B\u4EF6\u70B9 params \u4EE3\u8868\u51FD\u6570\u5165\u53C2\u5916\uFF0C\u5176\u4F59\u4E8B\u4EF6\u90FD\u4EE3\u8868\u51FD\u6570\u51FA\u53C2
    • \u5F53\u4F7F\u7528 -b \u65F6\uFF0C\u7531\u4E8E\u89C2\u5BDF\u4E8B\u4EF6\u70B9\u662F\u5728\u51FD\u6570\u8C03\u7528\u524D\uFF0C\u6B64\u65F6\u8FD4\u56DE\u503C\u6216\u5F02\u5E38\u5747\u4E0D\u5B58\u5728
    • \u5728 watch \u547D\u4EE4\u7684\u7ED3\u679C\u91CC\uFF0C\u4F1A\u6253\u5370\u51FAlocation\u4FE1\u606F\u3002location\u6709\u4E09\u79CD\u53EF\u80FD\u503C\uFF1AAtEnter\uFF0CAtExit\uFF0CAtExceptionExit\u3002\u5BF9\u5E94\u51FD\u6570\u5165\u53E3\uFF0C\u51FD\u6570\u6B63\u5E38 return\uFF0C\u51FD\u6570\u629B\u51FA\u5F02\u5E38\u3002

    \u4F7F\u7528\u53C2\u8003

    \u542F\u52A8 Demo

    ',4),E=n("\u542F\u52A8"),O=n("\u5FEB\u901F\u5165\u95E8"),F=n("\u91CC\u7684"),q=s("code",null,"math-game",-1),R=n("\u3002"),P=e(`

    \u89C2\u5BDF\u51FD\u6570\u8C03\u7528\u8FD4\u56DE\u65F6\u7684\u53C2\u6570\u3001this \u5BF9\u8C61\u548C\u8FD4\u56DE\u503C

    \u63D0\u793A

    \u89C2\u5BDF\u8868\u8FBE\u5F0F\uFF0C\u9ED8\u8BA4\u503C\u662F{params, target, returnObj}

    $ watch demo.MathGame primeFactors -x 2
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 32 ms, listenerId: 5
    +method=demo.MathGame.primeFactors location=AtExceptionExit
    +ts=2021-08-31 15:22:57; [cost=0.220625ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[-179173],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@31cefde0],
    +        illegalArgumentCount=@Integer[44],
    +    ],
    +    null,
    +]
    +method=demo.MathGame.primeFactors location=AtExit
    +ts=2021-08-31 15:22:58; [cost=1.020982ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@31cefde0],
    +        illegalArgumentCount=@Integer[44],
    +    ],
    +    @ArrayList[
    +        @Integer[2],
    +        @Integer[2],
    +        @Integer[26947],
    +    ],
    +]
    +
    • \u4E0A\u9762\u7684\u7ED3\u679C\u91CC\uFF0C\u8BF4\u660E\u51FD\u6570\u88AB\u6267\u884C\u4E86\u4E24\u6B21\uFF0C\u7B2C\u4E00\u6B21\u7ED3\u679C\u662Flocation=AtExceptionExit\uFF0C\u8BF4\u660E\u51FD\u6570\u629B\u51FA\u5F02\u5E38\u4E86\uFF0C\u56E0\u6B64returnObj\u662F null
    • \u5728\u7B2C\u4E8C\u6B21\u7ED3\u679C\u91CC\u662Flocation=AtExit\uFF0C\u8BF4\u660E\u51FD\u6570\u6B63\u5E38\u8FD4\u56DE\uFF0C\u56E0\u6B64\u53EF\u4EE5\u770B\u5230returnObj\u7ED3\u679C\u662F\u4E00\u4E2A ArrayList

    \u6307\u5B9A Class \u6700\u5927\u5339\u914D\u6570\u91CF

    $ watch demo.MathGame primeFactors -m 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 302 ms, listenerId: 3
    +method=demo.MathGame.primeFactors location=AtExceptionExit
    +ts=2022-12-25 19:58:41; [cost=0.222419ms] result=@ArrayList[
    +    @Object[][isEmpty=false;size=1],
    +    @MathGame[demo.MathGame@3bf400],
    +    null,
    +]
    +method=demo.MathGame.primeFactors location=AtExceptionExit
    +ts=2022-12-25 19:58:51; [cost=0.046928ms] result=@ArrayList[
    +    @Object[][isEmpty=false;size=1],
    +    @MathGame[demo.MathGame@3bf400],
    +    null,
    +]
    +

    \u89C2\u5BDF\u51FD\u6570\u8C03\u7528\u5165\u53E3\u7684\u53C2\u6570\u548C\u8FD4\u56DE\u503C

    $ watch demo.MathGame primeFactors "{params,returnObj}" -x 2 -b
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 50 ms.
    +ts=2018-12-03 19:23:23; [cost=0.0353ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[-1077465243],
    +    ],
    +    null,
    +]
    +
    • \u5BF9\u6BD4\u524D\u4E00\u4E2A\u4F8B\u5B50\uFF0C\u8FD4\u56DE\u503C\u4E3A\u7A7A\uFF08\u4E8B\u4EF6\u70B9\u4E3A\u51FD\u6570\u6267\u884C\u524D\uFF0C\u56E0\u6B64\u83B7\u53D6\u4E0D\u5230\u8FD4\u56DE\u503C\uFF09

    \u540C\u65F6\u89C2\u5BDF\u51FD\u6570\u8C03\u7528\u524D\u548C\u51FD\u6570\u8FD4\u56DE\u540E

    $ watch demo.MathGame primeFactors "{params,target,returnObj}" -x 2 -b -s -n 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 46 ms.
    +ts=2018-12-03 19:29:54; [cost=0.01696ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@522b408a],
    +        illegalArgumentCount=@Integer[13038],
    +    ],
    +    null,
    +]
    +ts=2018-12-03 19:29:54; [cost=4.277392ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@522b408a],
    +        illegalArgumentCount=@Integer[13038],
    +    ],
    +    @ArrayList[
    +        @Integer[2],
    +        @Integer[2],
    +        @Integer[2],
    +        @Integer[5],
    +        @Integer[5],
    +        @Integer[73],
    +        @Integer[241],
    +        @Integer[439],
    +    ],
    +]
    +
    • \u53C2\u6570\u91CC-n 2\uFF0C\u8868\u793A\u53EA\u6267\u884C\u4E24\u6B21

    • \u8FD9\u91CC\u8F93\u51FA\u7ED3\u679C\u4E2D\uFF0C\u7B2C\u4E00\u6B21\u8F93\u51FA\u7684\u662F\u51FD\u6570\u8C03\u7528\u524D\u7684\u89C2\u5BDF\u8868\u8FBE\u5F0F\u7684\u7ED3\u679C\uFF0C\u7B2C\u4E8C\u6B21\u8F93\u51FA\u7684\u662F\u51FD\u6570\u8FD4\u56DE\u540E\u7684\u8868\u8FBE\u5F0F\u7684\u7ED3\u679C

    • \u7ED3\u679C\u7684\u8F93\u51FA\u987A\u5E8F\u548C\u4E8B\u4EF6\u53D1\u751F\u7684\u5148\u540E\u987A\u5E8F\u4E00\u81F4\uFF0C\u548C\u547D\u4EE4\u4E2D -s -b \u7684\u987A\u5E8F\u65E0\u5173

    \u8C03\u6574-x\u7684\u503C\uFF0C\u89C2\u5BDF\u5177\u4F53\u7684\u51FD\u6570\u53C2\u6570\u503C

    $ watch demo.MathGame primeFactors "{params,target}" -x 3
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 58 ms.
    +ts=2018-12-03 19:34:19; [cost=0.587833ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[
    +            serialVersionUID=@Long[3905348978240129619],
    +            seed=@AtomicLong[3133719055989],
    +            multiplier=@Long[25214903917],
    +            addend=@Long[11],
    +            mask=@Long[281474976710655],
    +            DOUBLE_UNIT=@Double[1.1102230246251565E-16],
    +            BadBound=@String[bound must be positive],
    +            BadRange=@String[bound must be greater than origin],
    +            BadSize=@String[size must be non-negative],
    +            seedUniquifier=@AtomicLong[-3282039941672302964],
    +            nextNextGaussian=@Double[0.0],
    +            haveNextNextGaussian=@Boolean[false],
    +            serialPersistentFields=@ObjectStreamField[][isEmpty=false;size=3],
    +            unsafe=@Unsafe[sun.misc.Unsafe@2eaa1027],
    +            seedOffset=@Long[24],
    +        ],
    +        illegalArgumentCount=@Integer[13159],
    +    ],
    +]
    +
    • -x\u8868\u793A\u904D\u5386\u6DF1\u5EA6\uFF0C\u53EF\u4EE5\u8C03\u6574\u6765\u6253\u5370\u5177\u4F53\u7684\u53C2\u6570\u548C\u7ED3\u679C\u5185\u5BB9\uFF0C\u9ED8\u8BA4\u503C\u662F 1\u3002
    • -x\u6700\u5927\u503C\u662F 4\uFF0C\u9632\u6B62\u5C55\u5F00\u7ED3\u679C\u5360\u7528\u592A\u591A\u5185\u5B58\u3002\u7528\u6237\u53EF\u4EE5\u5728ognl\u8868\u8FBE\u5F0F\u91CC\u6307\u5B9A\u66F4\u5177\u4F53\u7684 field\u3002

    \u6761\u4EF6\u8868\u8FBE\u5F0F\u7684\u4F8B\u5B50

    $ watch demo.MathGame primeFactors "{params[0],target}" "params[0]<0"
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 68 ms.
    +ts=2018-12-03 19:36:04; [cost=0.530255ms] result=@ArrayList[
    +    @Integer[-18178089],
    +    @MathGame[demo.MathGame@41cf53f9],
    +]
    +
    • \u53EA\u6709\u6EE1\u8DB3\u6761\u4EF6\u7684\u8C03\u7528\uFF0C\u624D\u4F1A\u6709\u54CD\u5E94\u3002

    \u89C2\u5BDF\u5F02\u5E38\u4FE1\u606F\u7684\u4F8B\u5B50

    $ watch demo.MathGame primeFactors "{params[0],throwExp}" -e -x 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 62 ms.
    +ts=2018-12-03 19:38:00; [cost=1.414993ms] result=@ArrayList[
    +    @Integer[-1120397038],
    +    java.lang.IllegalArgumentException: number is: -1120397038, need >= 2
    +	at demo.MathGame.primeFactors(MathGame.java:46)
    +	at demo.MathGame.run(MathGame.java:24)
    +	at demo.MathGame.main(MathGame.java:16)
    +,
    +]
    +
    • -e\u8868\u793A\u629B\u51FA\u5F02\u5E38\u65F6\u624D\u89E6\u53D1
    • express \u4E2D\uFF0C\u8868\u793A\u5F02\u5E38\u4FE1\u606F\u7684\u53D8\u91CF\u662FthrowExp

    \u6309\u7167\u8017\u65F6\u8FDB\u884C\u8FC7\u6EE4

    $ watch demo.MathGame primeFactors '{params, returnObj}' '#cost>200' -x 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 66 ms.
    +ts=2018-12-03 19:40:28; [cost=2112.168897ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @ArrayList[
    +        @Integer[5],
    +        @Integer[428379493],
    +    ],
    +]
    +
    • #cost>200(\u5355\u4F4D\u662Fms)\u8868\u793A\u53EA\u6709\u5F53\u8017\u65F6\u5927\u4E8E 200ms \u65F6\u624D\u4F1A\u8F93\u51FA\uFF0C\u8FC7\u6EE4\u6389\u6267\u884C\u65F6\u95F4\u5C0F\u4E8E 200ms \u7684\u8C03\u7528

    \u89C2\u5BDF\u5F53\u524D\u5BF9\u8C61\u4E2D\u7684\u5C5E\u6027

    \u5982\u679C\u60F3\u67E5\u770B\u51FD\u6570\u8FD0\u884C\u524D\u540E\uFF0C\u5F53\u524D\u5BF9\u8C61\u4E2D\u7684\u5C5E\u6027\uFF0C\u53EF\u4EE5\u4F7F\u7528target\u5173\u952E\u5B57\uFF0C\u4EE3\u8868\u5F53\u524D\u5BF9\u8C61

    $ watch demo.MathGame primeFactors 'target'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 52 ms.
    +ts=2018-12-03 19:41:52; [cost=0.477882ms] result=@MathGame[
    +    random=@Random[java.util.Random@522b408a],
    +    illegalArgumentCount=@Integer[13355],
    +]
    +

    \u7136\u540E\u4F7F\u7528target.field_name\u8BBF\u95EE\u5F53\u524D\u5BF9\u8C61\u7684\u67D0\u4E2A\u5C5E\u6027

    $ watch demo.MathGame primeFactors 'target.illegalArgumentCount'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 67 ms.
    +ts=2018-12-03 20:04:34; [cost=131.303498ms] result=@Integer[8]
    +ts=2018-12-03 20:04:35; [cost=0.961441ms] result=@Integer[8]
    +

    \u83B7\u53D6\u7C7B\u7684\u9759\u6001\u5B57\u6BB5\u3001\u8C03\u7528\u7C7B\u7684\u9759\u6001\u51FD\u6570\u7684\u4F8B\u5B50

    watch demo.MathGame * '{params,@demo.MathGame@random.nextInt(100)}' -v -n 1 -x 2
    +[arthas@6527]$ watch demo.MathGame * '{params,@demo.MathGame@random.nextInt(100)}' -n 1 -x 2
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 5) cost in 34 ms, listenerId: 3
    +ts=2021-01-05 21:35:20; [cost=0.173966ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[-138282],
    +    ],
    +    @Integer[89],
    +]
    +
    `,31),$=n("\u6CE8\u610F\u8FD9\u91CC\u4F7F\u7528 "),N=s("code",null,"Thread.currentThread().getContextClassLoader()",-1),B=n(" \u52A0\u8F7D,\u4F7F\u7528\u7CBE\u786E"),S=s("code",null,"classloader",-1),U=n(),z=n("ognl"),D=n("\u66F4\u597D\u3002"),T=e(`

    \u6392\u9664\u6389\u6307\u5B9A\u7684\u7C7B

    \u63D0\u793A

    watch/trace/monitor/stack/tt \u547D\u4EE4\u90FD\u652F\u6301 --exclude-class-pattern \u53C2\u6570

    \u4F7F\u7528 --exclude-class-pattern \u53C2\u6570\u53EF\u4EE5\u6392\u9664\u6389\u6307\u5B9A\u7684\u7C7B\uFF0C\u6BD4\u5982\uFF1A

    watch javax.servlet.Filter * --exclude-class-pattern com.demo.TestFilter
    +

    \u4E0D\u5339\u914D\u5B50\u7C7B

    \u9ED8\u8BA4\u60C5\u51B5\u4E0B watch/trace/monitor/stack/tt \u547D\u4EE4\u90FD\u4F1A\u5339\u914D\u5B50\u7C7B\u3002\u5982\u679C\u60F3\u4E0D\u5339\u914D\uFF0C\u53EF\u4EE5\u901A\u8FC7\u5168\u5C40\u53C2\u6570\u5173\u6389\u3002

    options disable-sub-class true
    +

    \u4F7F\u7528 -v \u53C2\u6570\u6253\u5370\u66F4\u591A\u4FE1\u606F

    \u63D0\u793A

    watch/trace/monitor/stack/tt \u547D\u4EE4\u90FD\u652F\u6301 -v \u53C2\u6570

    \u5F53\u547D\u4EE4\u6267\u884C\u4E4B\u540E\uFF0C\u6CA1\u6709\u8F93\u51FA\u7ED3\u679C\u3002\u6709\u4E24\u79CD\u53EF\u80FD\uFF1A

    1. \u5339\u914D\u5230\u7684\u51FD\u6570\u6CA1\u6709\u88AB\u6267\u884C
    2. \u6761\u4EF6\u8868\u8FBE\u5F0F\u7ED3\u679C\u662F false

    \u4F46\u7528\u6237\u533A\u5206\u4E0D\u51FA\u662F\u54EA\u79CD\u60C5\u51B5\u3002

    \u4F7F\u7528 -v\u9009\u9879\uFF0C\u5219\u4F1A\u6253\u5370Condition express\u7684\u5177\u4F53\u503C\u548C\u6267\u884C\u7ED3\u679C\uFF0C\u65B9\u4FBF\u786E\u8BA4\u3002

    \u6BD4\u5982\uFF1A

    $ watch -v -x 2 demo.MathGame print 'params' 'params[0] > 100000'
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 29 ms, listenerId: 11
    +Condition express: params[0] > 100000 , result: false
    +Condition express: params[0] > 100000 , result: false
    +Condition express: params[0] > 100000 , result: true
    +ts=2020-12-02 22:38:56; [cost=0.060843ms] result=@Object[][
    +    @Integer[200033],
    +    @ArrayList[
    +        @Integer[200033],
    +    ],
    +]
    +Condition express: params[0] > 100000 , result: true
    +ts=2020-12-02 22:38:57; [cost=0.052877ms] result=@Object[][
    +    @Integer[123047],
    +    @ArrayList[
    +        @Integer[29],
    +        @Integer[4243],
    +    ],
    +]
    +
    `,15);function V(Q,H){const t=l("ExternalLinkIcon"),p=l("RouterLink");return i(),r("div",null,[d,s("p",null,[s("a",k,[m,v,a(t)])]),b,s("p",null,[h,g,f,x,_,a(p,{to:"/doc/advice-class.html"},{default:o(()=>[y]),_:1}),A]),s("ul",null,[s("li",null,[I,s("a",w,[C,a(t)])]),s("li",null,[G,s("a",M,[L,a(t)])])]),j,s("p",null,[E,a(p,{to:"/doc/quick-start.html"},{default:o(()=>[O]),_:1}),F,q,R]),P,s("ul",null,[s("li",null,[$,N,B,S,U,a(p,{to:"/doc/ognl.html"},{default:o(()=>[z]),_:1}),D])]),T])}const K=c(u,[["render",V],["__file","watch.html.vue"]]);export{K as default}; diff --git a/3.x/assets/web-console-local.156ba0ce.js b/3.x/assets/web-console-local.156ba0ce.js new file mode 100644 index 00000000000..fa091606806 --- /dev/null +++ b/3.x/assets/web-console-local.156ba0ce.js @@ -0,0 +1 @@ +const o="/3.x/images/web-console-local.png";export{o as _}; diff --git a/3.x/assets/web-console.html.8f3242b3.js b/3.x/assets/web-console.html.8f3242b3.js new file mode 100644 index 00000000000..62a30ff5e34 --- /dev/null +++ b/3.x/assets/web-console.html.8f3242b3.js @@ -0,0 +1 @@ +const a=JSON.parse('{"key":"v-a5f6e7aa","path":"/doc/web-console.html","title":"Web Console","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"\u901A\u8FC7\u6D4F\u89C8\u5668\u8FDE\u63A5 arthas","slug":"\u901A\u8FC7\u6D4F\u89C8\u5668\u8FDE\u63A5-arthas","link":"#\u901A\u8FC7\u6D4F\u89C8\u5668\u8FDE\u63A5-arthas","children":[]},{"level":2,"title":"scrollback URL \u53C2\u6570","slug":"scrollback-url-\u53C2\u6570","link":"#scrollback-url-\u53C2\u6570","children":[]},{"level":2,"title":"\u4F7F\u7528 arthas tunnel server \u8FDE\u63A5\u8FDC\u7A0B arthas","slug":"\u4F7F\u7528-arthas-tunnel-server-\u8FDE\u63A5\u8FDC\u7A0B-arthas","link":"#\u4F7F\u7528-arthas-tunnel-server-\u8FDE\u63A5\u8FDC\u7A0B-arthas","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"doc/web-console.md","version":"3.7.3"}');export{a as data}; diff --git a/3.x/assets/web-console.html.a124c728.js b/3.x/assets/web-console.html.a124c728.js new file mode 100644 index 00000000000..a24d31722b1 --- /dev/null +++ b/3.x/assets/web-console.html.a124c728.js @@ -0,0 +1 @@ +import{_ as r}from"./web-console-local.156ba0ce.js";import{_ as c,o as h,c as l,a as e,b as o,w as i,e as t,d,r as a}from"./app.4d248835.js";const u={},_=e("h1",{id:"web-console",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#web-console","aria-hidden":"true"},"#"),t(" Web Console")],-1),p={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=en&id=case-web-console",target:"_blank",rel:"noopener noreferrer"},b=e("code",null,"Web Console",-1),m=t(" online tutorial"),f=e("h2",{id:"connect-arthas-through-the-browser",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#connect-arthas-through-the-browser","aria-hidden":"true"},"#"),t(" Connect arthas through the browser")],-1),g=t("Arthas supports the Web Console. After attach success, the user can access: "),k={href:"http://127.0.0.1:8563/",target:"_blank",rel:"noopener noreferrer"},w=t("http://127.0.0.1:8563/"),v=t("."),x=e("p",null,"The user can fill in the IP and connect the remote arthas on other machines.",-1),C=e("p",null,[e("img",{src:r,alt:""})],-1),y=e("div",{class:"custom-container warning"},[e("p",{class:"custom-container-title"},"WARNING"),e("p",null,[t("By default, arthas only listens to "),e("code",null,"127.0.0.1"),t(", so if you want to connect from a remote, you can use the "),e("code",null,"--target-ip"),t(" parameter to specify the IP. See the help description for "),e("code",null,"-h"),t(" for more information.")])],-1),I=t("If you have suggestions for the Web Console, please leave a message here: "),W={href:"https://github.com/alibaba/arthas/issues/15",target:"_blank",rel:"noopener noreferrer"},L=t("https://github.com/alibaba/arthas/issues/15"),N=t("Copy and paste shortcut keys in Web Console: "),R={href:"https://github.com/alibaba/arthas/issues/1056",target:"_blank",rel:"noopener noreferrer"},B=t("https://github.com/alibaba/arthas/issues/1056"),T=d('

    TIP

    Since 3.5.4, you can right-click to copy and paste in the Web Console.

    scrollback URL parameters

    TIP

    Since 3.5.5

    By default, the number of rows that the Web Console supports to roll back upwards is 1000. It can be specified with scrollback in the URL. for example

    ',4),A={href:"http://127.0.0.1:8563/?scrollback=3000",target:"_blank",rel:"noopener noreferrer"},P=t("http://127.0.0.1:8563/?scrollback=3000"),S=e("h2",{id:"connect-remote-arthas-through-arthas-tunnel-server",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#connect-remote-arthas-through-arthas-tunnel-server","aria-hidden":"true"},"#"),t(" Connect remote arthas through arthas tunnel server")],-1),V=t("Reference: "),E=t("Arthas Tunnel");function U(G,j){const s=a("ExternalLinkIcon"),n=a("RouterLink");return h(),l("div",null,[_,e("p",null,[e("a",p,[b,m,o(s)])]),f,e("p",null,[g,e("a",k,[w,o(s)]),v]),x,C,y,e("p",null,[I,e("a",W,[L,o(s)])]),e("ul",null,[e("li",null,[N,e("a",R,[B,o(s)])])]),T,e("p",null,[e("a",A,[P,o(s)])]),S,e("p",null,[V,o(n,{to:"/en/doc/tunnel.html"},{default:i(()=>[E]),_:1})])])}const D=c(u,[["render",U],["__file","web-console.html.vue"]]);export{D as default}; diff --git a/3.x/assets/web-console.html.ad1a9f26.js b/3.x/assets/web-console.html.ad1a9f26.js new file mode 100644 index 00000000000..4ab047fd5a4 --- /dev/null +++ b/3.x/assets/web-console.html.ad1a9f26.js @@ -0,0 +1 @@ +import{_ as r}from"./web-console-local.156ba0ce.js";import{_ as c,o as l,c as i,a as e,b as o,w as h,e as t,d as _,r as a}from"./app.4d248835.js";const d={},u=e("h1",{id:"web-console",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#web-console","aria-hidden":"true"},"#"),t(" Web Console")],-1),p={href:"https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html?language=cn&id=case-web-console",target:"_blank",rel:"noopener noreferrer"},b=e("code",null,"Web Console",-1),m=t("\u5728\u7EBF\u6559\u7A0B"),f=e("h2",{id:"\u901A\u8FC7\u6D4F\u89C8\u5668\u8FDE\u63A5-arthas",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u901A\u8FC7\u6D4F\u89C8\u5668\u8FDE\u63A5-arthas","aria-hidden":"true"},"#"),t(" \u901A\u8FC7\u6D4F\u89C8\u5668\u8FDE\u63A5 arthas")],-1),k=t("Arthas \u76EE\u524D\u652F\u6301 Web Console\uFF0C\u7528\u6237\u5728 attach \u6210\u529F\u4E4B\u540E\uFF0C\u53EF\u4EE5\u76F4\u63A5\u8BBF\u95EE\uFF1A"),v={href:"http://127.0.0.1:8563/",target:"_blank",rel:"noopener noreferrer"},x=t("http://127.0.0.1:8563/"),g=t("\u3002"),C=e("p",null,"\u53EF\u4EE5\u586B\u5165 IP\uFF0C\u8FDC\u7A0B\u8FDE\u63A5\u5176\u5B83\u673A\u5668\u4E0A\u7684 arthas\u3002",-1),w=e("p",null,[e("img",{src:r,alt:""})],-1),L=e("div",{class:"custom-container warning"},[e("p",{class:"custom-container-title"},"\u6CE8\u610F"),e("p",null,[t("\u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0Carthas \u53EA listen 127.0.0.1\uFF0C\u6240\u4EE5\u5982\u679C\u60F3\u4ECE\u8FDC\u7A0B\u8FDE\u63A5\uFF0C\u5219\u53EF\u4EE5\u4F7F\u7528 "),e("code",null,"--target-ip"),t("\u53C2\u6570\u6307\u5B9A listen \u7684 IP\uFF0C\u66F4\u591A\u53C2\u8003"),e("code",null,"-h"),t("\u7684\u5E2E\u52A9\u8BF4\u660E\u3002 \u6CE8\u610F\u4F1A\u6709\u5B89\u5168\u98CE\u9669\uFF0C\u8003\u8651\u4E0B\u9762\u7684 tunnel server \u7684\u65B9\u6848\u3002")])],-1),W=t("\u5728 Web Console \u590D\u5236\u7C98\u8D34\u5FEB\u6377\u952E\u53C2\u8003\uFF1A "),I={href:"https://github.com/alibaba/arthas/issues/1056",target:"_blank",rel:"noopener noreferrer"},N=t("https://github.com/alibaba/arthas/issues/1056"),R=_('

    \u63D0\u793A

    3.5.4 \u7248\u672C\u540E\uFF0C\u5728 Web Console \u53EF\u4EE5\u9F20\u6807\u53F3\u952E\u590D\u5236\u7C98\u8D34\u3002

    scrollback URL \u53C2\u6570

    \u63D0\u793A

    3.5.5 \u7248\u672C\u540E\u652F\u6301

    \u9ED8\u8BA4 Web Console \u652F\u6301\u5411\u4E0A\u56DE\u6EDA\u7684\u884C\u6570\u662F 1000\u3002\u53EF\u4EE5\u5728 URL \u91CC\u7528scrollback\u6307\u5B9A\u3002\u6BD4\u5982

    ',4),V={href:"http://127.0.0.1:8563/?scrollback=3000",target:"_blank",rel:"noopener noreferrer"},B=t("http://127.0.0.1:8563/?scrollback=3000"),E=e("h2",{id:"\u4F7F\u7528-arthas-tunnel-server-\u8FDE\u63A5\u8FDC\u7A0B-arthas",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#\u4F7F\u7528-arthas-tunnel-server-\u8FDE\u63A5\u8FDC\u7A0B-arthas","aria-hidden":"true"},"#"),t(" \u4F7F\u7528 arthas tunnel server \u8FDE\u63A5\u8FDC\u7A0B arthas")],-1),A=t("\u53C2\u8003\uFF1A"),P=t("Arthas Tunnel");function T(U,y){const s=a("ExternalLinkIcon"),n=a("RouterLink");return l(),i("div",null,[u,e("p",null,[e("a",p,[b,m,o(s)])]),f,e("p",null,[k,e("a",v,[x,o(s)]),g]),C,w,L,e("ul",null,[e("li",null,[W,e("a",I,[N,o(s)])])]),R,e("p",null,[e("a",V,[B,o(s)])]),E,e("p",null,[A,o(n,{to:"/doc/tunnel.html"},{default:h(()=>[P]),_:1})])])}const q=c(d,[["render",T],["__file","web-console.html.vue"]]);export{q as default}; diff --git a/3.x/assets/web-console.html.cea17e0f.js b/3.x/assets/web-console.html.cea17e0f.js new file mode 100644 index 00000000000..35238821478 --- /dev/null +++ b/3.x/assets/web-console.html.cea17e0f.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-35756382","path":"/en/doc/web-console.html","title":"Web Console","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Connect arthas through the browser","slug":"connect-arthas-through-the-browser","link":"#connect-arthas-through-the-browser","children":[]},{"level":2,"title":"scrollback URL parameters","slug":"scrollback-url-parameters","link":"#scrollback-url-parameters","children":[]},{"level":2,"title":"Connect remote arthas through arthas tunnel server","slug":"connect-remote-arthas-through-arthas-tunnel-server","link":"#connect-remote-arthas-through-arthas-tunnel-server","children":[]}],"git":{"updatedTime":1725176890000,"contributors":[{"name":"Fatpandac","email":"i@fatpandac.com","commits":1},{"name":"SiuHui","email":"anrun388@gmail.com","commits":1},{"name":"hengyunabc","email":"hengyunabc@gmail.com","commits":1}]},"filePathRelative":"en/doc/web-console.md","version":"3.7.3"}');export{e as data}; diff --git a/3.x/doc/advanced-use.html b/3.x/doc/advanced-use.html new file mode 100644 index 00000000000..a0f3cbb6ef3 --- /dev/null +++ b/3.x/doc/advanced-use.html @@ -0,0 +1,70 @@ + + + + + + + + + 其他特性 | arthas + + + + +
    目录

    其他特性

    Arthas 后台异步任务

    当需要排查一个问题,但是这个问题的出现时间不能确定,那我们就可以把检测命令挂在后台运行,并将保存到输出日志。

    执行结果存日志

    所有执行记录的结果完整保存在日志文件中,便于后续进行分析。

    Docker

    Arthas 在 docker 容器中使用配置参考。

    Web Console

    通过 websocket 连接 Arthas。

    Arthas Tunnel

    通过 Arthas Tunnel Server/Client 来远程管理/连接多个服务器下的Java服务。

    ognl 表达式用法

    IDEA Plugin

    IntelliJ IDEA 编译器中更加快捷构建 arhtas 命令。

    Arthas Properties

    Arthas 支持配置项参考。

    以 java agent 方式启动

    Arthas Spring Boot Starter

    随应用一起启动。

    HTTP API

    Http API 提供结构化的数据,支持更复杂的交互功能,方便自定义界面集成 arthas。

    批处理功能

    方便自定义脚本一次性批量运行多个命令,可结合 --select 参数可以指定进程名字一起使用。

    as3.sh 和 arthas-boot3 技巧

    • 通过select功能选择 attach 的进程。

    正常情况下,每次执行as3.sh/arthas-boot3.jar需要选择,或者指定 PID。这样会比较麻烦,因为每次启动应用,它的 PID 会变化。

    比如,已经启动了math-game.jar,使用jps命令查看:

    $ jps
    +58883 math-game.jar
    +58884 Jps
    +

    通过select参数可以指定进程名字,非常方便。

    $ ./as3.sh --select math-game
    +Arthas script version: 3.3.6
    +[INFO] JAVA_HOME: /tmp/java/8.0.222-zulu
    +Arthas home: /Users/admin/.arthas/lib/3.3.6/arthas
    +Calculating attach execution time...
    +Attaching to 59161 using version /Users/admin/.arthas/lib/3.3.6/arthas...
    +
    +real	0m0.572s
    +user	0m0.281s
    +sys	0m0.039s
    +Attach success.
    +telnet connecting to arthas server... current timestamp is 1594280799
    +Trying 127.0.0.1...
    +Connected to localhost.
    +Escape character is '^]'.
    +  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
    +|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
    +`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'
    +
    +
    +wiki      https://arthas.aliyun.com/3.x/doc
    +tutorials https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html
    +version   3.3.6
    +pid       58883
    +

    用户数据回报

    3.1.4版本后,增加了用户数据回报功能,方便统一做安全或者历史数据统计。

    在启动时,指定stat-url,就会回报执行的每一行命令,比如: ./as3.sh --stat-url 'http://192.168.10.11:8080/api/stat'

    在 tunnel server 里有一个示例的回报代码,用户可以自己在服务器上实现。

    StatController.java在新窗口打开

    + + + diff --git a/3.x/doc/advice-class.html b/3.x/doc/advice-class.html new file mode 100644 index 00000000000..c843d8ce98b --- /dev/null +++ b/3.x/doc/advice-class.html @@ -0,0 +1,56 @@ + + + + + + + + + 表达式核心变量 | arthas + + + + +

    表达式核心变量

    无论是匹配表达式也好、观察表达式也罢,他们核心判断变量都是围绕着一个 Arthas 中的通用通知对象 Advice 进行。

    它的简略代码结构如下

    public class Advice {
    +
    +    private final ClassLoader loader;
    +    private final Class<?> clazz;
    +    private final ArthasMethod method;
    +    private final Object target;
    +    private final Object[] params;
    +    private final Object returnObj;
    +    private final Throwable throwExp;
    +    private final boolean isBefore;
    +    private final boolean isThrow;
    +    private final boolean isReturn;
    +
    +    // getter/setter
    +}
    +

    这里列一个表格来说明不同变量的含义

    变量名变量解释
    loader本次调用类所在的 ClassLoader
    clazz本次调用类的 Class 引用
    method本次调用方法反射引用
    target本次调用类的实例
    params本次调用参数列表,这是一个数组,如果方法是无参方法则为空数组
    returnObj本次调用返回的对象。当且仅当 isReturn==true 成立时候有效,表明方法调用是以正常返回的方式结束。如果当前方法无返回值 void,则值为 null
    throwExp本次调用抛出的异常。当且仅当 isThrow==true 成立时有效,表明方法调用是以抛出异常的方式结束。
    isBefore辅助判断标记,当前的通知节点有可能是在方法一开始就通知,此时 isBefore==true 成立,同时 isThrow==falseisReturn==false,因为在方法刚开始时,还无法确定方法调用将会如何结束。
    isThrow辅助判断标记,当前的方法调用以抛异常的形式结束。
    isReturn辅助判断标记,当前的方法调用以正常返回的形式结束。

    所有变量都可以在表达式中直接使用,如果在表达式中编写了不符合 OGNL 脚本语法或者引入了不在表格中的变量,则退出命令的执行;用户可以根据当前的异常信息修正条件表达式观察表达式

    + + + diff --git a/3.x/doc/agent.html b/3.x/doc/agent.html new file mode 100644 index 00000000000..751bc1a2520 --- /dev/null +++ b/3.x/doc/agent.html @@ -0,0 +1,42 @@ + + + + + + + + + 以 Java Agent 的方式启动 | arthas + + + + +

    以 Java Agent 的方式启动

    通常 Arthas 是以动态 attach 的方式来诊断应用,但从3.2.0版本起,Arthas 支持直接以 java agent 的方式启动。

    比如下载全量的 arthas zip 包,解压之后以 -javaagent 的参数指定arthas-agent.jar来启动:

    java -javaagent:/tmp/test/arthas-agent.jar -jar math-game.jar
    +

    默认的配置项在解压目录里的arthas.properties文件里。参考:Arthas Properties

    Java Agent 机制参考: https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html

    + + + diff --git a/3.x/doc/arthas-properties.html b/3.x/doc/arthas-properties.html new file mode 100644 index 00000000000..b221b7af68c --- /dev/null +++ b/3.x/doc/arthas-properties.html @@ -0,0 +1,53 @@ + + + + + + + + + Arthas Properties | arthas + + + + +
    目录

    Arthas Properties

    arthas.properties文件在 arthas 的目录下。

    • 如果是自动下载的 arthas,则目录在~/.arthas/lib/3.x.x/arthas/下面
    • 如果是下载的完整包,在 arthas 解压目录下

    支持的配置项

    注意

    注意配置必须是驼峰的,和 spring boot 的-风格不一样。spring boot 应用才同时支持驼峰-风格的配置。

    #arthas.config.overrideAll=true
    +arthas.telnetPort=3658
    +arthas.httpPort=8563
    +arthas.ip=127.0.0.1
    +
    +# seconds
    +arthas.sessionTimeout=1800
    +
    +#arthas.appName=demoapp
    +#arthas.tunnelServer=ws://127.0.0.1:7777/ws
    +#arthas.agentId=mmmmmmyiddddd
    +
    • 如果配置 arthas.telnetPort为 -1 ,则不 listen telnet 端口。arthas.httpPort类似。
    • 如果配置 arthas.telnetPort为 0 ,则随机 telnet 端口,在~/logs/arthas/arthas.log里可以找到具体端口日志。arthas.httpPort类似。

    提示

    如果是防止一个机器上启动多个 arthas 端口冲突。可以配置为随机端口,或者配置为 -1,并且通过 tunnel server 来使用 arthas。

    禁止指定命令

    提示

    since 3.5.2

    比如配置:

    arthas.disabledCommands=stop,dump
    +

    也可以在命令行配置: --disabled-commands stop,dump

    提示

    默认情况下,arthas-spring-boot-starter 会禁掉stop命令。

    配置的优先级

    配置的优先级是:命令行参数 > System Env > System Properties > arthas.properties 。

    比如:

    • ./as3.sh --telnet-port 9999 传入的配置会覆盖掉arthas.properties里的默认值arthas.telnetPort=3658
    • 如果应用自身设置了 system properties arthas.telnetPort=8888,则会覆盖掉arthas.properties里的默认值arthas.telnetPort=3658

    如果想要 arthas.properties的优先级最高,则可以配置 arthas.config.overrideAll=true

    + + + diff --git a/3.x/doc/arthas-tutorials.html b/3.x/doc/arthas-tutorials.html new file mode 100644 index 00000000000..b8fd5b3a544 --- /dev/null +++ b/3.x/doc/arthas-tutorials.html @@ -0,0 +1,1224 @@ + + + + + + + + + + + + + + + + Arthas Tutorials + + + + + + + + + + + + + + + +
    + + + + + +
    + +
    +
    + + + + + + + + diff --git a/3.x/doc/arthas3.html b/3.x/doc/arthas3.html new file mode 100644 index 00000000000..556b191c307 --- /dev/null +++ b/3.x/doc/arthas3.html @@ -0,0 +1,89 @@ + + + + + + + + + arthas + + + + +
    目录

    Arthas3.0 的新特性

    在线诊断功能

    Arthas3.0 中最重要的特性,不需要登陆机器就可以对应用进行诊断,体验和本地诊断完全一致

    使用步骤

    TODO

    动图演示

    TODO

    管道支持

    Arthas 3.0 开始支持管道, 率先提供了grep,wc,plaintext的支持。

    去 groovy 依赖

    groovy 表达式在 arthas2.0 中大量使用,例如 watch 表达式

    watch com.alibaba.sample.petstore.web.store.module.screen.ItemList add "params + ' ' + returnObj" params.size()==2
    +

    其中"params + ' ' + returnObj"以及params.size()==2背后其实都使用了 groovy 来进行表达式求值,如果反复大量的运行这些表达式,groovy 会创建大量的 classloader,打满 perm 区从而触发 FGC。

    为了避免这个问题,Arthas 3.0 中使用了 ognl 这个更加轻量的表达式求值库来代替 groovy,彻底解决了 groovy 引起的 FGC 风险。但由于这个替换,导致原来使用 groovy 脚本编写的自定义脚本失效。这个问题留待后续解决。

    在 3.0 中,watch 命令的表达式部分的书写有了一些改变,详见这里在新窗口打开

    提升 rt 统计精度

    Arthas 2.0 中,统计 rt 都是以ms为单位,对于某些比较小的方法调用,耗时在毫秒以下的都会被认为是 0ms,造成 trace 总时间和各方法的时间相加不一致等问题(虽然这里面确实会有误差,主要 Arthas 自身的开销)。Arthas 3.0 中所有 rt 的单位统一改为使用ns来统计,精准捕获你的方法耗时,让 0ms 这样无意义的统计数据不再出现!

    $ tt -l
    + INDEX     TIMESTAMP               COST(ms)    IS-RET    IS-EXP   OBJECT            CLASS                                METHOD
    +------------------------------------------------------------------------------------------------------------------------------------------------------------
    + 1000      2017-02-24 10:56:46     808.743525  true      false    0x3bd5e918        TestTraceServlet                     doGet
    + 1001      2017-02-24 10:56:55     805.799155  true      false    0x3bd5e918        TestTraceServlet                     doGet
    + 1002      2017-02-24 10:57:04     808.026935  true      false    0x3bd5e918        TestTraceServlet                     doGet
    + 1003      2017-02-24 10:57:22     805.036963  true      false    0x3bd5e918        TestTraceServlet                     doGet
    + 1004      2017-02-24 10:57:24     803.581886  true      false    0x3bd5e918        TestTraceServlet                     doGet
    + 1005      2017-02-24 10:57:39     814.657657  true      false    0x3bd5e918        TestTraceServlet                     doGet
    +

    watch/stack/trace 命令支持按耗时过滤

    我们在 trace 的时候,经常会出现某个方法间隙性的 rt 飙高,但是我们只想知道 rt 高的时候,是哪里慢了,对于正常 rt 的方法我们并不关心,Arthas 3.0 支持了按#cost(方法执行耗时,单位为ms)进行过滤,只输出符合条件的 trace 路径,目前,这三个命令的相关文档已经做了更新,增加了该用法的示例。

    sysprop 命令操作 SystemProperty

    sysprop 命令支持查看所有的系统属性,以及针对特定属性进行查看和修改。

    $ sysprop
    +...
    + os.arch                                              x86_64
    + java.ext.dirs                                        /Users/wangtao/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.
    +                                                      8.0_51.jdk/Contents/Home/jre/lib/ext:/Library/Java/Extensions:/Network/Library
    +                                                      /Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
    + user.dir                                             /Users/wangtao/work/ali-tomcat-home/ant-develop/output/build
    + catalina.vendor                                      alibaba
    + line.separator
    +
    + java.vm.name                                         Java HotSpot(TM) 64-Bit Server VM
    + file.encoding                                        UTF-8
    + org.apache.tomcat.util.http.ServerCookie.ALLOW_EQUA  true
    + LS_IN_VALUE
    + com.taobao.tomcat.info                               Apache Tomcat/7.0.70.1548
    + java.specification.version                           1.8
    +$ sysprop java.version
    +java.version=1.8.0_51
    +$ sysprop production.mode true
    +Successfully changed the system property.
    +production.mode=true
    +

    thread 命令支持指定采样时间

    thread 命令计算线程 cpu 占用的逻辑,默认是采样 100ms 内各个线程的 cpu 使用情况并计算 cpu 消耗占比。有时候 100ms 的时间间隔太短,看不出问题所在,Arthas3.0 中 thread 命令支持设置采样间隔(以ms为单位),可以观察任意时间段内的 cpu 消耗占比情况。

    $ thread -i 1000
    +Threads Total: 74, NEW: 0, RUNNABLE: 17, BLOCKED: 0, WAITING: 15, TIMED_WAITING: 42, TERMINATED: 0
    +ID                 NAME                                                     GROUP                                  PRIORITY           STATE              %CPU               TIME               INTERRUPTED        DAEMON
    +78                 com.taobao.config.client.timer                           main                                   5                  TIMED_WAITING      22                 0:0                false              true
    +92                 Abandoned connection cleanup thread                      main                                   5                  TIMED_WAITING      15                 0:2                false              true
    +361                as-command-execute-daemon                                system                                 10                 RUNNABLE           14                 0:0                false              true
    +67                 HSF-Remoting-Timer-10-thread-1                           main                                   10                 TIMED_WAITING      12                 0:2                false              true
    +113                JamScheduleThread                                        system                                 9                  TIMED_WAITING      2                  0:0                false              true
    +14                 Thread-3                                                 main                                   5                  RUNNABLE           2                  0:0                false              false
    +81                 com.taobao.remoting.TimerThread                          main                                   5                  TIMED_WAITING      2                  0:0                false              true
    +104                http-bio-7001-AsyncTimeout                               main                                   5                  TIMED_WAITING      2                  0:0                false              true
    +123                nioEventLoopGroup-2-1                                    system                                 10                 RUNNABLE           2                  0:0                false              false
    +127                nioEventLoopGroup-3-2                                    system                                 10                 RUNNABLE           2                  0:0                false              false
    +345                nioEventLoopGroup-3-3                                    system                                 10                 RUNNABLE           2                  0:0                false              false
    +358                nioEventLoopGroup-3-4                                    system                                 10                 RUNNABLE           2                  0:0                false              false
    +27                 qos-boss-1-1                                             main                                   5                  RUNNABLE           2                  0:0                false              true
    +22                 EagleEye-AsyncAppender-Thread-BizLog                     main                                   5                  TIMED_WAITING      1                  0:0                false              true
    +

    trace 命令自动高亮显示最耗时方法调用

    trace 命令现在会自动显示

    ![Untitled2](TODO /Untitled2.gif)

    + + + diff --git a/3.x/doc/async.html b/3.x/doc/async.html new file mode 100644 index 00000000000..fc42b3fca94 --- /dev/null +++ b/3.x/doc/async.html @@ -0,0 +1,54 @@ + + + + + + + + + Arthas 后台异步任务 | arthas + + + + +
    目录

    Arthas 后台异步任务

    后台异步任务在线教程在新窗口打开

    arthas 中的后台异步任务,使用了仿 linux 系统任务相关的命令。linux 任务相关介绍在新窗口打开

    1. 使用&在后台执行任务

    比如希望执行后台执行 trace 命令,那么调用下面命令

    trace Test t &
    +

    这时命令在后台执行,可以在 console 中继续执行其他命令。

    2. 通过 jobs 查看任务

    如果希望查看当前有哪些 arthas 任务在执行,可以执行 jobs 命令,执行结果如下

    $ jobs
    +[10]*
    +       Stopped           watch com.taobao.container.Test test "params[0].{? #this.name == null }" -x 2
    +       execution count : 19
    +       start time      : Fri Sep 22 09:59:55 CST 2017
    +       timeout date    : Sat Sep 23 09:59:55 CST 2017
    +       session         : 3648e874-5e69-473f-9eed-7f89660b079b (current)
    +

    可以看到目前有一个后台任务在执行。

    • job id 是 10, * 表示此 job 是当前 session 创建
    • 状态是 Stopped
    • execution count 是执行次数,从启动开始已经执行了 19 次
    • timeout date 是超时的时间,到这个时间,任务将会自动超时退出

    3. 任务暂停和取消

    当任务正在前台执行,比如直接调用命令trace Test t或者调用后台执行命令trace Test t &后又通过fg命令将任务转到前台。这时 console 中无法继续执行命令,但是可以接收并处理以下事件:

    • ‘ctrl + z’:将任务暂停。通过jbos查看任务状态将会变为 Stopped,通过bg <job-id>或者fg <job-id>可让任务重新开始执行
    • ‘ctrl + c’:停止任务
    • ‘ctrl + d’:按照 linux 语义应当是退出终端,目前 arthas 中是空实现,不处理

    4. fg、bg 命令,将命令转到前台、后台继续执行

    • 任务在后台执行或者暂停状态(ctrl + z暂停任务)时,执行fg <job-id>将可以把对应的任务转到前台继续执行。在前台执行时,无法在 console 中执行其他命令
    • 当任务处于暂停状态时(ctrl + z暂停任务),执行bg <job-id>将可以把对应的任务在后台继续执行
    • 非当前 session 创建的 job,只能由当前 session fg 到前台执行

    5. 任务输出重定向

    可通过>或者>>将任务输出结果输出到指定的文件中,可以和&一起使用,实现 arthas 命令的后台异步任务。比如:

    $ trace Test t >> test.out &
    +

    这时 trace 命令会在后台执行,并且把结果输出到应用工作目录下面的test.out文件。可继续执行其他命令。并可查看文件中的命令执行结果。可以执行pwd命令查看当前应用的工作目录

    $ cat test.out
    +

    如果没有指定重定向文件,则会把结果输出到~/logs/arthas-cache/目录下,比如:

    $ trace Test t >>  &
    +job id  : 2
    +cache location  : /Users/admin/logs/arthas-cache/28198/2
    +

    此时命令会在后台异步执行,并将结果异步保存在文件(~/logs/arthas-cache/${PID}/${JobId})中;

    • 此时任务的执行不受 session 断开的影响;任务默认超时时间是 1 天,可以通过全局 options 命令修改默认超时时间;
    • 此命令的结果将异步输出到  文件中;此时不管 save-result 是否为 true,都不会再往~/logs/arthas-cache/result.log 中异步写结果。

    6. 停止命令

    异步执行的命令,如果希望停止,可执行kill <job-id>

    7. 其他

    • 最多同时支持 8 个命令使用重定向将结果写日志
    • 请勿同时开启过多的后台异步命令,以免对目标 JVM 性能造成影响
    • 如果不想停止 arthas,继续执行后台任务,可以执行 quit 退出 arthas 控制台(stop 会停止 arthas 服务)
    + + + diff --git a/3.x/doc/auth.html b/3.x/doc/auth.html new file mode 100644 index 00000000000..b4bc94844d3 --- /dev/null +++ b/3.x/doc/auth.html @@ -0,0 +1,53 @@ + + + + + + + + + auth | arthas + + + + +
    目录

    auth

    提示

    验证当前会话

    配置用户名和密码

    在 attach 时,可以在命令行指定密码。比如:

    java -jar arthas-boot3.jar --password ppp
    +
    • 可以通过 --username 选项来指定用户,默认值是arthas

    • 也可以在 arthas.properties 里中配置 username/password。命令行的优先级大于配置文件。

    • 如果只配置username,没有配置password,则会生成随机密码,打印在~/logs/arthas/arthas.log

      Using generated security password: 0vUBJpRIppkKuZ7dYzYqOKtranj4unGh
      +

    本地连接不鉴权

    默认情况下,在arthas.properties文件里有配置:

    arthas.localConnectionNonAuth=true
    +

    当配置密码时,使用本地连接,也不需要鉴权。默认配置值是 true,方便本地连接使用。只有远程连接时,才需要鉴权。

    在 telnet console 里鉴权

    连接到 arthas 后,直接执行命令会提示需要鉴权:

    [arthas@37430]$ help
    +Error! command not permitted, try to use 'auth' command to authenticates.
    +

    使用auth命令来鉴权,成功之后可以执行其它命令。

    [arthas@37430]$ auth ppp
    +Authentication result: true
    +
    • 可以通过 --username 选项来指定用户,默认值是arthas

    Web console 密码验证

    打开浏览器,会有弹窗提示需要输入 用户名 和 密码。

    成功之后,则可以直接连接上 web console。

    HTTP API 验证

    Authorization Header 方式(推荐)

    Arthas 采用的是 HTTP 标准的 Basic Authorization,客户端请求时增加对应的 header 即可。

    例如,用户名是:admin,密码是 admin,则组合为字符串: admin:admin,base64 结果是: YWRtaW46YWRtaW4=,则 HTTP 请求增加Authorization header:

    curl 'http://localhost:8563/api' \
    +  -H 'Authorization: Basic YWRtaW46YWRtaW4=' \
    +  --data-raw '{"action":"exec","command":"version"}'
    +

    URL 参数传递方式

    为了方便各种特殊情况,支持了以 parameters 方式传递 username 和 password。比如:

    curl 'http://localhost:8563/api?password=admin' \
    +  --data-raw '{"action":"exec","command":"version"}'
    +
    + + + diff --git a/3.x/doc/base64.html b/3.x/doc/base64.html new file mode 100644 index 00000000000..2f0543f1c43 --- /dev/null +++ b/3.x/doc/base64.html @@ -0,0 +1,51 @@ + + + + + + + + + base64 | arthas + + + + +
    目录

    base64

    提示

    base64 编码转换,和 linux 里的 base64 命令类似。

    对文件进行 base64 编码

    [arthas@70070]$ echo 'abc' > /tmp/test.txt
    +[arthas@70070]$ cat /tmp/test.txt
    +abc
    +
    +[arthas@70070]$ base64 /tmp/test.txt
    +YWJjCg==
    +

    对文件进行 base64 编码并把结果保存到文件里

    $ base64 --input /tmp/test.txt --output /tmp/result.txt
    +

    用 base64 解码文件

    $ base64 -d /tmp/result.txt
    +abc
    +

    用 base64 解码文件并保存结果到文件里

    $ base64 -d /tmp/result.txt --output /tmp/bbb.txt
    +
    + + + diff --git a/3.x/doc/batch-support.html b/3.x/doc/batch-support.html new file mode 100644 index 00000000000..fb5850b78a4 --- /dev/null +++ b/3.x/doc/batch-support.html @@ -0,0 +1,50 @@ + + + + + + + + + 批处理功能 | arthas + + + + +
    目录

    批处理功能

    提示

    通过批处理功能,arthas 支持一次性批量运行多个命令,并取得命令执行的结果。可结合 --select 参数可以指定进程名字一起使用。

    使用方法

    第一步:创建你的批处理脚本

    这里我们新建了一个test.as脚本,为了规范,我们采用了.as 后缀名,但事实上任意的文本文件都 ok。

    提示

    • 目前需要每个命令占一行
    • dashboard 务必指定执行次数 (-n),否则会导致批处理脚本无法终止
    • watch/tt/trace/monitor/stack 等命令务必指定执行次数 (-n),否则会导致批处理脚本无法终止
    • 可以使用异步后台任务,如 watch c.t.X test returnObj > &,让命令一直在后台运行,通过日志获取结果,获取更多异步任务的信息
    ➜  arthas git:(develop) cat /var/tmp/test.as
    +help
    +dashboard -n 1
    +session
    +thread
    +sc -d org.apache.commons.lang.StringUtils
    +

    第二步:运行你的批处理脚本

    通过-f执行脚本文件,批处理脚本默认会输出到标准输出中,可以将结果重定向到文件中。

    ./as3.sh -f /var/tmp/test.as <pid> > test.out # pid 可以通过 jps 命令查看
    +

    也可以通过 -c 来指定指行的命令,比如

    ./as3.sh -c 'sysprop; thread' <pid> > test.out # pid 可以通过 jps 命令查看
    +

    第三步:查看运行结果

    cat test.out
    +
    + + + diff --git a/3.x/doc/cat.html b/3.x/doc/cat.html new file mode 100644 index 00000000000..6a8d044303f --- /dev/null +++ b/3.x/doc/cat.html @@ -0,0 +1,42 @@ + + + + + + + + + cat | arthas + + + + + + + + diff --git a/3.x/doc/classloader.html b/3.x/doc/classloader.html new file mode 100644 index 00000000000..49b64112e7d --- /dev/null +++ b/3.x/doc/classloader.html @@ -0,0 +1,127 @@ + + + + + + + + + classloader | arthas + + + + +
    目录

    classloader

    classloader在线教程在新窗口打开

    提示

    查看 classloader 的继承树,urls,类加载信息

    classloader 命令将 JVM 中所有的 classloader 的信息统计出来,并可以展示继承树,urls 等。

    可以让指定的 classloader 去 getResources,打印出所有查找到的 resources 的 url。对于ResourceNotFoundException比较有用。

    参数说明

    参数名称参数说明
    [l]按类加载实例进行统计
    [t]打印所有 ClassLoader 的继承树
    [a]列出所有 ClassLoader 加载的类,请谨慎使用
    [c:]ClassLoader 的 hashcode
    [classLoaderClass:]指定执行表达式的 ClassLoader 的 class name
    [c: r:]用 ClassLoader 去查找 resource
    [c: load:]用 ClassLoader 去加载指定的类

    使用参考

    按类加载类型查看统计信息

    $ classloader
    + name                                       numberOfInstances  loadedCountTotal
    + com.taobao.arthas.agent.ArthasClassloader  1                  2115
    + BootstrapClassLoader                       1                  1861
    + sun.reflect.DelegatingClassLoader          5                  5
    + sun.misc.Launcher$AppClassLoader           1                  4
    + sun.misc.Launcher$ExtClassLoader           1                  1
    +Affect(row-cnt:5) cost in 3 ms.
    +

    按类加载实例查看统计信息

    $ classloader -l
    + name                                                loadedCount  hash      parent
    + BootstrapClassLoader                                1861         null      null
    + com.taobao.arthas.agent.ArthasClassloader@68b31f0a  2115         68b31f0a  sun.misc.Launcher$ExtClassLoader@66350f69
    + sun.misc.Launcher$AppClassLoader@3d4eac69           4            3d4eac69  sun.misc.Launcher$ExtClassLoader@66350f69
    + sun.misc.Launcher$ExtClassLoader@66350f69           1            66350f69  null
    +Affect(row-cnt:4) cost in 2 ms.
    +

    查看 ClassLoader 的继承树

    $ classloader -t
    ++-BootstrapClassLoader
    ++-sun.misc.Launcher$ExtClassLoader@66350f69
    +  +-com.taobao.arthas.agent.ArthasClassloader@68b31f0a
    +  +-sun.misc.Launcher$AppClassLoader@3d4eac69
    +Affect(row-cnt:4) cost in 3 ms.
    +

    查看 URLClassLoader 实际的 urls

    $ classloader -c 3d4eac69
    +file:/private/tmp/math-game.jar
    +file:/Users/hengyunabc/.arthas/lib/3.0.5/arthas/arthas-agent.jar
    +
    +Affect(row-cnt:9) cost in 3 ms.
    +

    注意 hashcode 是变化的,需要先查看当前的 ClassLoader 信息,提取对应 ClassLoader 的 hashcode。

    对于只有唯一实例的 ClassLoader 可以通过 class name 指定,使用起来更加方便:

    $ classloader --classLoaderClass sun.misc.Launcher$AppClassLoader
    +file:/private/tmp/math-game.jar
    +file:/Users/hengyunabc/.arthas/lib/3.0.5/arthas/arthas-agent.jar
    +
    +Affect(row-cnt:9) cost in 3 ms.
    +

    使用 ClassLoader 去查找 resource

    $ classloader -c 3d4eac69  -r META-INF/MANIFEST.MF
    + jar:file:/System/Library/Java/Extensions/MRJToolkit.jar!/META-INF/MANIFEST.MF
    + jar:file:/private/tmp/math-game.jar!/META-INF/MANIFEST.MF
    + jar:file:/Users/hengyunabc/.arthas/lib/3.0.5/arthas/arthas-agent.jar!/META-INF/MANIFEST.MF
    +

    也可以尝试查找类的 class 文件:

    $ classloader -c 1b6d3586 -r java/lang/String.class
    + jar:file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/rt.jar!/java/lang/String.class
    +

    使用 ClassLoader 去加载类

    $ classloader -c 3d4eac69 --load demo.MathGame
    +load class success.
    + class-info        demo.MathGame
    + code-source       /private/tmp/math-game.jar
    + name              demo.MathGame
    + isInterface       false
    + isAnnotation      false
    + isEnum            false
    + isAnonymousClass  false
    + isArray           false
    + isLocalClass      false
    + isMemberClass     false
    + isPrimitive       false
    + isSynthetic       false
    + simple-name       MathGame
    + modifier          public
    + annotation
    + interfaces
    + super-class       +-java.lang.Object
    + class-loader      +-sun.misc.Launcher$AppClassLoader@3d4eac69
    +                     +-sun.misc.Launcher$ExtClassLoader@66350f69
    + classLoaderHash   3d4eac69
    +

    统计 ClassLoader 实际使用 URL 和未使用的 URL

    注意

    注意,基于 JVM 目前已加载的所有类统计,不代表Unused URLs可以从应用中删掉。因为可能将来需要从Unused URLs里加载类,或者需要加载resources

    $ classloader --url-stat
    + com.taobao.arthas.agent.ArthasClassloader@3c41660, hash:3c41660
    + Used URLs:
    + file:/Users/admin/.arthas/lib/3.5.6/arthas/arthas-core.jar
    + Unused URLs:
    +
    + sun.misc.Launcher$AppClassLoader@75b84c92, hash:75b84c92
    + Used URLs:
    + file:/Users/admin/code/java/arthas/math-game/target/math-game.jar
    + file:/Users/admin/.arthas/lib/3.5.6/arthas/arthas-agent.jar
    + Unused URLs:
    +
    + sun.misc.Launcher$ExtClassLoader@7f31245a, hash:7f31245a
    + Used URLs:
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/sunec.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/sunjce_provider.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/localedata.jar
    + Unused URLs:
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/nashorn.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/cldrdata.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/legacy8ujsse.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/jfxrt.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/dnsns.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/openjsse.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/sunpkcs11.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/jaccess.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/zipfs.jar
    +
    + + + diff --git a/3.x/doc/cls.html b/3.x/doc/cls.html new file mode 100644 index 00000000000..7a5eb8f0955 --- /dev/null +++ b/3.x/doc/cls.html @@ -0,0 +1,41 @@ + + + + + + + + + cls | arthas + + + + + + + + diff --git a/3.x/doc/commands.html b/3.x/doc/commands.html new file mode 100644 index 00000000000..4f694a16e9e --- /dev/null +++ b/3.x/doc/commands.html @@ -0,0 +1,41 @@ + + + + + + + + + 命令列表 | arthas + + + + +
    目录

    命令列表

    jvm 相关

    • dashboard - 当前系统的实时数据面板
    • getstatic - 查看类的静态属性
    • heapdump - dump java heap, 类似 jmap 命令的 heap dump 功能
    • jvm - 查看当前 JVM 的信息
    • logger - 查看和修改 logger
    • mbean - 查看 Mbean 的信息
    • memory - 查看 JVM 的内存信息
    • ognl - 执行 ognl 表达式
    • perfcounter - 查看当前 JVM 的 Perf Counter 信息
    • sysenv - 查看 JVM 的环境变量
    • sysprop - 查看和修改 JVM 的系统属性
    • thread - 查看当前 JVM 的线程堆栈信息
    • vmoption - 查看和修改 JVM 里诊断相关的 option
    • vmtool - 从 jvm 里查询对象,执行 forceGc

    class/classloader 相关

    • classloader - 查看 classloader 的继承树,urls,类加载信息,使用 classloader 去 getResource
    • dump - dump 已加载类的 byte code 到特定目录
    • jad - 反编译指定已加载类的源码
    • mc - 内存编译器,内存编译.java文件为.class文件
    • redefine - 加载外部的.class文件,redefine 到 JVM 里
    • retransform - 加载外部的.class文件,retransform 到 JVM 里
    • sc - 查看 JVM 已加载的类信息
    • sm - 查看已加载类的方法信息

    monitor/watch/trace 相关

    注意

    请注意,这些命令,都通过字节码增强技术来实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此在线上、预发使用时,请尽量明确需要观测的类、方法以及条件,诊断结束要执行 stop 或将增强过的类执行 reset 命令。

    • monitor - 方法执行监控
    • stack - 输出当前方法被调用的调用路径
    • trace - 方法内部调用路径,并输出方法路径上的每个节点上耗时
    • tt - 方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测
    • watch - 方法执行数据观测

    profiler/火焰图

    鉴权

    options

    • options - 查看或设置 Arthas 全局开关

    管道

    Arthas 支持使用管道对上述命令的结果进行进一步的处理,如sm java.lang.String * | grep 'index'

    • grep - 搜索满足条件的结果
    • plaintext - 将命令的结果去除 ANSI 颜色
    • wc - 按行统计输出结果

    后台异步任务

    当线上出现偶发的问题,比如需要 watch 某个条件,而这个条件一天可能才会出现一次时,异步后台任务就派上用场了,详情请参考这里

    • 使用 > 将结果重写向到日志文件,使用 & 指定命令是后台运行,session 断开不影响任务执行(生命周期默认为 1 天)
    • jobs - 列出所有 job
    • kill - 强制终止任务
    • fg - 将暂停的任务拉到前台执行
    • bg - 将暂停的任务放到后台执行

    基础命令

    • base64 - base64 编码转换,和 linux 里的 base64 命令类似
    • cat - 打印文件内容,和 linux 里的 cat 命令类似
    • cls - 清空当前屏幕区域
    • echo - 打印参数,和 linux 里的 echo 命令类似
    • grep - 匹配查找,和 linux 里的 grep 命令类似
    • help - 查看命令帮助信息
    • history - 打印命令历史
    • keymap - Arthas 快捷键列表及自定义快捷键
    • pwd - 返回当前的工作目录,和 linux 命令类似
    • quit - 退出当前 Arthas 客户端,其他 Arthas 客户端不受影响
    • reset - 重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类
    • session - 查看当前会话的信息
    • stop - 关闭 Arthas 服务端,所有 Arthas 客户端全部退出
    • tee - 复制标准输入到标准输出和指定的文件,和 linux 里的 tee 命令类似
    • version - 输出当前目标 Java 进程所加载的 Arthas 版本号
    + + + diff --git a/3.x/doc/contact-us.html b/3.x/doc/contact-us.html new file mode 100644 index 00000000000..a6692fc68a1 --- /dev/null +++ b/3.x/doc/contact-us.html @@ -0,0 +1,41 @@ + + + + + + + + + 联系我们 | arthas + + + + +
    目录

    联系我们

    招聘

    Issues

    使用疑问,意见可以直接在 Issues 里提出: https://github.com/alibaba/arthas/issues在新窗口打开

    微信公众号

    欢迎关注公众号,获取 Arthas 项目的信息、源码分析、案例实践。

    钉钉群

    • Arthas 开源交流钉钉群: 21965291 ,搜索群号即可加入。(如果满了无法加入,请加 3 群)

    • Arthas 开源交流钉钉群 2: 30707824 ,搜索群号即可加入。(如果满了无法加入,请加 3 群)

    • Arthas 开源交流钉钉群 3: 17605006847 ,搜索群号即可加入。

    QQ 群

    Arthas 开源交流 QQ 群: 916328269 (如果满了无法加入,请加 3 群)

    Arthas 开源交流 QQ 群 2: 854625984

    Arthas 开源交流 QQ 群 3: 672077388

    + + + diff --git a/3.x/doc/dashboard.html b/3.x/doc/dashboard.html new file mode 100644 index 00000000000..3666ccefe55 --- /dev/null +++ b/3.x/doc/dashboard.html @@ -0,0 +1,73 @@ + + + + + + + + + dashboard | arthas + + + + +
    目录

    dashboard

    dashboard在线教程在新窗口打开

    提示

    当前系统的实时数据面板,按 ctrl+c 退出。

    当运行在 Ali-tomcat 时,会显示当前 tomcat 的实时信息,如 HTTP 请求的 qps, rt, 错误数, 线程池信息等等。

    参数说明

    参数名称参数说明
    [i:]刷新实时数据的时间间隔 (ms),默认 5000ms
    [n:]刷新实时数据的次数

    使用参考

    $ dashboard
    +ID   NAME                           GROUP           PRIORITY   STATE     %CPU      DELTA_TIME TIME      INTERRUPTE DAEMON
    +-1   C2 CompilerThread0             -               -1         -         1.55      0.077      0:8.684   false      true
    +53   Timer-for-arthas-dashboard-07b system          5          RUNNABLE  0.08      0.004      0:0.004   false      true
    +22   scheduling-1                   main            5          TIMED_WAI 0.06      0.003      0:0.287   false      false
    +-1   C1 CompilerThread0             -               -1         -         0.06      0.003      0:2.171   false      true
    +-1   VM Periodic Task Thread        -               -1         -         0.03      0.001      0:0.092   false      true
    +49   arthas-NettyHttpTelnetBootstra system          5          RUNNABLE  0.02      0.001      0:0.156   false      true
    +16   Catalina-utility-1             main            1          TIMED_WAI 0.0       0.000      0:0.029   false      false
    +-1   G1 Young RemSet Sampling       -               -1         -         0.0       0.000      0:0.019   false      true
    +17   Catalina-utility-2             main            1          WAITING   0.0       0.000      0:0.025   false      false
    +34   http-nio-8080-ClientPoller     main            5          RUNNABLE  0.0       0.000      0:0.016   false      true
    +23   http-nio-8080-BlockPoller      main            5          RUNNABLE  0.0       0.000      0:0.011   false      true
    +-1   VM Thread                      -               -1         -         0.0       0.000      0:0.032   false      true
    +-1   Service Thread                 -               -1         -         0.0       0.000      0:0.006   false      true
    +-1   GC Thread#5                    -               -1         -         0.0       0.000      0:0.043   false      true
    +Memory                     used     total    max      usage    GC
    +heap                       36M      70M      4096M    0.90%    gc.g1_young_generation.count   12
    +g1_eden_space              6M       18M      -1       33.33%                                  86
    +g1_old_gen                 30M      50M      4096M    0.74%    gc.g1_old_generation.count     0
    +g1_survivor_space          491K     2048K    -1       24.01%   gc.g1_old_generation.time(ms)  0
    +nonheap                    66M      69M      -1       96.56%
    +codeheap_'non-nmethods'    1M       2M       5M       22.39%
    +metaspace                  46M      47M      -1       98.01%
    +Runtime
    +os.name                                                        Mac OS X
    +os.version                                                     10.15.4
    +java.version                                                   15
    +java.home                                                      /Library/Java/JavaVirtualMachines/jdk-15.jdk/Contents/Home
    +systemload.average                                             10.68
    +processors                                                     8
    +uptime                                                         272s
    +

    数据说明

    • ID: Java 级别的线程 ID,注意这个 ID 不能跟 jstack 中的 nativeID 一一对应。
    • NAME: 线程名
    • GROUP: 线程组名
    • PRIORITY: 线程优先级, 1~10 之间的数字,越大表示优先级越高
    • STATE: 线程的状态
    • CPU%: 线程的 cpu 使用率。比如采样间隔 1000ms,某个线程的增量 cpu 时间为 100ms,则 cpu 使用率=100/1000=10%
    • DELTA_TIME: 上次采样之后线程运行增量 CPU 时间,数据格式为
    • TIME: 线程运行总 CPU 时间,数据格式为分:秒
    • INTERRUPTED: 线程当前的中断位状态
    • DAEMON: 是否是 daemon 线程

    JVM 内部线程

    Java 8 之后支持获取 JVM 内部线程 CPU 时间,这些线程只有名称和 CPU 时间,没有 ID 及状态等信息(显示 ID 为-1)。 通过内部线程可以观测到 JVM 活动,如 GC、JIT 编译等占用 CPU 情况,方便了解 JVM 整体运行状况。

    • 当 JVM 堆(heap)/元数据(metaspace)空间不足或 OOM 时,可以看到 GC 线程的 CPU 占用率明显高于其他的线程。
    • 当执行trace/watch/tt/redefine等命令后,可以看到 JIT 线程活动变得更频繁。因为 JVM 热更新 class 字节码时清除了此 class 相关的 JIT 编译结果,需要重新编译。

    JVM 内部线程包括下面几种:

    • JIT 编译线程: 如 C1 CompilerThread0, C2 CompilerThread0
    • GC 线程: 如GC Thread0, G1 Young RemSet Sampling
    • 其它内部线程: 如VM Periodic Task Thread, VM Thread, Service Thread

    截图展示

    + + + diff --git a/3.x/doc/docker.html b/3.x/doc/docker.html new file mode 100644 index 00000000000..528b20875a9 --- /dev/null +++ b/3.x/doc/docker.html @@ -0,0 +1,90 @@ + + + + + + + + + Docker | arthas + + + + +
    目录

    Docker

    在 Docker 里使用 JDK

    很多时候,应用在 docker 里出现 arthas 无法工作的问题,是因为应用没有安装 JDK ,而是安装了 JRE 。如果只安装了 JRE,则会缺少很多 JAVA 的命令行工具和类库,Arthas 也没办法正常工作。下面介绍两种常见的在 Docker 里使用 JDK 的方式。

    使用公开的 JDK 镜像

    • https://hub.docker.com/_/openjdk/

    比如:

    FROM openjdk:8-jdk
    +

    或者:

    FROM openjdk:8-jdk-alpine
    +

    通过包管理软件来安装

    比如:

    # Install OpenJDK-8
    +RUN apt-get update && \
    +    apt-get install -y openjdk-8-jdk && \
    +    apt-get install -y ant && \
    +    apt-get clean;
    +
    +# Fix certificate issues
    +RUN apt-get update && \
    +    apt-get install ca-certificates-java && \
    +    apt-get clean && \
    +    update-ca-certificates -f;
    +
    +# Setup JAVA_HOME -- useful for docker commandline
    +ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
    +RUN export JAVA_HOME
    +

    或者:

    RUN yum install -y \
    +   java-1.8.0-openjdk \
    +   java-1.8.0-openjdk-devel
    +
    +ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/
    +RUN export JAVA_HOME
    +

    通过 Docker 快速入门

    1. 删除本地已有的math-game docker container(非必要)

      $ docker stop math-game || true && docker rm math-game || true
      +
    2. 启动math-game

      $ docker run --name math-game -it hengyunabc/arthas:latest /bin/sh -c "java -jar /opt/arthas/math-game.jar"
      +
    3. 启动arthas-boot3来进行诊断

      $ docker exec -it math-game /bin/sh -c "java -jar /opt/arthas/arthas-boot3.jar"
      +* [1]: 9 jar
      +
      +[INFO] arthas home: /opt/arthas
      +[INFO] Try to attach process 9
      +[INFO] Attach process 9 success.
      +[INFO] arthas-client connect 127.0.0.1 3658
      +,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
      +/  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
      +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
      +|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
      +`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'
      +
      +
      +wiki: https://arthas.aliyun.com/3.x/doc
      +version: 3.0.5
      +pid: 9
      +time: 2018-12-18 11:30:36
      +

    诊断 Docker 里的 Java 进程

    docker exec -it  ${containerId} /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot3.jar && java -jar arthas-boot3.jar"
    +

    诊断 k8s 里容器里的 Java 进程

    kubectl exec -it ${pod} --container ${containerId} -- /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot3.jar && java -jar arthas-boot3.jar"
    +

    把 Arthas 安装到基础镜像里

    可以很简单把 Arthas 安装到你的 Docker 镜像里。

    FROM openjdk:8-jdk-alpine
    +
    +# copy arthas
    +COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
    +

    如果想指定版本,可以查看具体的 tags:

    https://hub.docker.com/r/hengyunabc/arthas/tags在新窗口打开

    + + + diff --git a/3.x/doc/download.html b/3.x/doc/download.html new file mode 100644 index 00000000000..06f601b8b49 --- /dev/null +++ b/3.x/doc/download.html @@ -0,0 +1,45 @@ + + + + + + + + + 下载 | arthas + + + + +
    目录

    下载

    下载全量包

    从 Github Releases 页下载

    https://github.com/alibaba/arthas/releases在新窗口打开

    用 as3.sh 启动

    解压后,在文件夹里有as3.sh,直接用./as3.sh的方式启动:

    ./as3.sh
    +

    打印帮助信息:

    ./as3.sh -h
    +

    用 arthas-boot3 启动

    或者在解压后,在文件夹里有arthas-boot3.jar,直接用java -jar的方式启动:

    java -jar arthas-boot3.jar
    +

    打印帮助信息:

    java -jar arthas-boot3.jar -h
    +
    + + + diff --git a/3.x/doc/dump.html b/3.x/doc/dump.html new file mode 100644 index 00000000000..95051418f65 --- /dev/null +++ b/3.x/doc/dump.html @@ -0,0 +1,60 @@ + + + + + + + + + dump | arthas + + + + +
    目录

    dump

    dump在线教程在新窗口打开

    提示

    dump 已加载类的 bytecode 到特定目录

    dump 命令将 JVM 中实际运行的 class 的 byte code dump 到指定目录,适用场景批量下载指定包目录的 class 字节码;如需反编译单一类、实时查看类信息,可参考 jad

    参数说明

    参数名称参数说明
    class-pattern类名表达式匹配
    [c:]类所属 ClassLoader 的 hashcode
    [classLoaderClass:]指定执行表达式的 ClassLoader 的 class name
    [d:]设置类文件的目标目录
    [E]开启正则表达式匹配,默认为通配符匹配

    使用参考

    $ dump java.lang.String
    + HASHCODE  CLASSLOADER  LOCATION
    + null                   /Users/admin/logs/arthas/classdump/java/lang/String.class
    +Affect(row-cnt:1) cost in 119 ms.
    +
    $ dump demo.*
    + HASHCODE  CLASSLOADER                                    LOCATION
    + 3d4eac69  +-sun.misc.Launcher$AppClassLoader@3d4eac69    /Users/admin/logs/arthas/classdump/sun.misc.Launcher$AppClassLoader-3d4eac69/demo/MathGame.class
    +             +-sun.misc.Launcher$ExtClassLoader@66350f69
    +Affect(row-cnt:1) cost in 39 ms.
    +
    $ dump -d /tmp/output java.lang.String
    + HASHCODE  CLASSLOADER  LOCATION
    + null                   /tmp/output/java/lang/String.class
    +Affect(row-cnt:1) cost in 138 ms.
    +
    • 指定 classLoader

    注意 hashcode 是变化的,需要先查看当前的 ClassLoader 信息,提取对应 ClassLoader 的 hashcode。

    如果你使用-c,你需要手动输入 hashcode:-c <hashcode>

    $ dump -c 3d4eac69 demo.*
    +

    对于只有唯一实例的 ClassLoader 可以通过--classLoaderClass指定 class name,使用起来更加方便:

    $ dump --classLoaderClass sun.misc.Launcher$AppClassLoader demo.*
    + HASHCODE  CLASSLOADER                                    LOCATION
    + 3d4eac69  +-sun.misc.Launcher$AppClassLoader@3d4eac69    /Users/admin/logs/arthas/classdump/sun.misc.Launcher$AppClassLoader-3d4eac69/demo/MathGame.class
    +             +-sun.misc.Launcher$ExtClassLoader@66350f69
    +Affect(row-cnt:1) cost in 39 ms.
    +
    • 注:这里 classLoaderClass 在 java 8 是 sun.misc.Launcher$AppClassLoader,而 java 11 的 classloader 是 jdk.internal.loader.ClassLoaders$AppClassLoader,killercoda 目前环境是 java11。

    --classLoaderClass 的值是 ClassLoader 的类名,只有匹配到唯一的 ClassLoader 实例时才能工作,目的是方便输入通用命令,而-c <hashcode>是动态变化的。

    + + + diff --git a/3.x/doc/echo.html b/3.x/doc/echo.html new file mode 100644 index 00000000000..db1fd289ec9 --- /dev/null +++ b/3.x/doc/echo.html @@ -0,0 +1,42 @@ + + + + + + + + + echo | arthas + + + + + + + + diff --git a/3.x/doc/en/advanced-use.html b/3.x/doc/en/advanced-use.html new file mode 100644 index 00000000000..f6859d976d9 --- /dev/null +++ b/3.x/doc/en/advanced-use.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/advice-class.html b/3.x/doc/en/advice-class.html new file mode 100644 index 00000000000..98532e8b09a --- /dev/null +++ b/3.x/doc/en/advice-class.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/agent.html b/3.x/doc/en/agent.html new file mode 100644 index 00000000000..7af7354a338 --- /dev/null +++ b/3.x/doc/en/agent.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/arthas-properties.html b/3.x/doc/en/arthas-properties.html new file mode 100644 index 00000000000..e2288007179 --- /dev/null +++ b/3.x/doc/en/arthas-properties.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/async.html b/3.x/doc/en/async.html new file mode 100644 index 00000000000..7bfe71570c2 --- /dev/null +++ b/3.x/doc/en/async.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/auth.html b/3.x/doc/en/auth.html new file mode 100644 index 00000000000..9ac12db6ff8 --- /dev/null +++ b/3.x/doc/en/auth.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/base64.html b/3.x/doc/en/base64.html new file mode 100644 index 00000000000..1cf4d85bd18 --- /dev/null +++ b/3.x/doc/en/base64.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/batch-support.html b/3.x/doc/en/batch-support.html new file mode 100644 index 00000000000..57635307c48 --- /dev/null +++ b/3.x/doc/en/batch-support.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/cat.html b/3.x/doc/en/cat.html new file mode 100644 index 00000000000..84ead543456 --- /dev/null +++ b/3.x/doc/en/cat.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/classloader.html b/3.x/doc/en/classloader.html new file mode 100644 index 00000000000..34cc12dc454 --- /dev/null +++ b/3.x/doc/en/classloader.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/cls.html b/3.x/doc/en/cls.html new file mode 100644 index 00000000000..ec921f1586b --- /dev/null +++ b/3.x/doc/en/cls.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/commands.html b/3.x/doc/en/commands.html new file mode 100644 index 00000000000..46b8e188ec5 --- /dev/null +++ b/3.x/doc/en/commands.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/contact-us.html b/3.x/doc/en/contact-us.html new file mode 100644 index 00000000000..6abf1b7540c --- /dev/null +++ b/3.x/doc/en/contact-us.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/dashboard.html b/3.x/doc/en/dashboard.html new file mode 100644 index 00000000000..3c7193a3be4 --- /dev/null +++ b/3.x/doc/en/dashboard.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/docker.html b/3.x/doc/en/docker.html new file mode 100644 index 00000000000..aa4992ca82f --- /dev/null +++ b/3.x/doc/en/docker.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/download.html b/3.x/doc/en/download.html new file mode 100644 index 00000000000..ae1ea48c21d --- /dev/null +++ b/3.x/doc/en/download.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/dump.html b/3.x/doc/en/dump.html new file mode 100644 index 00000000000..9cd73026221 --- /dev/null +++ b/3.x/doc/en/dump.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/echo.html b/3.x/doc/en/echo.html new file mode 100644 index 00000000000..2f2de491041 --- /dev/null +++ b/3.x/doc/en/echo.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/faq.html b/3.x/doc/en/faq.html new file mode 100644 index 00000000000..b2dab170d87 --- /dev/null +++ b/3.x/doc/en/faq.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/getstatic.html b/3.x/doc/en/getstatic.html new file mode 100644 index 00000000000..20ba863341e --- /dev/null +++ b/3.x/doc/en/getstatic.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/grep.html b/3.x/doc/en/grep.html new file mode 100644 index 00000000000..5fefdc99705 --- /dev/null +++ b/3.x/doc/en/grep.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/groovy.html b/3.x/doc/en/groovy.html new file mode 100644 index 00000000000..233883cc327 --- /dev/null +++ b/3.x/doc/en/groovy.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/heapdump.html b/3.x/doc/en/heapdump.html new file mode 100644 index 00000000000..ac2ccac57f0 --- /dev/null +++ b/3.x/doc/en/heapdump.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/help.html b/3.x/doc/en/help.html new file mode 100644 index 00000000000..ec42fb3556f --- /dev/null +++ b/3.x/doc/en/help.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/history.html b/3.x/doc/en/history.html new file mode 100644 index 00000000000..df8aaf8ef5a --- /dev/null +++ b/3.x/doc/en/history.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/http-api.html b/3.x/doc/en/http-api.html new file mode 100644 index 00000000000..557040320e3 --- /dev/null +++ b/3.x/doc/en/http-api.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/idea-plugin.html b/3.x/doc/en/idea-plugin.html new file mode 100644 index 00000000000..dd1a9c0c60d --- /dev/null +++ b/3.x/doc/en/idea-plugin.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/index.html b/3.x/doc/en/index.html new file mode 100644 index 00000000000..e0d5d6f065e --- /dev/null +++ b/3.x/doc/en/index.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/install-detail.html b/3.x/doc/en/install-detail.html new file mode 100644 index 00000000000..aba40a0be74 --- /dev/null +++ b/3.x/doc/en/install-detail.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/jad.html b/3.x/doc/en/jad.html new file mode 100644 index 00000000000..66d069ff11e --- /dev/null +++ b/3.x/doc/en/jad.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/jfr.html b/3.x/doc/en/jfr.html new file mode 100644 index 00000000000..38cef7b7ac4 --- /dev/null +++ b/3.x/doc/en/jfr.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/jvm.html b/3.x/doc/en/jvm.html new file mode 100644 index 00000000000..4f56cfa8538 --- /dev/null +++ b/3.x/doc/en/jvm.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/keymap.html b/3.x/doc/en/keymap.html new file mode 100644 index 00000000000..17543e5892a --- /dev/null +++ b/3.x/doc/en/keymap.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/logger.html b/3.x/doc/en/logger.html new file mode 100644 index 00000000000..8e0e2ab77c7 --- /dev/null +++ b/3.x/doc/en/logger.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/manual-install.html b/3.x/doc/en/manual-install.html new file mode 100644 index 00000000000..4be1c3ce242 --- /dev/null +++ b/3.x/doc/en/manual-install.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/mbean.html b/3.x/doc/en/mbean.html new file mode 100644 index 00000000000..59057c1b2c5 --- /dev/null +++ b/3.x/doc/en/mbean.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/mc.html b/3.x/doc/en/mc.html new file mode 100644 index 00000000000..54b30822ecf --- /dev/null +++ b/3.x/doc/en/mc.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/memory.html b/3.x/doc/en/memory.html new file mode 100644 index 00000000000..25e224c8681 --- /dev/null +++ b/3.x/doc/en/memory.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/monitor.html b/3.x/doc/en/monitor.html new file mode 100644 index 00000000000..3c97526ec19 --- /dev/null +++ b/3.x/doc/en/monitor.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/ognl.html b/3.x/doc/en/ognl.html new file mode 100644 index 00000000000..177d725571d --- /dev/null +++ b/3.x/doc/en/ognl.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/options.html b/3.x/doc/en/options.html new file mode 100644 index 00000000000..a6e995d6eff --- /dev/null +++ b/3.x/doc/en/options.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/perfcounter.html b/3.x/doc/en/perfcounter.html new file mode 100644 index 00000000000..12bf2a8959e --- /dev/null +++ b/3.x/doc/en/perfcounter.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/profiler.html b/3.x/doc/en/profiler.html new file mode 100644 index 00000000000..0a68f160e69 --- /dev/null +++ b/3.x/doc/en/profiler.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/pwd.html b/3.x/doc/en/pwd.html new file mode 100644 index 00000000000..507f83c8785 --- /dev/null +++ b/3.x/doc/en/pwd.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/quick-start.html b/3.x/doc/en/quick-start.html new file mode 100644 index 00000000000..a88eab75933 --- /dev/null +++ b/3.x/doc/en/quick-start.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/quit.html b/3.x/doc/en/quit.html new file mode 100644 index 00000000000..21080e39bb2 --- /dev/null +++ b/3.x/doc/en/quit.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/redefine.html b/3.x/doc/en/redefine.html new file mode 100644 index 00000000000..0bbda21088c --- /dev/null +++ b/3.x/doc/en/redefine.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/release-notes.html b/3.x/doc/en/release-notes.html new file mode 100644 index 00000000000..7228b1a9343 --- /dev/null +++ b/3.x/doc/en/release-notes.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/reset.html b/3.x/doc/en/reset.html new file mode 100644 index 00000000000..4c34a794278 --- /dev/null +++ b/3.x/doc/en/reset.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/retransform.html b/3.x/doc/en/retransform.html new file mode 100644 index 00000000000..ae577764eb3 --- /dev/null +++ b/3.x/doc/en/retransform.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/save-log.html b/3.x/doc/en/save-log.html new file mode 100644 index 00000000000..1dc7d7fc69b --- /dev/null +++ b/3.x/doc/en/save-log.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/sc.html b/3.x/doc/en/sc.html new file mode 100644 index 00000000000..908179f3476 --- /dev/null +++ b/3.x/doc/en/sc.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/session.html b/3.x/doc/en/session.html new file mode 100644 index 00000000000..0c93df3caae --- /dev/null +++ b/3.x/doc/en/session.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/sm.html b/3.x/doc/en/sm.html new file mode 100644 index 00000000000..3983264e73a --- /dev/null +++ b/3.x/doc/en/sm.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/spring-boot-starter.html b/3.x/doc/en/spring-boot-starter.html new file mode 100644 index 00000000000..1b0545e03f5 --- /dev/null +++ b/3.x/doc/en/spring-boot-starter.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/stack.html b/3.x/doc/en/stack.html new file mode 100644 index 00000000000..9661b5f8484 --- /dev/null +++ b/3.x/doc/en/stack.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/start-arthas.html b/3.x/doc/en/start-arthas.html new file mode 100644 index 00000000000..8d39cccdd6d --- /dev/null +++ b/3.x/doc/en/start-arthas.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/stop.html b/3.x/doc/en/stop.html new file mode 100644 index 00000000000..258d8f57e62 --- /dev/null +++ b/3.x/doc/en/stop.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/sysenv.html b/3.x/doc/en/sysenv.html new file mode 100644 index 00000000000..b0522dcb047 --- /dev/null +++ b/3.x/doc/en/sysenv.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/sysprop.html b/3.x/doc/en/sysprop.html new file mode 100644 index 00000000000..77364877159 --- /dev/null +++ b/3.x/doc/en/sysprop.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/tee.html b/3.x/doc/en/tee.html new file mode 100644 index 00000000000..5c8ab65df96 --- /dev/null +++ b/3.x/doc/en/tee.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/thread.html b/3.x/doc/en/thread.html new file mode 100644 index 00000000000..9747fbb809f --- /dev/null +++ b/3.x/doc/en/thread.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/trace.html b/3.x/doc/en/trace.html new file mode 100644 index 00000000000..44538c3f537 --- /dev/null +++ b/3.x/doc/en/trace.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/tt.html b/3.x/doc/en/tt.html new file mode 100644 index 00000000000..da66bb25089 --- /dev/null +++ b/3.x/doc/en/tt.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/tunnel.html b/3.x/doc/en/tunnel.html new file mode 100644 index 00000000000..5d7a8fcc791 --- /dev/null +++ b/3.x/doc/en/tunnel.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/version.html b/3.x/doc/en/version.html new file mode 100644 index 00000000000..bb3e66474ee --- /dev/null +++ b/3.x/doc/en/version.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/vmoption.html b/3.x/doc/en/vmoption.html new file mode 100644 index 00000000000..1e25e3f77b0 --- /dev/null +++ b/3.x/doc/en/vmoption.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/vmtool.html b/3.x/doc/en/vmtool.html new file mode 100644 index 00000000000..8963699d99d --- /dev/null +++ b/3.x/doc/en/vmtool.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/watch.html b/3.x/doc/en/watch.html new file mode 100644 index 00000000000..df0ada2c51a --- /dev/null +++ b/3.x/doc/en/watch.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/en/web-console.html b/3.x/doc/en/web-console.html new file mode 100644 index 00000000000..36e28b27327 --- /dev/null +++ b/3.x/doc/en/web-console.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/doc/faq.html b/3.x/doc/faq.html new file mode 100644 index 00000000000..5a36451476e --- /dev/null +++ b/3.x/doc/faq.html @@ -0,0 +1,47 @@ + + + + + + + + + FAQ | arthas + + + + +
    目录

    FAQ

    提示

    不在本列表里的问题,请到 issue 里搜索。 https://github.com/alibaba/arthas/issues在新窗口打开

    日志文件在哪里?

    日志文件路径: ~/logs/arthas/arthas.log

    Arthas attach 之后对原进程性能有多大的影响

    https://github.com/alibaba/arthas/issues/44在新窗口打开

    target process not responding or HotSpot VM not loaded

    com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded

    1. 检查当前用户和目标 java 进程是否一致。如果不一致,则切换到同一用户。JVM 只能 attach 同样用户下的 java 进程。
    2. 尝试使用 jstack -l $pid,如果进程没有反应,则说明进程可能假死,无法响应 JVM attach 信号。所以同样基于 attach 机制的 Arthas 无法工作。尝试使用jmap heapdump 后分析。
    3. 尝试按quick-start里的方式 attach math-game。
    4. 更多情况参考: https://github.com/alibaba/arthas/issues/347在新窗口打开

    trace/watch 等命令能否增强 jdk 里的类?

    默认情况下会过滤掉java.开头的类和被BootStrap ClassLoader加载的类。可以通过参数开启。

    options unsafe true
    +

    更多参考 options

    提示

    通过 java.lang.instrument.Instrumentation#appendToBootstrapClassLoaderSearch append 到Bootstrap ClassLoader的 jar 包需要开启 unsafe。

    怎么以json格式查看结果

    options json-format true
    +

    更多参考 options

    Arthas 能否跟踪 native 函数

    不能。

    能不能查看内存里某个变量的值

    1. 可以使用vmtool命令。
    2. 可以用一些技巧,用tt命令拦截到对象,或者从静态函数里取到对象。

    方法同名过滤

    同名方法过滤可以通过匹配表达式,可以使用表达式核心变量中所有变量作为已知条件,可以通过判断参数个数params.length ==1, 参数类型params[0] instanceof java.lang.Integer、返回值类型 returnObj instanceof java.util.List 等等一种或者多种组合进行过滤。

    可以使用 -v 查看观察匹配表达式的执行结果 https://github.com/alibaba/arthas/issues/1348在新窗口打开

    例子math-game

    watch demo.MathGame primeFactors '{params,returnObj,throwExp}' 'params.length >0 && returnObj instanceof java.util.List' -v
    +

    怎么 watch、trace 构造函数 ?

    watch demo.MathGame <init> '{params,returnObj,throwExp}' -v
    +

    怎样 watch、trace 内部类?

    在 JVM 规范里内部类的格式是OuterClass$InnerClass

    watch OuterClass$InnerClass
    +

    输入中文/Unicode 字符

    把中文/Unicode 字符转为\u表示方法:

    ognl '@java.lang.System@out.println("Hello \u4e2d\u6587")'
    +

    java.lang.ClassFormatError: null、skywalking arthas 兼容使用

    当出现这个错误日志java.lang.ClassFormatError: null,通常情况下都是被其他字节码工具修改过与 arthas 修改字节码不兼容。

    比如: 使用 skywalking V8.1.0 以下版本 无法 trace、watch 被 skywalking agent 增强过的类在新窗口打开, V8.1.0 以上版本可以兼容使用,更多参考 skywalking 配置 skywalking compatible with other javaagent bytecode processing在新窗口打开

    class redefinition failed: attempted to change the schema (add/remove fields)

    参考: https://github.com/alibaba/arthas/issues/2165在新窗口打开

    Arthas 能不能离线使用

    可以。下载全量包解压即可,参考: 下载

    Attach docker/k8s 里的 pid 为 1 的进程失败

    参考: https://github.com/alibaba/arthas/issues/362#issuecomment-448185416在新窗口打开

    为什么下载了新版本的 Arthas,连接的却是旧版本?

    比如启动的 as3.sh/arthas-boot3.jar 版本是 3.5._ 的,但是连接上之后,打印的 arthas 版本是 3.4._ 的。

    可能是之前使用旧版本的 arthas 诊断过目标进程。可以先执行stop停止掉旧版本的 arthas,再重新使用新版本 attach。

    + + + diff --git a/3.x/doc/getstatic.html b/3.x/doc/getstatic.html new file mode 100644 index 00000000000..76613beea25 --- /dev/null +++ b/3.x/doc/getstatic.html @@ -0,0 +1,74 @@ + + + + + + + + + getstatic | arthas + + + + +
    目录

    getstatic

    getstatic在线教程在新窗口打开

    使用参考

    • 推荐直接使用ognl命令,更加灵活。

    通过 getstatic 命令可以方便的查看类的静态属性。使用方法为getstatic class_name field_name

    $ getstatic demo.MathGame random
    +field: random
    +@Random[
    +    serialVersionUID=@Long[3905348978240129619],
    +    seed=@AtomicLong[120955813885284],
    +    multiplier=@Long[25214903917],
    +    addend=@Long[11],
    +    mask=@Long[281474976710655],
    +    DOUBLE_UNIT=@Double[1.1102230246251565E-16],
    +    BadBound=@String[bound must be positive],
    +    BadRange=@String[bound must be greater than origin],
    +    BadSize=@String[size must be non-negative],
    +    seedUniquifier=@AtomicLong[-3282039941672302964],
    +    nextNextGaussian=@Double[0.0],
    +    haveNextNextGaussian=@Boolean[false],
    +    serialPersistentFields=@ObjectStreamField[][isEmpty=false;size=3],
    +    unsafe=@Unsafe[sun.misc.Unsafe@2eaa1027],
    +    seedOffset=@Long[24],
    +]
    +
    • 指定 classLoader

    注意 hashcode 是变化的,需要先查看当前的 ClassLoader 信息,使用sc -d <ClassName>提取对应 ClassLoader 的 hashcode。

    如果你使用-c,你需要手动输入 hashcode:-c <hashcode>

    $ getstatic -c 3d4eac69 demo.MathGame random
    +

    对于只有唯一实例的 ClassLoader 可以通过--classLoaderClass指定 class name,使用起来更加方便:

    getstatic --classLoaderClass sun.misc.Launcher$AppClassLoader demo.MathGame random

    • 注: 这里 classLoaderClass 在 java 8 是 sun.misc.Launcher$AppClassLoader,而java 11的classloader是jdk.internal.loader.ClassLoaders$AppClassLoader,killercoda 目前环境是 java11。

    --classLoaderClass 的值是 ClassLoader 的类名,只有匹配到唯一的 ClassLoader 实例时才能工作,目的是方便输入通用命令,而-c <hashcode>是动态变化的。

    如果该静态属性是一个复杂对象,还可以支持在该属性上通过 ognl 表示进行遍历,过滤,访问对象的内部属性等操作。

    例如,假设 n 是一个 Map,Map 的 Key 是一个 Enum,我们想过滤出 Map 中 Key 为某个 Enum 的值,可以写如下命令

    $ getstatic com.alibaba.arthas.Test n 'entrySet().iterator.{? #this.key.name()=="STOP"}'
    +field: n
    +@ArrayList[
    +    @Node[STOP=bbb],
    +]
    +Affect(row-cnt:1) cost in 68 ms.
    +
    +
    +$ getstatic com.alibaba.arthas.Test m 'entrySet().iterator.{? #this.key=="a"}'
    +field: m
    +@ArrayList[
    +    @Node[a=aaa],
    +]
    +
    + + + diff --git a/3.x/doc/grep.html b/3.x/doc/grep.html new file mode 100644 index 00000000000..7f61c445789 --- /dev/null +++ b/3.x/doc/grep.html @@ -0,0 +1,70 @@ + + + + + + + + + grep | arthas + + + + +
    目录

    grep

    grep在线教程在新窗口打开

    提示

    类似传统的grep命令。

    使用参考

     USAGE:
    +   grep [-A <value>] [-B <value>] [-C <value>] [-h] [-i] [-v] [-n] [-m <value>] [-e] [--trim-end] pattern
    +
    + SUMMARY:
    +   grep command for pipes.
    +
    + EXAMPLES:
    +  sysprop | grep java
    +  sysprop | grep java -n
    +  sysenv | grep -v JAVA
    +  sysenv | grep -e "(?i)(JAVA|sun)" -m 3  -C 2
    +  sysenv | grep JAVA -A2 -B3
    +  thread | grep -m 10 -e  "TIMED_WAITING|WAITING"
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/grep
    +
    + OPTIONS:
    + -A, --after-context <value>                                                    Print NUM lines of trailing context)
    + -B, --before-context <value>                                                   Print NUM lines of leading context)
    + -C, --context <value>                                                          Print NUM lines of output context)
    + -h, --help                                                                     this help
    + -i, --ignore-case                                                              Perform case insensitive matching.  By default, grep is case sensitive.
    + -v, --invert-match                                                             Select non-matching lines
    + -n, --line-number                                                              Print line number with output lines
    + -m, --max-count <value>                                                        stop after NUM selected lines)
    + -e, --regex                                                                    Enable regular expression to match
    +     --trim-end                                                                 Remove whitespaces at the end of the line
    + <pattern>                                                                      Pattern
    +
    + + + diff --git a/3.x/doc/groovy.html b/3.x/doc/groovy.html new file mode 100644 index 00000000000..b95dfa1ed0a --- /dev/null +++ b/3.x/doc/groovy.html @@ -0,0 +1,164 @@ + + + + + + + + + groovy | arthas + + + + +
    目录

    groovy

    提示

    Arthas 支持 groovy 脚本增强,允许像 BTrace 一样编写脚本来解决问题,可以在 groovy 脚本中进行 if/for/switch/while 等控制语句,不受限制,但相比 BTrace 而言拥有更多的限制范围。

    限制内容

    1. 禁止改变原有逻辑,与 watch 等命令一样,重点保证的是监听和观察。
    2. 只允许在方法的 before/success/exception/finish 四个环节进行监听。

    参数说明

    参数名称参数说明
    class-pattern类名表达式匹配
    method-pattern方法名表达式匹配
    script-filepathgroovy 脚本的绝对路径
    [S]匹配所有的子类
    [E]开启正则表达式匹配,默认为通配符匹配

    需要说明的是,第三个输入参数是脚本的绝对路径,比如 /tmp/test.groovy,不建议输入相对路径,比如 ./test.groovy

    五个关键函数声明

    /**
    + * 增强脚本监听器
    + */
    +interface ScriptListener {
    +
    +    /**
    +     * 脚本创建
    +     *
    +     * @param output 输出器
    +     */
    +    void create(Output output);
    +
    +    /**
    +     * 脚本销毁
    +     *
    +     * @param output 输出器
    +     */
    +    void destroy(Output output);
    +
    +    /**
    +     * 方法执行前
    +     *
    +     * @param output 输出器
    +     * @param advice 通知点
    +     */
    +    void before(Output output, Advice advice);
    +
    +    /**
    +     * 方法正常返回
    +     *
    +     * @param output 输出器
    +     * @param advice 通知点
    +     */
    +    void afterReturning(Output output, Advice advice);
    +
    +    /**
    +     * 方法异常返回
    +     *
    +     * @param output 输出器
    +     * @param advice 通知点
    +     */
    +    void afterThrowing(Output output, Advice advice);
    +
    +}
    +

    参数 Advice 说明

    Advice 参数最主要是封装了通知节点的所有信息。参考表达式核心变量中关于该节点的描述。

    参数 Output 说明

    Output 参数只拥有三个方法,主要的工作还是输出对应的文本信息

    /**
    + * 输出器
    + */
    +interface Output {
    +
    +    /**
    +     * 输出字符串(不换行)
    +     *
    +     * @param string 待输出字符串
    +     * @return this
    +     */
    +    Output print(String string);
    +
    +    /**
    +     * 输出字符串(换行)
    +     *
    +     * @param string 待输出字符串
    +     * @return this
    +     */
    +    Output println(String string);
    +
    +    /**
    +     * 结束当前脚本
    +     *
    +     * @return this
    +     */
    +    Output finish();
    +
    +}
    +

    一个输出日志的 groovy 脚本示例

    import com.taobao.arthas.core.command.ScriptSupportCommand
    +import com.taobao.arthas.core.util.Advice
    +
    +import static java.lang.String.format
    +
    +/**
    + * 输出方法日志
    + */
    +public class Logger implements ScriptSupportCommand.ScriptListener {
    +
    +    @Override
    +    void create(ScriptSupportCommand.Output output) {
    +        output.println("script create.");
    +    }
    +
    +    @Override
    +    void destroy(ScriptSupportCommand.Output output) {
    +        output.println("script destroy.");
    +    }
    +
    +    @Override
    +    void before(ScriptSupportCommand.Output output, Advice advice) {
    +        output.println(format("before:class=%s;method=%s;paramslen=%d;%s;",
    +                advice.getClazz().getSimpleName(),
    +                advice.getMethod().getName(),
    +                advice.getParams().length, advice.getParams()))
    +    }
    +
    +    @Override
    +    void afterReturning(ScriptSupportCommand.Output output, Advice advice) {
    +        output.println(format("returning:class=%s;method=%s;",
    +                advice.getClazz().getSimpleName(),
    +                advice.getMethod().getName()))
    +    }
    +
    +    @Override
    +    void afterThrowing(ScriptSupportCommand.Output output, Advice advice) {
    +        output.println(format("throwing:class=%s;method=%s;",
    +                advice.getClazz().getSimpleName(),
    +                advice.getMethod().getName()))
    +    }
    +}
    +

    使用示例:

    $ groovy com.alibaba.sample.petstore.dal.dao.ProductDao getProductById /Users/zhuyong/middleware/arthas/scripts/Logger.groovy -S
    +script create.
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 102 ms.
    +before:class=IbatisProductDao;method=getProductById;paramslen=1;[Ljava.lang.Object;@45df64fc;
    +returning:class=IbatisProductDao;method=getProductById;
    +before:class=IbatisProductDao;method=getProductById;paramslen=1;[Ljava.lang.Object;@5b0e2d00;
    +returning:class=IbatisProductDao;method=getProductById;
    +
    + + + diff --git a/3.x/doc/heapdump.html b/3.x/doc/heapdump.html new file mode 100644 index 00000000000..527f933bc3c --- /dev/null +++ b/3.x/doc/heapdump.html @@ -0,0 +1,50 @@ + + + + + + + + + heapdump | arthas + + + + +
    目录

    heapdump

    heapdump在线教程在新窗口打开

    提示

    dump java heap, 类似 jmap 命令的 heap dump 功能。

    使用参考

    dump 到指定文件

    [arthas@58205]$ heapdump arthas-output/dump.hprof
    +Dumping heap to arthas-output/dump.hprof ...
    +Heap dump file created
    +

    提示

    生成文件在arthas-output目录,可以通过浏览器下载: http://localhost:8563/arthas-output/

    只 dump live 对象

    [arthas@58205]$ heapdump --live /tmp/dump.hprof
    +Dumping heap to /tmp/dump.hprof ...
    +Heap dump file created
    +

    dump 到临时文件

    [arthas@58205]$ heapdump
    +Dumping heap to /var/folders/my/wy7c9w9j5732xbkcyt1mb4g40000gp/T/heapdump2019-09-03-16-385121018449645518991.hprof...
    +Heap dump file created
    +
    + + + diff --git a/3.x/doc/help.html b/3.x/doc/help.html new file mode 100644 index 00000000000..718a2fe4cd7 --- /dev/null +++ b/3.x/doc/help.html @@ -0,0 +1,106 @@ + + + + + + + + + help | arthas + + + + +
    目录

    help

    查看命令帮助信息,可以查看当前 arthas 版本支持的指令,或者查看具体指令的使用说明。

    提示

    [help 指令]的等同于[指令 -help],都是查看具体指令的使用说明。

    参数说明

    参数名称参数说明
    不接参数查询当前 arthas 版本支持的指令以及指令描述
    [name:]查询具体指令的使用说明

    使用参考

    $ help
    + NAME         DESCRIPTION
    + help         Display Arthas Help
    + auth         Authenticates the current session
    + keymap       Display all the available keymap for the specified connection.
    + sc           Search all the classes loaded by JVM
    + sm           Search the method of classes loaded by JVM
    + classloader  Show classloader info
    + jad          Decompile class
    + getstatic    Show the static field of a class
    + monitor      Monitor method execution statistics, e.g. total/success/failure count, average rt, fail rate, etc.
    + stack        Display the stack trace for the specified class and method
    + thread       Display thread info, thread stack
    + trace        Trace the execution time of specified method invocation.
    + watch        Display the input/output parameter, return object, and thrown exception of specified method invocation
    + tt           Time Tunnel
    + jvm          Display the target JVM information
    + perfcounter  Display the perf counter information.
    + ognl         Execute ognl expression.
    + mc           Memory compiler, compiles java files into bytecode and class files in memory.
    + redefine     Redefine classes. @see Instrumentation#redefineClasses(ClassDefinition...)
    + retransform  Retransform classes. @see Instrumentation#retransformClasses(Class...)
    + dashboard    Overview of target jvm's thread, memory, gc, vm, tomcat info.
    + dump         Dump class byte array from JVM
    + heapdump     Heap dump
    + options      View and change various Arthas options
    + cls          Clear the screen
    + reset        Reset all the enhanced classes
    + version      Display Arthas version
    + session      Display current session information
    + sysprop      Display, and change the system properties.
    + sysenv       Display the system env.
    + vmoption     Display, and update the vm diagnostic options.
    + logger       Print logger info, and update the logger level
    + history      Display command history
    + cat          Concatenate and print files
    + base64       Encode and decode using Base64 representation
    + echo         write arguments to the standard output
    + pwd          Return working directory name
    + mbean        Display the mbean information
    + grep         grep command for pipes.
    + tee          tee command for pipes.
    + profiler     Async Profiler. https://github.com/jvm-profiling-tools/async-profiler
    + stop         Stop/Shutdown Arthas server and exit the console.
    +
    +
    +
     $ help dashboard
    +  USAGE:
    +   dashboard [-h] [-i <value>] [-n <value>]
    +
    + SUMMARY:
    +   Overview of target jvm's thread, memory, gc, vm, tomcat info.
    +
    + EXAMPLES:
    +   dashboard
    +   dashboard -n 10
    +   dashboard -i 2000
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/dashboard
    +
    + OPTIONS:
    + -h, --help                              this help
    + -i, --interval <value>                  The interval (in ms) between two executions, default is 5000 ms.
    + -n, --number-of-execution <value>       The number of times this command will be executed.
    +
    + + + diff --git a/3.x/doc/history.html b/3.x/doc/history.html new file mode 100644 index 00000000000..d834fd1d646 --- /dev/null +++ b/3.x/doc/history.html @@ -0,0 +1,50 @@ + + + + + + + + + history | arthas + + + + +
    目录

    history

    打印命令历史。

    提示

    历史指令会通过一个名叫 history 的文件持久化,所以 history 指令可以查看当前 arthas 服务器的所有历史命令,而不仅只是当前次会话使用过的命令。

    参数说明

    参数名称参数说明
    [c:]清空历史指令
    [n:]显示最近执行的 n 条指令

    使用参考

    #查看最近执行的3条指令
    +$ history 3
    +  269  thread
    +  270  cls
    +  271  history 3
    +
     #清空指令
    + $ history -c
    + $ history 3
    +  1  history 3
    +
    + + + diff --git a/3.x/doc/http-api.html b/3.x/doc/http-api.html new file mode 100644 index 00000000000..b3bef1f985d --- /dev/null +++ b/3.x/doc/http-api.html @@ -0,0 +1,384 @@ + + + + + + + + + Http API | arthas + + + + +
    目录

    Http API

    Http API在线教程在新窗口打开

    概览

    Http API 提供类似 RESTful 的交互接口,请求和响应均为 JSON 格式的数据。相对于 Telnet/WebConsole 的输出非结构化文本数据,Http API 可以提供结构化的数据,支持更复杂的交互功能,比如特定应用场景的一系列诊断操作。

    访问地址

    Http API 接口地址为:http://ip:port/api,必须使用 POST 方式提交请求参数。如 POST http://127.0.0.1:8563/api

    注意:telnet 服务的 3658 端口与 Chrome 浏览器有兼容性问题,建议使用 http 端口 8563 来访问 http 接口。

    请求数据格式

    {
    +  "action": "exec",
    +  "requestId": "req112",
    +  "sessionId": "94766d3c-8b39-42d3-8596-98aee3ccbefb",
    +  "consumerId": "955dbd1325334a84972b0f3ac19de4f7_2",
    +  "command": "version",
    +  "execTimeout": "10000"
    +}
    +

    请求数据格式说明:

    • action : 请求的动作/行为,可选值请参考"请求 Action"小节。
    • requestId : 可选请求 ID,由客户端生成。
    • sessionId : Arthas 会话 ID,一次性命令不需要设置会话 ID。
    • consumerId : Arthas 消费者 ID,用于多人共享会话。
    • command : Arthas command line 。
    • execTimeout : 命令同步执行的超时时间(ms),默认为 30000。

    注意: 不同的 action 使用到参数不同,根据具体的 action 来设置参数。

    请求 Action

    目前支持的请求 Action 如下:

    • exec : 同步执行命令,命令正常结束或者超时后中断命令执行后返回命令的执行结果。
    • async_exec : 异步执行命令,立即返回命令的调度结果,命令执行结果通过pull_results获取。
    • interrupt_job : 中断会话当前的命令,类似 Telnet Ctrl + c的功能。
    • pull_results : 获取异步执行的命令的结果,以 http 长轮询(long-polling)方式重复执行
    • init_session : 创建会话
    • join_session : 加入会话,用于支持多人共享同一个 Arthas 会话
    • close_session : 关闭会话

    响应状态

    响应中的 state 属性表示请求处理状态,取值如下:

    • SCHEDULED:异步执行命令时表示已经创建 job 并已提交到命令执行队列,命令可能还没开始执行或者执行中;
    • SUCCEEDED:请求处理成功(完成状态);
    • FAILED:请求处理失败(完成状态),通常附带 message 说明原因;
    • REFUSED:请求被拒绝(完成状态),通常附带 message 说明原因;

    一次性命令

    与执行批处理命令类似,一次性命令以同步方式执行。不需要创建会话,不需要设置sessionId选项。

    {
    +  "action": "exec",
    +  "command": "<Arthas command line>"
    +}
    +

    比如获取 Arthas 版本号:

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"exec",
    +  "command":"version"
    +}
    +'
    +

    响应内容如下:

    {
    +  "state": "SUCCEEDED",
    +  "sessionId": "ee3bc004-4586-43de-bac0-b69d6db7a869",
    +  "body": {
    +    "results": [
    +      {
    +        "type": "version",
    +        "version": "3.3.7",
    +        "jobId": 5
    +      },
    +      {
    +        "jobId": 5,
    +        "statusCode": 0,
    +        "type": "status"
    +      }
    +    ],
    +    "timeExpired": false,
    +    "command": "version",
    +    "jobStatus": "TERMINATED",
    +    "jobId": 5
    +  }
    +}
    +

    响应数据解析:

    • state: 请求处理状态,参考“接口响应状态”说明
    • sessionId : Arthas 会话 ID,一次性命令自动创建及销毁临时会话
    • body.jobId: 命令的任务 ID,同一任务输出的所有 Result 都是相同的 jobId
    • body.jobStatus: 任务状态,同步执行正常结束为TERMINATED
    • body.timeExpired: 任务执行是否超时
    • body/results: 命令执行的结果列表

    命令结果格式说明

    [
    +  {
    +    "type": "version",
    +    "version": "3.3.7",
    +    "jobId": 5
    +  },
    +  {
    +    "jobId": 5,
    +    "statusCode": 0,
    +    "type": "status"
    +  }
    +]
    +
    • type : 命令结果类型,除了status等特殊的几个外,其它的保持与 Arthas 命令名称一致。请参考"特殊命令结果"小节。
    • jobId : 处理命令的任务 ID。
    • 其它字段为每个不同命令的数据。

    注意:也可以使用一次性命令的方式执行 watch/trace 等连续输出的命令,但不能中断命令执行,可能出现长时间没有结束的问题。请参考"watch 命令输出 map 对象"小节的示例。

    请尽量按照以下方式处理:

    • 设置合理的execTimeout,到达超时时间后强制中断命令执行,避免长时间挂起。
    • 通过-n参数指定较少的执行次数。
    • 保证命令匹配的方法可以成功命中和 condition-express 编写正确,如果 watch/trace 没有命中就算指定-n 1也会挂起等待到执行超时。

    会话交互

    由用户创建及管理 Arthas 会话,适用于复杂的交互过程。访问流程如下:

    • 创建会话
    • 加入会话(可选)
    • 拉取命令结果
    • 执行一系列命令
    • 中断命令执行
    • 关闭会话

    创建会话

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"init_session"
    +}
    +'
    +

    响应结果:

    {
    +  "sessionId": "b09f1353-202c-407b-af24-701b744f971e",
    +  "consumerId": "5ae4e5fbab8b4e529ac404f260d4e2d1_1",
    +  "state": "SUCCEEDED"
    +}
    +

    当前会话 ID 为: b09f1353-202c-407b-af24-701b744f971e, 当前消费者 ID 为:5ae4e5fbab8b4e529ac404f260d4e2d1_1

    加入会话

    指定要加入的会话 ID,服务端将分配一个新的消费者 ID。多个消费者可以接收到同一个会话的命令结果。本接口用于支持多人共享同一个会话或刷新页面后重新拉取会话历史记录。

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"join_session",
    +  "sessionId" : "b09f1353-202c-407b-af24-701b744f971e"
    +}
    +'
    +

    响应结果:

    {
    +  "consumerId": "8f7f6ad7bc2d4cb5aa57a530927a95cc_2",
    +  "sessionId": "b09f1353-202c-407b-af24-701b744f971e",
    +  "state": "SUCCEEDED"
    +}
    +

    新的消费者 ID 为8f7f6ad7bc2d4cb5aa57a530927a95cc_2

    拉取命令结果

    拉取命令结果消息的 action 为pull_results。请使用 Http long-polling 方式,定时循环拉取结果消息。 消费者的超时时间为 5 分钟,超时后需要调用join_session分配新的消费者。每个消费者单独分配一个缓存队列,按顺序拉取命令结果,不会影响到其它消费者。

    请求参数需要指定会话 ID 及消费者 ID:

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"pull_results",
    +  "sessionId" : "b09f1353-202c-407b-af24-701b744f971e",
    +  "consumerId" : "8f7f6ad7bc2d4cb5aa57a530927a95cc_2"
    +}
    +'
    +

    用 Bash 脚本定时拉取结果消息:

    while true; do curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"pull_results",
    +  "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a",
    +  "consumerId" : "8ecb9cb7c7804d5d92e258b23d5245cc_1"
    +}
    +' | json_pp; sleep 2; done
    +

    注: json_pp 工具将输出内容格式化为 pretty json。

    响应内容如下:

    {
    +  "body": {
    +    "results": [
    +      {
    +        "inputStatus": "DISABLED",
    +        "jobId": 0,
    +        "type": "input_status"
    +      },
    +      {
    +        "type": "message",
    +        "jobId": 0,
    +        "message": "Welcome to arthas!"
    +      },
    +      {
    +        "tutorials": "https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html",
    +        "time": "2020-08-06 15:56:43",
    +        "type": "welcome",
    +        "jobId": 0,
    +        "pid": "7909",
    +        "wiki": "https://arthas.aliyun.com/3.x/doc",
    +        "version": "3.3.7"
    +      },
    +      {
    +        "inputStatus": "ALLOW_INPUT",
    +        "type": "input_status",
    +        "jobId": 0
    +      }
    +    ]
    +  },
    +  "sessionId": "b09f1353-202c-407b-af24-701b744f971e",
    +  "consumerId": "8f7f6ad7bc2d4cb5aa57a530927a95cc_2",
    +  "state": "SUCCEEDED"
    +}
    +

    异步执行命令

    curl -Ss -XPOST http://localhost:8563/api -d '''
    +{
    +  "action":"async_exec",
    +  "command":"watch demo.MathGame primeFactors \"{params, returnObj, throwExp}\" ",
    +   "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a"
    +}
    +'''
    +

    async_exec 的结果:

    {
    +  "sessionId": "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a",
    +  "state": "SCHEDULED",
    +  "body": {
    +    "jobStatus": "READY",
    +    "jobId": 3,
    +    "command": "watch demo.MathGame primeFactors \"{params, returnObj, throwExp}\" "
    +  }
    +}
    +
    • state : SCHEDULED 状态表示已经解析命令生成任务,但未开始执行。
    • body.jobId : 异步执行命令的任务 ID,可以根据此任务 ID 来过滤在pull_results输出的命令结果。
    • body.jobStatus : 任务状态READY表示未开始执行。

    查看上面自动拉取结果消息脚本的 shell 输出:

    {
    +   "body" : {
    +      "results" : [
    +         {
    +            "type" : "command",
    +            "jobId" : 3,
    +            "state" : "SCHEDULED",
    +            "command" : "watch demo.MathGame primeFactors \"{params, returnObj, throwExp}\" "
    +         },
    +         {
    +            "inputStatus" : "ALLOW_INTERRUPT",
    +            "jobId" : 0,
    +            "type" : "input_status"
    +         },
    +         {
    +            "success" : true,
    +            "jobId" : 3,
    +            "effect" : {
    +               "listenerId" : 3,
    +               "cost" : 24,
    +               "classCount" : 1,
    +               "methodCount" : 1
    +            },
    +            "type" : "enhancer"
    +         },
    +         {
    +            "sizeLimit" : 10485760,
    +            "expand" : 1,
    +            "jobId" : 3,
    +            "type" : "watch",
    +            "cost" : 0.071499,
    +            "ts" : 1596703453237,
    +            "value" : [
    +               [
    +                  -170365
    +               ],
    +               null,
    +               {
    +                  "stackTrace" : [
    +                     {
    +                        "className" : "demo.MathGame",
    +                        "classLoaderName" : "app",
    +                        "methodName" : "primeFactors",
    +                        "nativeMethod" : false,
    +                        "lineNumber" : 46,
    +                        "fileName" : "MathGame.java"
    +                     },
    +                     ...
    +                  ],
    +                  "localizedMessage" : "number is: -170365, need >= 2",
    +                  "@type" : "java.lang.IllegalArgumentException",
    +                  "message" : "number is: -170365, need >= 2"
    +               }
    +            ]
    +         },
    +         {
    +            "type" : "watch",
    +            "cost" : 0.033375,
    +            "jobId" : 3,
    +            "ts" : 1596703454241,
    +            "value" : [
    +               [
    +                  1
    +               ],
    +               [
    +                  2,
    +                  2,
    +                  2,
    +                  2,
    +                  13,
    +                  491
    +               ],
    +               null
    +            ],
    +            "sizeLimit" : 10485760,
    +            "expand" : 1
    +         }
    +      ]
    +   },
    +   "consumerId" : "8ecb9cb7c7804d5d92e258b23d5245cc_1",
    +   "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a",
    +   "state" : "SUCCEEDED"
    +}
    +

    watch 命令结果的value为 watch-experss 的值,上面命令中为{params, returnObj, throwExp},所以 watch 结果的 value 为一个长度为 3 的数组,每个元素分别对应相应顺序的表达式。 请参考"watch 命令输出 map 对象"小节。

    中断命令执行

    中断会话正在运行的前台 Job(前台任务):

    curl -Ss -XPOST http://localhost:8563/api -d '''
    +{
    +  "action":"interrupt_job",
    +  "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a"
    +}
    +'''
    +
    {
    +   "state" : "SUCCEEDED",
    +   "body" : {
    +      "jobStatus" : "TERMINATED",
    +      "jobId" : 3
    +   }
    +}
    +

    关闭会话

    指定会话 ID,关闭会话。

    curl -Ss -XPOST http://localhost:8563/api -d '''
    +{
    +  "action":"close_session",
    +  "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a"
    +}
    +'''
    +
    {
    +  "state": "SUCCEEDED"
    +}
    +

    鉴权

    参考: auth

    Web UI

    一个基于 Http API 接口实现的 Web UI,访问地址为: http://127.0.0.1:8563/ui在新窗口打开

    已实现功能:

    • 创建会话
    • 复制并打开 url 加入会话,多人共享会话
    • 周期性拉取会话命令结果消息
    • 刷新页面或者加入会话拉取会话历史命令消息
    • 输入命令/中断命令状态控制

    待开发功能:

    • 改进将命令结果消息可读性
    • 命令输入支持自动完成及命令模板
    • 提供命令帮助
    • 支持个人选项设置

    特殊命令结果

    status

    {
    +  "jobId": 5,
    +  "statusCode": 0,
    +  "type": "status"
    +}
    +

    typestatus表示命令执行状态:

    每个命令执行结束后都有唯一一个 status 结果。statusCode 为 0 表示执行成功,statusCode 为非 0 值表示执行失败,类似进程退出码(exit code)。

    命令执行失败时一般会提供错误消息,如:

    {
    +  "jobId": 3,
    +  "message": "The argument 'class-pattern' is required",
    +  "statusCode": -10,
    +  "type": "status"
    +}
    +

    input_status

    {
    +  "inputStatus": "ALLOW_INPUT",
    +  "type": "input_status",
    +  "jobId": 0
    +}
    +

    typeinput_status表示输入状态:

    用于 UI 交互时控制用户输入,每次执行命令前后会发送改变的消息。 inputStatus 的值说明:

    • ALLOW_INPUT : 允许用户输入命令,表示会话没有在执行的前台命令,可以接受新的命令。
    • ALLOW_INTERRUPT : 允许用户中断命令执行,表示当前正在执行命令,用户可以发送interrupt_job中断执行。
    • DISABLED : 禁用状态,不能输入命令也不能中断命令。

    command

    {
    +  "type": "command",
    +  "jobId": 3,
    +  "state": "SCHEDULED",
    +  "command": "watch demo.MathGame primeFactors \"{params, returnObj, throwExp}\" "
    +}
    +

    typecommand表示输入的命令数据:

    用于交互 UI 回显用户输入的命令,拉取的会话命令消息历史会包含command类型的消息,按顺序处理即可。

    enhancer

    {
    +  "success": true,
    +  "jobId": 3,
    +  "effect": {
    +    "listenerId": 3,
    +    "cost": 24,
    +    "classCount": 1,
    +    "methodCount": 1
    +  },
    +  "type": "enhancer"
    +}
    +

    typeenhancer表示类增强结果:

    trace/watch/jad/tt等命令需要对类进行增强,会接收到这个enhancer结果。可能出现enhancer结果成功,但没有命中方法的情况,客户端可以根据enhancer结果提示用户。

    案例

    获取 Java 应用的 Classpath

    通过 Http api 查询 Java 应用的 System properties,提取java.class.path的值。

    json_data=$(curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"exec",
    +  "command":"sysprop"
    +}')
    +
    • 使用sed提取值:
    class_path=$(echo $json_data | tr -d '\n' | sed 's/.*"java.class.path":"\([^"]*\).*/\1/')
    +echo "classpath: $class_path"
    +
    • 使用json_pp/awk提取值
    class_path=$(echo $json_data | tr -d '\n' | json_pp | grep java.class.path | awk -F'"' '{ print $4 }')
    +echo "classpath: $class_path"
    +

    输出内容:

    classpath: demo-arthas-spring-boot.jar
    +

    注意:

    • echo $json_data | tr -d '\n' : 删除换行符(line.separator的值),避免影响sed/json_pp命令处理。
    • awk -F'"' '{ print $4 }' : 使用双引号作为分隔符号

    watch 命令输出 map 对象

    watch 的结果值由计算watch-express ognl 表达式产生,可以通过改变 ognl 表达式来生成想要的值,请参考OGNL 文档在新窗口打开

    提示

    Maps can also be created using a special syntax.

    #{ "foo" : "foo value", "bar" : "bar value" }

    This creates a Map initialized with mappings for "foo" and "bar".

    下面的命令生成 map 格式的值:

    watch *MathGame prime* '#{ "params" : params, "returnObj" : returnObj, "throwExp": throwExp}' -x 2 -n 5
    +

    在 Telnet shell/WebConsole 中执行上面的命令,输出的结果:

    ts=2020-08-06 16:57:20; [cost=0.241735ms] result=@LinkedHashMap[
    +    @String[params]:@Object[][
    +        @Integer[1],
    +    ],
    +    @String[returnObj]:@ArrayList[
    +        @Integer[2],
    +        @Integer[241],
    +        @Integer[379],
    +    ],
    +    @String[throwExp]:null,
    +]
    +

    用 Http api 执行上面的命令,注意对 JSON 双引号转义:

    curl -Ss -XPOST http://localhost:8563/api -d @- << EOF
    +{
    +  "action":"exec",
    +  "execTimeout": 30000,
    +  "command":"watch *MathGame prime* '#{ \"params\" : params, \"returnObj\" : returnObj, \"throwExp\": throwExp}' -n 3 "
    +}
    +EOF
    +

    Http api 执行结果:

    {
    +    "body": {
    +         ...
    +        "results": [
    +            ...
    +            {
    +                ...
    +                "type": "watch",
    +                "value": {
    +                    "params": [
    +                        1
    +                    ],
    +                    "returnObj": [
    +                        2,
    +                        5,
    +                        17,
    +                        23,
    +                        23
    +                    ]
    +                }
    +            },
    +            {
    +                ...
    +                "type": "watch",
    +                "value": {
    +                    "params": [
    +                        -98278
    +                    ],
    +                    "throwExp": {
    +                        "@type": "java.lang.IllegalArgumentException",
    +                        "localizedMessage": "number is: -98278, need >= 2",
    +                        "message": "number is: -98278, need >= 2",
    +                        "stackTrace": [
    +                            ...
    +                        ]
    +                    }
    +                }
    +            },
    +            ...
    +}
    +

    可以看到 watch 结果的 value 变成 map 对象,程序可以通过 key 读取结果。

    + + + diff --git a/3.x/doc/idea-plugin.html b/3.x/doc/idea-plugin.html new file mode 100644 index 00000000000..660f07eb86b --- /dev/null +++ b/3.x/doc/idea-plugin.html @@ -0,0 +1,41 @@ + + + + + + + + + IDEA Plugin | arthas + + + + +
    目录

    IDEA Plugin

    Arthas-idea(部分命令可视化)

    提示

    插件由社区开发者提供。

    Alibaba Cloud Toolkit 热部署组件(一键 retransform)

    提示

    热部署组件支持一键将编辑器中修改的 Java 源码快速编译,并更新到远端应用服务中,免去手动 dump、mc 的过程。此外,也可以一键还原 retransform 的类文件。

    + + + diff --git a/3.x/doc/index.html b/3.x/doc/index.html new file mode 100644 index 00000000000..4f1ca3ba964 --- /dev/null +++ b/3.x/doc/index.html @@ -0,0 +1,41 @@ + + + + + + + + + 简介 | arthas + + + + +
    目录

    简介

    Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

    背景

    通常,本地开发环境无法访问生产环境。如果在生产环境中遇到问题,则无法使用 IDE 远程调试。更糟糕的是,在生产环境中调试是不可接受的,因为它会暂停所有线程,导致服务暂停。

    开发人员可以尝试在测试环境或者预发环境中复现生产环境中的问题。但是,某些问题无法在不同的环境中轻松复现,甚至在重新启动后就消失了。

    如果您正在考虑在代码中添加一些日志以帮助解决问题,您将必须经历以下阶段:测试、预发,然后生产。这种方法效率低下,更糟糕的是,该问题可能无法解决,因为一旦 JVM 重新启动,它可能无法复现,如上文所述。

    Arthas 旨在解决这些问题。开发人员可以在线解决生产问题。无需 JVM 重启,无需代码更改。 Arthas 作为观察者永远不会暂停正在运行的线程。

    Arthas(阿尔萨斯)能为你做什么?

    Arthas 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。

    当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

    1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
    2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
    3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
    4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
    5. 是否有一个全局视角来查看系统的运行状况?
    6. 有什么办法可以监控到 JVM 的实时运行状态?
    7. 怎么快速定位应用的热点,生成火焰图?
    8. 怎样直接从 JVM 内查找某个类的实例?

    Arthas 支持 JDK 6+,支持 Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

    如果您在使用 Arthas,请让我们知道,您的使用对我们非常重要:查看在新窗口打开

    Contributors

    在新窗口打开

    + + + diff --git a/3.x/doc/install-detail.html b/3.x/doc/install-detail.html new file mode 100644 index 00000000000..0418fb62232 --- /dev/null +++ b/3.x/doc/install-detail.html @@ -0,0 +1,53 @@ + + + + + + + + + Arthas Install | arthas + + + + +
    目录

    Arthas Install

    快速安装

    使用arthas-boot3(推荐)

    下载arthas-boot3.jar,然后用java -jar的方式启动:

    curl -O https://arthas.aliyun.com/arthas-boot3.jar
    +java -jar arthas-boot3.jar
    +

    打印帮助信息:

    java -jar arthas-boot3.jar -h
    +
    • 如果下载速度比较慢,可以使用 aliyun 的镜像:

      java -jar arthas-boot3.jar --repo-mirror aliyun --use-http
      +

    使用as3.sh

    Arthas 支持在 Linux/Unix/Mac 等平台上一键安装,请复制以下内容,并粘贴到命令行中,敲 回车 执行即可:

    curl -L https://arthas.aliyun.com/install3.sh | sh
    +

    上述命令会下载启动脚本文件 as3.sh 到当前目录,你可以放在任何地方或将其加入到 $PATH 中。

    直接在 shell 下面执行./as3.sh,就会进入交互界面。

    也可以执行./as3.sh -h来获取更多参数信息。

    全量安装

    从 Github Releases 页下载

    https://github.com/alibaba/arthas/releases在新窗口打开

    解压后,在文件夹里有arthas-boot3.jar,直接用java -jar的方式启动:

    java -jar arthas-boot3.jar
    +

    打印帮助信息:

    java -jar arthas-boot3.jar -h
    +

    手动安装

    手动安装

    通过 rpm/deb 来安装

    在 releases 页面下载 rpm/deb 包: https://github.com/alibaba/arthas/releases

    安装 deb

    sudo dpkg -i arthas*.deb
    +

    安装 rpm

    sudo rpm -i arthas*.rpm
    +

    deb/rpm 安装的用法

    在安装后,可以直接执行:

    as3.sh
    +

    通过 Cloud Toolkit 插件使用 Arthas

    卸载

    • 在 Linux/Unix/Mac 平台

      删除下面文件:

      rm -rf ~/.arthas/
      +rm -rf ~/logs/arthas
      +
    • Windows 平台直接删除 user home 下面的.arthaslogs/arthas目录

    + + + diff --git a/3.x/doc/jad.html b/3.x/doc/jad.html new file mode 100644 index 00000000000..495ff7ef438 --- /dev/null +++ b/3.x/doc/jad.html @@ -0,0 +1,159 @@ + + + + + + + + + jad | arthas + + + + +
    目录

    jad

    jad在线教程在新窗口打开

    提示

    反编译指定已加载类的源码

    jad 命令将 JVM 中实际运行的 class 的 byte code 反编译成 java 代码,便于你理解业务逻辑;如需批量下载指定包的目录的 class 字节码可以参考 dump

    • 在 Arthas Console 上,反编译出来的源码是带语法高亮的,阅读更方便
    • 当然,反编译出来的 java 代码可能会存在语法错误,但不影响你进行阅读理解

    参数说明

    参数名称参数说明
    class-pattern类名表达式匹配
    [c:]类所属 ClassLoader 的 hashcode
    [classLoaderClass:]指定执行表达式的 ClassLoader 的 class name
    [E]开启正则表达式匹配,默认为通配符匹配

    使用参考

    反编译java.lang.String

    $ jad java.lang.String
    +
    +ClassLoader:
    +
    +Location:
    +
    +
    +        /*
    +         * Decompiled with CFR.
    +         */
    +        package java.lang;
    +
    +        import java.io.ObjectStreamField;
    +        import java.io.Serializable;
    +...
    +        public final class String
    +        implements Serializable,
    +        Comparable<String>,
    +        CharSequence {
    +            private final char[] value;
    +            private int hash;
    +            private static final long serialVersionUID = -6849794470754667710L;
    +            private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];
    +            public static final Comparator<String> CASE_INSENSITIVE_ORDER = new CaseInsensitiveComparator();
    +...
    +            public String(byte[] byArray, int n, int n2, Charset charset) {
    +/*460*/         if (charset == null) {
    +                    throw new NullPointerException("charset");
    +                }
    +/*462*/         String.checkBounds(byArray, n, n2);
    +/*463*/         this.value = StringCoding.decode(charset, byArray, n, n2);
    +            }
    +...
    +

    反编译时只显示源代码

    默认情况下,反编译结果里会带有ClassLoader信息,通过--source-only选项,可以只打印源代码。方便和mc/retransform命令结合使用。

    $ jad --source-only demo.MathGame
    +/*
    + * Decompiled with CFR 0_132.
    + */
    +package demo;
    +
    +import java.io.PrintStream;
    +import java.util.ArrayList;
    +import java.util.Iterator;
    +import java.util.List;
    +import java.util.Random;
    +import java.util.concurrent.TimeUnit;
    +
    +public class MathGame {
    +    private static Random random = new Random();
    +    public int illegalArgumentCount = 0;
    +...
    +

    反编译指定的函数

    $ jad demo.MathGame main
    +
    +ClassLoader:
    ++-sun.misc.Launcher$AppClassLoader@232204a1
    +  +-sun.misc.Launcher$ExtClassLoader@7f31245a
    +
    +Location:
    +/private/tmp/math-game.jar
    +
    +       public static void main(String[] args) throws InterruptedException {
    +           MathGame game = new MathGame();
    +           while (true) {
    +/*16*/         game.run();
    +/*17*/         TimeUnit.SECONDS.sleep(1L);
    +           }
    +       }
    +

    反编译时不显示行号

    --lineNumber 参数默认值为 true,显示指定为 false 则不打印行号。

    $ jad demo.MathGame main --lineNumber false
    +
    +ClassLoader:
    ++-sun.misc.Launcher$AppClassLoader@232204a1
    +  +-sun.misc.Launcher$ExtClassLoader@7f31245a
    +
    +Location:
    +/private/tmp/math-game.jar
    +
    +public static void main(String[] args) throws InterruptedException {
    +    MathGame game = new MathGame();
    +    while (true) {
    +        game.run();
    +        TimeUnit.SECONDS.sleep(1L);
    +    }
    +}
    +

    反编译时指定 ClassLoader

    提示

    当有多个 ClassLoader 都加载了这个类时,jad 命令会输出对应 ClassLoader 实例的 hashcode,然后你只需要重新执行 jad 命令,并使用参数 -c <hashcode> 就可以反编译指定 ClassLoader 加载的那个类了;

    $ jad org.apache.log4j.Logger
    +
    +Found more than one class for: org.apache.log4j.Logger, Please use jad -c hashcode org.apache.log4j.Logger
    +HASHCODE  CLASSLOADER
    +69dcaba4  +-monitor's ModuleClassLoader
    +6e51ad67  +-java.net.URLClassLoader@6e51ad67
    +            +-sun.misc.Launcher$AppClassLoader@6951a712
    +            +-sun.misc.Launcher$ExtClassLoader@6fafc4c2
    +2bdd9114  +-pandora-qos-service's ModuleClassLoader
    +4c0df5f8  +-pandora-framework's ModuleClassLoader
    +
    +Affect(row-cnt:0) cost in 38 ms.
    +$ jad org.apache.log4j.Logger -c 69dcaba4
    +
    +ClassLoader:
    ++-monitor's ModuleClassLoader
    +
    +Location:
    +/Users/admin/app/log4j-1.2.14.jar
    +
    +package org.apache.log4j;
    +
    +import org.apache.log4j.spi.*;
    +
    +public class Logger extends Category
    +{
    +    private static final String FQCN;
    +
    +    protected Logger(String name)
    +    {
    +        super(name);
    +    }
    +
    +...
    +
    +Affect(row-cnt:1) cost in 190 ms.
    +

    对于只有唯一实例的 ClassLoader 还可以通过--classLoaderClass指定 class name,使用起来更加方便:

    --classLoaderClass 的值是 ClassLoader 的类名,只有匹配到唯一的 ClassLoader 实例时才能工作,目的是方便输入通用命令,而-c <hashcode>是动态变化的。

    + + + diff --git a/3.x/doc/jfr.html b/3.x/doc/jfr.html new file mode 100644 index 00000000000..5ef88ea64b1 --- /dev/null +++ b/3.x/doc/jfr.html @@ -0,0 +1,62 @@ + + + + + + + + + jfr | arthas + + + + +
    目录

    jfr

    jfr在线教程在新窗口打开

    提示

    Java Flight Recorder (JFR) 是一种用于收集有关正在运行的 Java 应用程序的诊断和分析数据的工具。它集成到 Java 虚拟机 (JVM) 中,几乎不会造成性能开销,因此即使在负载较重的生产环境中也可以使用。

    jfr 命令支持在程序动态运行过程中开启和关闭 JFR 记录。 记录收集有关 event 的数据。事件在特定时间点发生在 JVM 或 Java 应用程序中。每个事件都有一个名称、一个时间戳和一个可选的有效负载。负载是与事件相关的数据,例如 CPU 使用率、事件前后的 Java 堆大小、锁持有者的线程 ID 等。

    jfr 命令基本运行结构是 jfr cmd [actionArg]

    注意: JDK8 的 8u262 版本之后才支持 jfr

    参数说明

    参数名称参数说明
    cmd要执行的操作 支持的命令【start,status,dump,stop】
    actionArg属性名模式
    [n:]记录名称
    [r:]记录 id 值
    [dumponexit:]程序退出时,是否要 dump 出 .jfr 文件,默认为 false
    [d:]延迟多久后启动 JFR 记录,支持带单位配置,eg: 60s, 2m, 5h, 3d. 不带单位就是秒,默认无延迟
    [duration:]JFR 记录持续时间,支持单位配置,不带单位就是秒,默认一直记录
    [s:]采集 Event 的详细配置文件,默认是 default.jfc 位于 $JAVA_HOME/lib/jfr/default.jfc
    [f:]将输出转储到指定路径
    [maxage:]缓冲区数据最大文件记录保存时间,支持单位配置,不带单位就是秒,默认是不限制
    [maxsize:]缓冲区的最大文件大小,支持单位配置, 不带单位是字节,m 或者 M 代表 MB,g 或者 G 代表 GB。
    [state:]jfr 记录状态

    启动 JFR 记录

    $ jfr start
    +Started recording 1. No limit specified, using maxsize=250MB as default.
    +

    提示

    默认情况下,开启的是默认参数的 jfr 记录

    启动 jfr 记录,指定记录名,记录持续时间,记录文件保存路径。

    $ jfr start -n myRecording --duration 60s -f /tmp/myRecording.jfr
    +Started recording 2. The result will be written to:
    +/tmp/myRecording.jfr
    +

    查看 JFR 记录状态

    默认是查看所有 JFR 记录信息

    $ jfr status
    +Recording: recording=1 name=Recording-1 (running)
    +Recording: recording=2 name=myRecording duration=PT1M (closed)
    +

    查看指定记录 id 的记录信息

    $ jfr status -r 1
    +Recording: recording=1 name=Recording-1 (running)
    +

    查看指定状态的记录信息

    $ jfr status --state closed
    +Recording: recording=2 name=myRecording duration=PT1M (closed)
    +

    dump jfr 记录

    jfr dump 会输出从开始到运行该命令这段时间内的记录到 JFR 文件,且不会停止 jfr 的记录
    指定记录输出路径

    $ jfr dump -r 1 -f /tmp/myRecording1.jfr
    +Dump recording 1, The result will be written to:
    +/tmp/myRecording1.jfr
    +

    不指定文件输出路径,默认是保存到arthas-output目录下

    $ jfr dump -r 1
    +Dump recording 1, The result will be written to:
    +/tmp/test/arthas-output/20220819-200915.jfr
    +

    停止 jfr 记录

    不指定记录输出路径,默认是保存到arthas-output目录下

    $ jfr stop -r 1
    +Stop recording 1, The result will be written to:
    +/tmp/test/arthas-output/20220819-202049.jfr
    +

    注意一条记录只能停止一次。

    也可以指定记录输出路径。

    通过浏览器查看 arthas-output 下面 JFR 记录的结果

    默认情况下,arthas 使用 8563 端口,则可以打开: http://localhost:8563/arthas-output/在新窗口打开 查看到arthas-output目录下面的 JFR 记录结果:

    生成的结果可以用支持 jfr 格式的工具来查看。比如:

    • JDK Mission Control : https://github.com/openjdk/jmc
    + + + diff --git a/3.x/doc/jvm.html b/3.x/doc/jvm.html new file mode 100644 index 00000000000..4bcd68242ae --- /dev/null +++ b/3.x/doc/jvm.html @@ -0,0 +1,140 @@ + + + + + + + + + jvm | arthas + + + + +
    目录

    jvm

    jvm在线教程在新窗口打开

    提示

    查看当前 JVM 信息

    使用参考

    $ jvm
    +RUNTIME
    +--------------------------------------------------------------------------------------------------------------
    + MACHINE-NAME                   37@ff267334bb65
    + JVM-START-TIME                 2020-07-23 07:50:36
    + MANAGEMENT-SPEC-VERSION        1.2
    + SPEC-NAME                      Java Virtual Machine Specification
    + SPEC-VENDOR                    Oracle Corporation
    + SPEC-VERSION                   1.8
    + VM-NAME                        Java HotSpot(TM) 64-Bit Server VM
    + VM-VENDOR                      Oracle Corporation
    + VM-VERSION                     25.201-b09
    + INPUT-ARGUMENTS                []
    + CLASS-PATH                     demo-arthas-spring-boot.jar
    + BOOT-CLASS-PATH                /usr/lib/jvm/java-8-oracle/jre/lib/resources.jar:/usr/lib/jvm/java-8-oracle/j
    +                                re/lib/rt.jar:/usr/lib/jvm/java-8-oracle/jre/lib/sunrsasign.jar:/usr/lib/jvm/
    +                                java-8-oracle/jre/lib/jsse.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jce.jar:/us
    +                                r/lib/jvm/java-8-oracle/jre/lib/charsets.jar:/usr/lib/jvm/java-8-oracle/jre/l
    +                                ib/jfr.jar:/usr/lib/jvm/java-8-oracle/jre/classes
    + LIBRARY-PATH                   /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
    +
    +--------------------------------------------------------------------------------------------------------------
    + CLASS-LOADING
    +--------------------------------------------------------------------------------------------------------------
    + LOADED-CLASS-COUNT             7529
    + TOTAL-LOADED-CLASS-COUNT       7529
    + UNLOADED-CLASS-COUNT           0
    + IS-VERBOSE                     false
    +
    +--------------------------------------------------------------------------------------------------------------
    + COMPILATION
    +--------------------------------------------------------------------------------------------------------------
    + NAME                           HotSpot 64-Bit Tiered Compilers
    + TOTAL-COMPILE-TIME             14921(ms)
    +
    +--------------------------------------------------------------------------------------------------------------
    + GARBAGE-COLLECTORS
    +--------------------------------------------------------------------------------------------------------------
    + PS Scavenge                            name : PS Scavenge
    + [count/time (ms)]                      collectionCount : 7
    +                                        collectionTime : 68
    +
    + PS MarkSweep                           name : PS MarkSweep
    + [count/time (ms)]                      collectionCount : 1
    +                                        collectionTime : 47
    +
    +--------------------------------------------------------------------------------------------------------------
    + MEMORY-MANAGERS
    +--------------------------------------------------------------------------------------------------------------
    + CodeCacheManager               Code Cache
    +
    + Metaspace Manager              Metaspace
    +                                Compressed Class Space
    +
    + Copy                           Eden Space
    +                                Survivor Space
    +
    + MarkSweepCompact               Eden Space
    +                                Survivor Space
    +                                Tenured Gen
    +
    +
    +--------------------------------------------------------------------------------------------------------------
    + MEMORY
    +--------------------------------------------------------------------------------------------------------------
    + HEAP-MEMORY-USAGE                      init : 268435456(256.0 MiB)
    + [memory in bytes]                      used : 18039504(17.2 MiB)
    +                                        committed : 181403648(173.0 MiB)
    +                                        max : 3817865216(3.6 GiB)
    +
    + NO-HEAP-MEMORY-USAGE                   init : 2555904(2.4 MiB)
    + [memory in bytes]                      used : 33926216(32.4 MiB)
    +                                        committed : 35176448(33.5 MiB)
    +                                        max : -1(-1 B)
    +
    +--------------------------------------------------------------------------------------------------------------
    + OPERATING-SYSTEM
    +--------------------------------------------------------------------------------------------------------------
    + OS                             Linux
    + ARCH                           amd64
    + PROCESSORS-COUNT               3
    + LOAD-AVERAGE                   29.53
    + VERSION                        4.15.0-52-generic
    +
    +--------------------------------------------------------------------------------------------------------------
    + THREAD
    +--------------------------------------------------------------------------------------------------------------
    + COUNT                          30
    + DAEMON-COUNT                   24
    + PEAK-COUNT                     31
    + STARTED-COUNT                  36
    + DEADLOCK-COUNT                 0
    +
    +--------------------------------------------------------------------------------------------------------------
    + FILE-DESCRIPTOR
    +--------------------------------------------------------------------------------------------------------------
    + MAX-FILE-DESCRIPTOR-COUNT      1048576
    + OPEN-FILE-DESCRIPTOR-COUNT     100
    +Affect(row-cnt:0) cost in 88 ms.
    +

    THREAD 相关

    • COUNT: JVM 当前活跃的线程数
    • DAEMON-COUNT: JVM 当前活跃的守护线程数
    • PEAK-COUNT: 从 JVM 启动开始曾经活着的最大线程数
    • STARTED-COUNT: 从 JVM 启动开始总共启动过的线程次数
    • DEADLOCK-COUNT: JVM 当前死锁的线程数

    文件描述符相关

    • MAX-FILE-DESCRIPTOR-COUNT:JVM 进程最大可以打开的文件描述符数
    • OPEN-FILE-DESCRIPTOR-COUNT:JVM 当前打开的文件描述符数
    + + + diff --git a/3.x/doc/keymap.html b/3.x/doc/keymap.html new file mode 100644 index 00000000000..b75221c2176 --- /dev/null +++ b/3.x/doc/keymap.html @@ -0,0 +1,60 @@ + + + + + + + + + keymap | arthas + + + + +
    目录

    keymap

    keymap在线教程在新窗口打开

    keymap命令输出当前的快捷键映射表:

    默认的快捷键如下:

    快捷键快捷键说明命令名称命令说明
    "\C-a"ctrl + abeginning-of-line跳到行首
    "\C-e"ctrl + eend-of-line跳到行尾
    "\C-f"ctrl + fforward-word向前移动一个单词
    "\C-b"ctrl + bbackward-word向后移动一个单词
    "\e[D"键盘左方向键backward-char光标向前移动一个字符
    "\e[C"键盘右方向键forward-char光标向后移动一个字符
    "\e[B"键盘下方向键next-history下翻显示下一个命令
    "\e[A"键盘上方向键previous-history上翻显示上一个命令
    "\C-h"ctrl + hbackward-delete-char向后删除一个字符
    "\C-?"ctrl + shift + /backward-delete-char向后删除一个字符
    "\C-u"ctrl + uundo撤销上一个命令,相当于清空当前行
    "\C-d"ctrl + ddelete-char删除当前光标所在字符
    "\C-k"ctrl + kkill-line删除当前光标到行尾的所有字符
    "\C-i"ctrl + icomplete自动补全,相当于敲TAB
    "\C-j"ctrl + jaccept-line结束当前行,相当于敲回车
    "\C-m"ctrl + maccept-line结束当前行,相当于敲回车
    "\C-w"backward-delete-word
    "\C-x\e[3~"backward-kill-line
    "\e\C-?"backward-kill-word
    • 任何时候 tab 键,会根据当前的输入给出提示
    • 命令后敲 --- ,然后按 tab 键,可以展示出此命令具体的选项

    自定义快捷键

    在当前用户目录下新建$USER_HOME/.arthas/conf/inputrc文件,加入自定义配置。

    假设我是 vim 的重度用户,我要把ctrl+h设置为光标向前一个字符,则设置如下,首先拷贝默认配置

    "\C-a": beginning-of-line
    +"\C-e": end-of-line
    +"\C-f": forward-word
    +"\C-b": backward-word
    +"\e[D": backward-char
    +"\e[C": forward-char
    +"\e[B": next-history
    +"\e[A": previous-history
    +"\C-h": backward-delete-char
    +"\C-?": backward-delete-char
    +"\C-u": undo
    +"\C-d": delete-char
    +"\C-k": kill-line
    +"\C-i": complete
    +"\C-j": accept-line
    +"\C-m": accept-line
    +"\C-w": backward-delete-word
    +"\C-x\e[3~": backward-kill-line
    +"\e\C-?": backward-kill-word
    +

    然后把"\C-h": backward-delete-char换成"\C-h": backward-char,然后重新连接即可。

    后台异步命令相关快捷键

    • ctrl + c: 终止当前命令
    • ctrl + z: 挂起当前命令,后续可以 bg/fg 重新支持此命令,或 kill 掉
    • ctrl + a: 回到行首
    • ctrl + e: 回到行尾
    + + + diff --git a/3.x/doc/logger.html b/3.x/doc/logger.html new file mode 100644 index 00000000000..e27dddb2983 --- /dev/null +++ b/3.x/doc/logger.html @@ -0,0 +1,176 @@ + + + + + + + + + logger | arthas + + + + +
    目录

    logger

    logger在线教程在新窗口打开

    提示

    查看 logger 信息,更新 logger level

    使用参考

    查看所有 logger 信息

    以下面的logback.xml为例:

    <?xml version="1.0" encoding="UTF-8"?>
    +<configuration>
    +    <appender name="APPLICATION" class="ch.qos.logback.core.rolling.RollingFileAppender">
    +        <file>app.log</file>
    +        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    +            <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
    +            <maxFileSize>100MB</maxFileSize>
    +            <maxHistory>60</maxHistory>
    +            <totalSizeCap>2GB</totalSizeCap>
    +        </rollingPolicy>
    +        <encoder>
    +            <pattern>%logger{35} - %msg%n</pattern>
    +        </encoder>
    +    </appender>
    +
    +    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
    +        <appender-ref ref="APPLICATION" />
    +    </appender>
    +
    +    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    +        <encoder>
    +            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n
    +            </pattern>
    +            <charset>utf8</charset>
    +        </encoder>
    +    </appender>
    +
    +    <root level="INFO">
    +        <appender-ref ref="CONSOLE" />
    +        <appender-ref ref="ASYNC" />
    +    </root>
    +</configuration>
    +

    使用logger命令打印的结果是:

    [arthas@2062]$ logger
    + name                                   ROOT
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  INFO
    + effectiveLevel                         INFO
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    + appenders                              name            CONSOLE
    +                                        class           ch.qos.logback.core.ConsoleAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        target          System.out
    +                                        name            APPLICATION
    +                                        class           ch.qos.logback.core.rolling.RollingFileAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        file            app.log
    +                                        name            ASYNC
    +                                        class           ch.qos.logback.classic.AsyncAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        appenderRef     [APPLICATION]
    +

    appenders的信息里,可以看到

    • CONSOLE logger 的 target 是System.out
    • APPLICATION logger 是RollingFileAppender,它的 file 是app.log
    • ASYNC它的appenderRefAPPLICATION,即异步输出到文件里

    查看指定名字的 logger 信息

    [arthas@2062]$ logger -n org.springframework.web
    + name                                   org.springframework.web
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  null
    + effectiveLevel                         INFO
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    +

    查看指定 classloader 的 logger 信息

    注意 hashcode 是变化的,需要先查看当前的 ClassLoader 信息,提取对应 ClassLoader 的 hashcode。

    如果你使用-c,你需要手动输入 hashcode:-c <hashcode>

    [arthas@2062]$ logger -c 2a139a55
    + name                                   ROOT
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  DEBUG
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    + appenders                              name            CONSOLE
    +                                        class           ch.qos.logback.core.ConsoleAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        target          System.out
    +                                        name            APPLICATION
    +                                        class           ch.qos.logback.core.rolling.RollingFileAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        file            app.log
    +                                        name            ASYNC
    +                                        class           ch.qos.logback.classic.AsyncAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        appenderRef     [APPLICATION]
    +

    对于只有唯一实例的 ClassLoader 可以通过--classLoaderClass指定 class name,使用起来更加方便:

    logger --classLoaderClass sun.misc.Launcher$AppClassLoader

    • 注: 这里 classLoaderClass 在 java 8 是 sun.misc.Launcher$AppClassLoader,而java 11的classloader是jdk.internal.loader.ClassLoaders$AppClassLoader。

    --classLoaderClass 的值是 ClassLoader 的类名,只有匹配到唯一的 ClassLoader 实例时才能工作,目的是方便输入通用命令,而-c <hashcode>是动态变化的。

    更新 logger level

    [arthas@2062]$ logger --name ROOT --level debug
    +update logger level success.
    +

    指定 classloader 更新 logger level

    默认情况下,logger 命令会在 SystemClassloader 下执行,如果应用是传统的war应用,或者 spring boot fat jar 启动的应用,那么需要指定 classloader。

    可以先用 sc -d yourClassName 来查看具体的 classloader hashcode,然后在更新 level 时指定 classloader:

    [arthas@2062]$ logger -c 2a139a55 --name ROOT --level debug
    +

    查看没有 appender 的 logger 的信息

    默认情况下,logger命令只打印有 appender 的 logger 的信息。如果想查看没有appender的 logger 的信息,可以加上参数--include-no-appender

    注意,通常输出结果会很长。

    [arthas@2062]$ logger --include-no-appender
    + name                                   ROOT
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  DEBUG
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    + appenders                              name            CONSOLE
    +                                        class           ch.qos.logback.core.ConsoleAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        target          System.out
    +                                        name            APPLICATION
    +                                        class           ch.qos.logback.core.rolling.RollingFileAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        file            app.log
    +                                        name            ASYNC
    +                                        class           ch.qos.logback.classic.AsyncAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        appenderRef     [APPLICATION]
    +
    + name                                   com
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  null
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    +
    + name                                   com.alibaba
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  null
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    +...
    +
    + + + diff --git a/3.x/doc/manual-install.html b/3.x/doc/manual-install.html new file mode 100644 index 00000000000..072121ede0b --- /dev/null +++ b/3.x/doc/manual-install.html @@ -0,0 +1,60 @@ + + + + + + + + + 手动安装 Arthas | arthas + + + + +
    目录

    手动安装 Arthas

    1. 下载最新版本

    从 Github Releases 页下载

    https://github.com/alibaba/arthas/releases在新窗口打开

    1. 解压缩 arthas 的压缩包

      unzip arthas-packaging-bin.zip
      +
    2. 安装 Arthas

      安装之前最好把所有老版本的 Arthas 全都删掉

      sudo su admin
      +rm -rf /home/admin/.arthas/lib/*
      +cd arthas
      +./install-local3.sh
      +

      注意

      注意,这里根据你需要诊断的 Java 进程的所属用户进行切换

    3. 启动 Arthas

      启动之前,请确保老版本的 Arthas 已经stop.

      ./as3.sh
      +

    以脚本的方式启动 as3.sh/as.bat

    Linux/Unix/Mac

    Arthas 支持在 Linux/Unix/Mac 等平台上一键安装,请复制以下内容,并粘贴到命令行中,敲 回车 执行即可:

    curl -L https://arthas.aliyun.com/install3.sh | sh
    +

    上述命令会下载启动脚本文件 as3.sh 到当前目录,你可以放在任何地方或将其加入到 $PATH 中。

    直接在 shell 下面执行./as3.sh,就会进入交互界面。

    也可以执行./as3.sh -h来获取更多参数信息。

    Windows

    最新版本,点击下载:在新窗口打开

    下载解压后在 bin 目录有 as.bat。此脚本暂时只接受一个参数 pid,即只能诊断本机上的 Java 进程。(欢迎精通 bat 脚本的开发者改进)

    as.bat <pid>
    +

    使用以下命令诊断 windows 服务模式运行的 Java 进程 (--interact 打开服务 UI 交互模式,方便诊断问题):

    as-service.bat -port <port>
    +as-service.bat -pid <pid>
    +as-service.bat -pid <pid> --interact
    +

    清理 arthas windows 服务执行以下命令:

    as-service.bat -remove
    +

    手动拼接命令行启动

    如果启动遇到问题,可以尝试手动拼接出命令行参数来启动。

    1. 查找目录 jvm 的 java 文件路径。

      在 linux/mac 上执行ps aux | grep java,在 windows 上可以通过进程管理器来查看。假设是/opt/jdk1.8/bin/java

    2. 拼接出命令行

      /opt/jdk1.8/bin/java -Xbootclasspath/a:/opt/jdk1.8/lib/tools.jar \
      + -jar /tmp/arthas-packaging/arthas-core.jar \
      + -pid 15146 \
      + -target-ip 127.0.0.1 -telnet-port 3658 -http-port 8563 \
      + -core /tmp/arthas-packaging/arthas-core.jar \
      + -agent /tmp/arthas-packaging/arthas/arthas-agent.jar
      +

      命令行分几部分组成:

      • -Xbootclasspath 增加 tools.jar
      • -jar /tmp/arthas-packaging/arthas-core.jar 指定 main 函数入口
      • -pid 15146 指定目标 java 进程 ID
      • -target-ip 127.0.0.1 指定 IP
      • -telnet-port 3658 -http-port 8563 指定 telnet 和 http 端口
      • -core /tmp/arthas-packaging/arthas-core.jar -agent /tmp/arthas-packaging/arthas/arthas-agent.jar 指定 core/agent jar 包

      如果是jdk > 9,即 9/10/11 以上的版本,不需要指定tools.jar,直接去掉-Xbootclasspath 的配置即可。

      启动目志输出在~/logs/arthas/arthas.log里。

    3. attach 成功之后,使用 telnet 连接

      telnet 127.0.0.1 3658
      +
    + + + diff --git a/3.x/doc/mbean.html b/3.x/doc/mbean.html new file mode 100644 index 00000000000..ea8b40ff6bf --- /dev/null +++ b/3.x/doc/mbean.html @@ -0,0 +1,49 @@ + + + + + + + + + mbean | arthas + + + + +
    目录

    mbean

    mbean在线教程在新窗口打开

    提示

    查看 Mbean 的信息

    这个命令可以便捷的查看或监控 Mbean 的属性信息。

    参数说明

    参数名称参数说明
    name-pattern名称表达式匹配
    attribute-pattern属性名表达式匹配
    [m]查看元信息
    [i:]刷新属性值的时间间隔 (ms)
    [n:]刷新属性值的次数
    [E]开启正则表达式匹配,默认为通配符匹配。仅对属性名有效

    使用参考

    列出所有 Mbean 的名称:

    mbean
    +

    查看 Mbean 的元信息:

    mbean -m java.lang:type=Threading
    +

    查看 mbean 属性信息:

    mbean java.lang:type=Threading
    +

    mbean 的 name 支持通配符匹配:

    mbean java.lang:type=Th*
    +

    注意

    注意:ObjectName 的匹配规则与正常的通配符存在差异,详细参见:javax.management.ObjectName在新窗口打开

    通配符匹配特定的属性字段:

    mbean java.lang:type=Threading *Count
    +

    使用-E命令切换为正则匹配:

    mbean -E java.lang:type=Threading PeakThreadCount|ThreadCount|DaemonThreadCount
    +

    使用-i命令实时监控:

    mbean -i 1000 java.lang:type=Threading *Count
    +

    实时监控使用-i,使用-n命令执行命令的次数(默认为 100 次):

    mbean -i 1000 -n 50 java.lang:type=Threading *Count
    +
    + + + diff --git a/3.x/doc/mc.html b/3.x/doc/mc.html new file mode 100644 index 00000000000..e3a12238035 --- /dev/null +++ b/3.x/doc/mc.html @@ -0,0 +1,48 @@ + + + + + + + + + mc | arthas + + + + +
    目录

    mc

    mc-retransform在线教程在新窗口打开

    使用参考

    提示

    Memory Compiler/内存编译器,编译.java文件生成.class

    mc /tmp/Test.java
    +

    可以通过-c参数指定 classloader:

    mc -c 327a647b /tmp/Test.java
    +

    也可以通过--classLoaderClass参数指定 ClassLoader:

    $ mc --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader /tmp/UserController.java -d /tmp
    +Memory compiler output:
    +/tmp/com/example/demo/arthas/user/UserController.class
    +Affect(row-cnt:1) cost in 346 ms
    +

    可以通过-d命令指定输出目录:

    mc -d /tmp/output /tmp/ClassA.java /tmp/ClassB.java
    +

    编译生成.class文件之后,可以结合retransform命令实现热更新代码。

    注意

    注意,mc 命令有可能失败。如果编译失败可以在本地编译好.class文件,再上传到服务器。具体参考retransform命令说明。

    + + + diff --git a/3.x/doc/memory.html b/3.x/doc/memory.html new file mode 100644 index 00000000000..f2a0bc8379a --- /dev/null +++ b/3.x/doc/memory.html @@ -0,0 +1,55 @@ + + + + + + + + + memory | arthas + + + + +
    目录

    memory

    查看 JVM 内存信息。

    使用参考

    $ memory
    +Memory                           used      total      max        usage
    +heap                             32M       256M       4096M      0.79%
    +g1_eden_space                    11M       68M        -1         16.18%
    +g1_old_gen                       17M       184M       4096M      0.43%
    +g1_survivor_space                4M        4M         -1         100.00%
    +nonheap                          35M       39M        -1         89.55%
    +codeheap_'non-nmethods'          1M        2M         5M         20.53%
    +metaspace                        26M       27M        -1         96.88%
    +codeheap_'profiled_nmethods'     4M        4M         117M       3.57%
    +compressed_class_space           2M        3M         1024M      0.29%
    +codeheap_'non-profiled_nmethods' 685K      2496K      120032K    0.57%
    +mapped                           0K        0K         -          0.00%
    +direct                           48M       48M        -          100.00%
    +
    + + + diff --git a/3.x/doc/monitor.html b/3.x/doc/monitor.html new file mode 100644 index 00000000000..d7444f2b956 --- /dev/null +++ b/3.x/doc/monitor.html @@ -0,0 +1,121 @@ + + + + + + + + + monitor | arthas + + + + +
    目录

    monitor

    monitor在线教程在新窗口打开

    提示

    方法执行监控

    对匹配 class-patternmethod-patterncondition-express的类、方法的调用进行监控。

    monitor 命令是一个非实时返回命令.

    实时返回命令是输入之后立即返回,而非实时返回的命令,则是不断的等待目标 Java 进程返回信息,直到用户输入 Ctrl+C 为止。

    服务端是以任务的形式在后台跑任务,植入的代码随着任务的中止而不会被执行,所以任务关闭后,不会对原有性能产生太大影响,而且原则上,任何 Arthas 命令不会引起原有业务逻辑的改变。

    监控的维度说明

    监控项说明
    timestamp时间戳
    classJava 类
    method方法(构造方法、普通方法)
    total调用次数
    success成功次数
    fail失败次数
    rt平均 RT
    fail-rate失败率

    参数说明

    方法拥有一个命名参数 [c:],意思是统计周期(cycle of output),拥有一个整型的参数值

    参数名称参数说明
    class-pattern类名表达式匹配
    method-pattern方法名表达式匹配
    condition-express条件表达式
    [E]开启正则表达式匹配,默认为通配符匹配
    [c:]统计周期,默认值为 120 秒
    [b]方法调用之前计算 condition-express
    [m <arg>]指定 Class 最大匹配数量,默认值为 50。长格式为[maxMatch <arg>]

    使用参考

    $ monitor -c 5 demo.MathGame primeFactors
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 94 ms.
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:38  demo.MathGame  primeFactors  5      1        4     1.15        80.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:43  demo.MathGame  primeFactors  5      3        2     42.29       40.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:48  demo.MathGame  primeFactors  5      3        2     67.92       40.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:53  demo.MathGame  primeFactors  5      2        3     0.25        60.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:58  demo.MathGame  primeFactors  1      1        0     0.45        0.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:07:03  demo.MathGame  primeFactors  2      2        0     3182.72     0.00%
    +

    指定 Class 最大匹配数量

    $ monitor -c 1 -m 1 demo.MathGame primeFactors
    +Press Q or Ctrl+C to abort.
    +Affect(class count:1 , method count:1) cost in 384 ms, listenerId: 6.
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2022-12-25 21:12:58  demo.MathGame  primeFactors  1      1        0     0.18        0.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2022-12-25 21:12:59  demo.MathGame  primeFactors  0      0        0     0.00       0.00%
    +

    计算条件表达式过滤统计结果(方法执行完毕之后)

    monitor -c 5 demo.MathGame primeFactors "params[0] <= 2"
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 19 ms, listenerId: 5
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:36  demo.MathGame  primeFactors    5       3       2      0.09       40.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:41  demo.MathGame  primeFactors    5       2       3      0.11       60.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:46  demo.MathGame  primeFactors    5       1       4      0.06       80.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:51  demo.MathGame  primeFactors    5       1       4      0.12       80.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:56  demo.MathGame  primeFactors    5       3       2      0.15       40.00%
    +

    计算条件表达式过滤统计结果(方法执行完毕之前)

    monitor -b -c 5 com.test.testes.MathGame primeFactors "params[0] <= 2"
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 21 ms, listenerId: 4
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:41:57  demo.MathGame  primeFactors    1       0        1      0.10      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:02  demo.MathGame  primeFactors    3       0        3      0.06      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:07  demo.MathGame  primeFactors    2       0        2      0.06      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:12  demo.MathGame  primeFactors    1       0        1      0.05      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:17  demo.MathGame  primeFactors    2       0        2      0.10      100.00%
    +
    + + + diff --git a/3.x/doc/ognl.html b/3.x/doc/ognl.html new file mode 100644 index 00000000000..e5cb6074fe5 --- /dev/null +++ b/3.x/doc/ognl.html @@ -0,0 +1,86 @@ + + + + + + + + + ognl | arthas + + + + +
    目录

    ognl

    ognl在线教程在新窗口打开

    提示

    执行 ognl 表达式

    从 3.0.5 版本增加

    参数说明

    参数名称参数说明
    express执行的表达式
    [c:]执行表达式的 ClassLoader 的 hashcode,默认值是 SystemClassLoader
    [classLoaderClass:]指定执行表达式的 ClassLoader 的 class name
    [x]结果对象的展开层次,默认值 1

    使用参考

    调用静态函数:

    $ ognl '@java.lang.System@out.println("hello")'
    +null
    +

    获取静态类的静态字段:

    $ ognl '@demo.MathGame@random'
    +@Random[
    +    serialVersionUID=@Long[3905348978240129619],
    +    seed=@AtomicLong[125451474443703],
    +    multiplier=@Long[25214903917],
    +    addend=@Long[11],
    +    mask=@Long[281474976710655],
    +    DOUBLE_UNIT=@Double[1.1102230246251565E-16],
    +    BadBound=@String[bound must be positive],
    +    BadRange=@String[bound must be greater than origin],
    +    BadSize=@String[size must be non-negative],
    +    seedUniquifier=@AtomicLong[-3282039941672302964],
    +    nextNextGaussian=@Double[0.0],
    +    haveNextNextGaussian=@Boolean[false],
    +    serialPersistentFields=@ObjectStreamField[][isEmpty=false;size=3],
    +    unsafe=@Unsafe[sun.misc.Unsafe@28ea5898],
    +    seedOffset=@Long[24],
    +]
    +

    通过 hashcode 指定 ClassLoader:

    $ classloader -t
    ++-BootstrapClassLoader
    ++-jdk.internal.loader.ClassLoaders$PlatformClassLoader@301ec38b
    +  +-com.taobao.arthas.agent.ArthasClassloader@472067c7
    +  +-jdk.internal.loader.ClassLoaders$AppClassLoader@4b85612c
    +    +-org.springframework.boot.loader.LaunchedURLClassLoader@7f9a81e8
    +
    +$ ognl -c 7f9a81e8 @org.springframework.boot.SpringApplication@logger
    +@Slf4jLocationAwareLog[
    +    FQCN=@String[org.apache.commons.logging.LogAdapter$Slf4jLocationAwareLog],
    +    name=@String[org.springframework.boot.SpringApplication],
    +    logger=@Logger[Logger[org.springframework.boot.SpringApplication]],
    +]
    +$
    +

    注意 hashcode 是变化的,需要先查看当前的 ClassLoader 信息,提取对应 ClassLoader 的 hashcode。

    对于只有唯一实例的 ClassLoader 可以通过 class name 指定,使用起来更加方便:

    $ ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader  @org.springframework.boot.SpringApplication@logger
    +@Slf4jLocationAwareLog[
    +    FQCN=@String[org.apache.commons.logging.LogAdapter$Slf4jLocationAwareLog],
    +    name=@String[org.springframework.boot.SpringApplication],
    +    logger=@Logger[Logger[org.springframework.boot.SpringApplication]],
    +]
    +

    执行多行表达式,赋值给临时变量,返回一个 List:

    $ ognl '#value1=@System@getProperty("java.home"), #value2=@System@getProperty("java.runtime.name"), {#value1, #value2}'
    +@ArrayList[
    +    @String[/opt/java/8.0.181-zulu/jre],
    +    @String[OpenJDK Runtime Environment],
    +]
    +
    + + + diff --git a/3.x/doc/options.html b/3.x/doc/options.html new file mode 100644 index 00000000000..10bae61ff9b --- /dev/null +++ b/3.x/doc/options.html @@ -0,0 +1,101 @@ + + + + + + + + + options | arthas + + + + +
    目录

    options

    options在线教程在新窗口打开

    提示

    全局开关

    名称默认值描述
    unsafefalse是否支持对系统级别的类进行增强,打开该开关可能导致把 JVM 搞挂,请慎重选择!
    dumpfalse是否支持被增强了的类 dump 到外部文件中,如果打开开关,class 文件会被 dump 到/${application working dir}/arthas-class-dump/目录下,具体位置详见控制台输出
    batch-re-transformtrue是否支持批量对匹配到的类执行 retransform 操作
    json-formatfalse是否支持 json 化的输出
    disable-sub-classfalse是否禁用子类匹配,默认在匹配目标类的时候会默认匹配到其子类,如果想精确匹配,可以关闭此开关
    support-default-methodtrue是否支持匹配到 default method, 默认会查找 interface,匹配里面的 default method。参考 #1105在新窗口打开
    save-resultfalse是否打开执行结果存日志功能,打开之后所有命令的运行结果都将保存到~/logs/arthas-cache/result.log
    job-timeout1d异步后台任务的默认超时时间,超过这个时间,任务自动停止;比如设置 1d, 2h, 3m, 25s,分别代表天、小时、分、秒
    print-parent-fieldstrue是否打印在 parent class 里的 filed
    verbosefalse是否打印更多详细信息
    stricttrue是否启用 strict 模式

    查看所有的 options

    $ options
    + LEVEL  TYPE    NAME          VALUE   SUMMARY               DESCRIPTION
    +-------------------------------------------------------------------------------------------------------
    + 0      boolea  unsafe        false   Option to support sy  This option enables to proxy functionality
    +        n                             stem-level class       of JVM classes. Due to serious security r
    +                                                            isk a JVM crash is possibly be introduced.
    +                                                             Do not activate it unless you are able to
    +                                                             manage.
    + 1      boolea  dump          false   Option to dump the e  This option enables the enhanced classes t
    +        n                             nhanced classes       o be dumped to external file for further d
    +                                                            e-compilation and analysis.
    + 1      boolea  batch-re-tra  true    Option to support ba  This options enables to reTransform classe
    +        n       nsform                tch reTransform Clas  s with batch mode.
    +                                      s
    + 2      boolea  json-format   false   Option to support JS  This option enables to format object outpu
    +        n                             ON format of object   t with JSON when -x option selected.
    +                                      output
    + 1      boolea  disable-sub-  false   Option to control in  This option disable to include sub class w
    +        n       class                 clude sub class when  hen matching class.
    +                                       class matching
    + 1      boolea  support-defa  true    Option to control in  This option disable to include default met
    +        n       ult-method            clude default method  hod in interface when matching class.
    +                                       in interface when c
    +                                      lass matching
    + 1      boolea  save-result   false   Option to print comm  This option enables to save each command's
    +        n                             and's result to log    result to log file, which path is ${user.
    +                                      file                  home}/logs/arthas-cache/result.log.
    + 2      String  job-timeout   1d      Option to job timeou  This option setting job timeout,The unit c
    +                                      t                     an be d, h, m, s for day, hour, minute, se
    +                                                            cond. 1d is one day in default
    + 1      boolea  print-parent  true    Option to print all   This option enables print files in parent
    +        n       -fields               fileds in parent cla  class, default value true.
    +                                      ss
    + 1      boolea  verbose       false   Option to print verb  This option enables print verbose informat
    +        n                             ose information       ion, default value false.
    + 1      boolea  strict        true    Option to strict mod  By default, strict mode is true, not allow
    +        n                             e                     ed to set object properties. Want to set o
    +                                                            bject properties, execute `options strict
    +                                                            false`
    +

    获取 option 的值

    $ options json-format
    + LEVEL  TYPE  NAME         VALUE  SUMMARY             DESCRIPTION
    +--------------------------------------------------------------------------------------------
    + 2      bool  json-format  false  Option to support   This option enables to format object
    +        ean                       JSON format of obj  output with JSON when -x option selec
    +                                  ect output          ted.
    +

    提示

    默认情况下json-format为 false,如果希望watch/tt等命令结果以 json 格式输出,则可以设置json-format为 true。

    设置指定的 option

    例如,想打开执行结果存日志功能,输入如下命令即可:

    $ options save-result true
    + NAME         BEFORE-VALUE  AFTER-VALUE
    +----------------------------------------
    + save-result  false         true
    +

    打开 unsafe 开关,支持 jdk package 下的类

    默认情况下,watch/trace/tt/trace/monitor等命令不支持java.* package 下的类。可以设置unsafe为 true,则可以增强。

    $ options unsafe true
    + NAME    BEFORE-VALUE  AFTER-VALUE
    +-----------------------------------
    + unsafe  false         true
    +
    $ watch java.lang.invoke.Invokers callSiteForm
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 61 ms, listenerId: 1
    +

    关闭 strict 模式,允许在 ognl 表达式里设置对象属性

    提示

    since 3.6.0

    对于新用户,在编写 ognl 表达式时,可能会出现误用。

    比如对于Student,判断年龄等于 18 时,可能条件表达式会误写为target.age=18,这个表达式实际上是把当前对象的age设置为 18 了。正确的写法是target.age==18

    为了防止出现类似上面的误用,Arthas 默认启用strict模式,在ognl表达式里,禁止更新对象的 Property 或者调用setter函数。

    MathGame为例,会出现以下的错误提示。

    $ watch demo.MathGame primeFactors 'target' 'target.illegalArgumentCount=1'
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 206 ms, listenerId: 1
    +watch failed, condition is: target.illegalArgumentCount=1, express is: target, By default, strict mode is true, not allowed to set object properties. Want to set object properties, execute `options strict false`, visit /Users/admin/logs/arthas/arthas.log for more details.
    +

    用户如果确定要在ognl表达式里更新对象,可以执行options strict false,关闭strict模式。

    • 更多信息参考: https://github.com/alibaba/arthas/issues/2128
    + + + diff --git a/3.x/doc/perfcounter.html b/3.x/doc/perfcounter.html new file mode 100644 index 00000000000..1b535ff6e33 --- /dev/null +++ b/3.x/doc/perfcounter.html @@ -0,0 +1,60 @@ + + + + + + + + + perfcounter | arthas + + + + +
    目录

    perfcounter

    perfcounter在线教程在新窗口打开

    提示

    查看当前 JVM 的 Perf Counter 信息

    使用参考

    $ perfcounter
    + java.ci.totalTime                            2325637411
    + java.cls.loadedClasses                       3403
    + java.cls.sharedLoadedClasses                 0
    + java.cls.sharedUnloadedClasses               0
    + java.cls.unloadedClasses                     0
    + java.property.java.version                   11.0.4
    + java.property.java.vm.info                   mixed mode
    + java.property.java.vm.name                   OpenJDK 64-Bit Server VM
    +...
    +

    可以用-d参数打印更多信息:

    $ perfcounter -d
    + Name                                   Variability   Units        Value
    +---------------------------------------------------------------------------------
    + java.ci.totalTime                      Monotonic     Ticks        3242526906
    + java.cls.loadedClasses                 Monotonic     Events       3404
    + java.cls.sharedLoadedClasses           Monotonic     Events       0
    + java.cls.sharedUnloadedClasses         Monotonic     Events       0
    + java.cls.unloadedClasses               Monotonic     Events       0
    +

    jdk9 以上的应用

    如果没有打印出信息,应用在启动时,加下面的参数:

    --add-opens java.base/jdk.internal.perf=ALL-UNNAMED --add-exports java.base/jdk.internal.perf=ALL-UNNAMED --add-opens java.management/sun.management.counter.perf=ALL-UNNAMED --add-opens java.management/sun.management.counter=ALL-UNNAMED
    +
    + + + diff --git a/3.x/doc/profiler.html b/3.x/doc/profiler.html new file mode 100644 index 00000000000..285d63e9c74 --- /dev/null +++ b/3.x/doc/profiler.html @@ -0,0 +1,93 @@ + + + + + + + + + profiler | arthas + + + + +
    目录

    profiler

    profiler在线教程在新窗口打开

    提示

    使用async-profiler在新窗口打开生成火焰图

    profiler 命令支持生成应用热点的火焰图。本质上是通过不断的采样,然后把收集到的采样结果生成火焰图。

    profiler 命令基本运行结构是 profiler action [actionArg]

    参数说明

    参数名称参数说明
    action要执行的操作
    actionArg属性名模式
    [i:]采样间隔(单位:ns)(默认值:10'000'000,即 10 ms)
    [f:]将输出转储到指定路径
    [d:]运行评测指定秒
    [e:]要跟踪哪个事件(cpu, alloc, lock, cache-misses 等),默认是 cpu

    启动 profiler

    $ profiler start
    +Started [cpu] profiling
    +

    提示

    默认情况下,生成的是 cpu 的火焰图,即 event 为cpu。可以用--event参数来指定。

    获取已采集的 sample 的数量

    $ profiler getSamples
    +23
    +

    查看 profiler 状态

    $ profiler status
    +[cpu] profiling is running for 4 seconds
    +

    可以查看当前 profiler 在采样哪种event和采样时间。

    停止 profiler

    生成 html 格式结果

    默认情况下,结果文件是html格式,也可以用--format参数指定:

    $ profiler stop --format html
    +profiler output file: /tmp/test/arthas-output/20211207-111550.html
    +OK
    +

    或者在--file参数里用文件名指名格式。比如--file /tmp/result.html

    通过浏览器查看 arthas-output 下面的 profiler 结果

    默认情况下,arthas 使用 3658 端口,则可以打开: http://localhost:3658/arthas-output/在新窗口打开 查看到arthas-output目录下面的 profiler 结果:

    点击可以查看具体的结果:

    提示

    如果是 chrome 浏览器,可能需要多次刷新。

    profiler 支持的 events

    在不同的平台,不同的 OS 下面,支持的 events 各有不同。比如在 macos 下面:

    $ profiler list
    +Basic events:
    +  cpu
    +  alloc
    +  lock
    +  wall
    +  itimer
    +

    在 linux 下面

    $ profiler list
    +Basic events:
    +  cpu
    +  alloc
    +  lock
    +  wall
    +  itimer
    +Perf events:
    +  page-faults
    +  context-switches
    +  cycles
    +  instructions
    +  cache-references
    +  cache-misses
    +  branches
    +  branch-misses
    +  bus-cycles
    +  L1-dcache-load-misses
    +  LLC-load-misses
    +  dTLB-load-misses
    +  mem:breakpoint
    +  trace:tracepoint
    +

    如果遇到 OS 本身的权限/配置问题,然后  缺少部分 event,可以参考async-profiler本身文档:async-profiler在新窗口打开

    可以用--event参数指定要采样的事件,比如对alloc事件进入采样:

    $ profiler start --event alloc
    +

    恢复采样

    $ profiler resume
    +Started [cpu] profiling
    +

    startresume的区别是:start是新开始采样,resume会保留上次stop时的数据。

    通过执行profiler getSamples可以查看 samples 的数量来验证。

    使用execute来执行复杂的命令

    比如开始采样:

    profiler execute 'start,framebuf=5000000'
    +

    停止采样,并保存到指定文件里:

    profiler execute 'stop,file=/tmp/result.html'
    +

    具体的格式参考: arguments.cpp在新窗口打开

    查看所有支持的 action

    $ profiler actions
    +Supported Actions: [resume, dumpCollapsed, getSamples, start, list, execute, version, stop, load, dumpFlat, actions, dumpTraces, status]
    +

    查看版本

    $ profiler version
    +Async-profiler 1.6 built on Sep  9 2019
    +Copyright 2019 Andrei Pangin
    +

    配置 framebuf 参数

    如果遇到生成的火焰图有 [frame_buffer_overflow],则需要增大 framebuf(默认值是 1'000'000),可以显式配置,比如:

    profiler start --framebuf 5000000
    +

    配置 include/exclude 来过滤数据

    如果应用比较复杂,生成的内容很多,想只关注部分数据,可以通过 include/exclude 来过滤。比如

    profiler start --include 'java/*' --include 'demo/*' --exclude '*Unsafe.park*'
    +

    include/exclude 都支持设置多个值 ,但是需要配置在命令行的最后。

    指定执行时间

    比如,希望 profiler 执行 300 秒自动结束,可以用 -d/--duration 参数指定:

    profiler start --duration 300
    +

    生成 jfr 格式结果

    注意,jfr 只支持在 start时配置。如果是在stop时指定,则不会生效。

    profiler start --file /tmp/test.jfr
    +

    file参数支持一些变量:

    • 时间戳: --file /tmp/test-%t.jfr
    • 进程 ID: --file /tmp/test-%p.jfr

    生成的结果可以用支持 jfr 格式的工具来查看。比如:

    • JDK Mission Control : https://github.com/openjdk/jmc
    • JProfiler : https://github.com/alibaba/arthas/issues/1416

    生成的火焰图里的 unknown

    • https://github.com/jvm-profiling-tools/async-profiler/discussions/409
    + + + diff --git a/3.x/doc/pwd.html b/3.x/doc/pwd.html new file mode 100644 index 00000000000..0586461e26f --- /dev/null +++ b/3.x/doc/pwd.html @@ -0,0 +1,42 @@ + + + + + + + + + pwd | arthas + + + + + + + + diff --git a/3.x/doc/quick-start.html b/3.x/doc/quick-start.html new file mode 100644 index 00000000000..b169189d786 --- /dev/null +++ b/3.x/doc/quick-start.html @@ -0,0 +1,205 @@ + + + + + + + + + 快速入门 | arthas + + + + +
    目录

    快速入门

    可以通过下面的方式自己动手实践,也可以通过我们的在线教程在新窗口打开,跟随教程快速入门。

    1. 启动 math-game

    curl -O https://arthas.aliyun.com/math-game.jar
    +java -jar math-game.jar
    +

    math-game是一个简单的程序,每隔一秒生成一个随机数,再执行质因数分解,并打印出分解结果。

    math-game源代码:查看在新窗口打开

    2. 启动 arthas

    在命令行下面执行(使用和目标进程一致的用户启动,否则可能 attach 失败):

    curl -O https://arthas.aliyun.com/arthas-boot3.jar
    +java -jar arthas-boot3.jar
    +
    • 执行该程序的用户需要和目标进程具有相同的权限。比如以admin用户来执行:sudo su admin && java -jar arthas-boot3.jarsudo -u admin -EH java -jar arthas-boot3.jar
    • 如果 attach 不上目标进程,可以查看~/logs/arthas/ 目录下的日志。
    • 如果下载速度比较慢,可以使用 aliyun 的镜像:java -jar arthas-boot3.jar --repo-mirror aliyun --use-http
    • java -jar arthas-boot3.jar -h 打印更多参数信息。

    选择应用 java 进程:

    $ $ java -jar arthas-boot3.jar
    +* [1]: 35542
    +  [2]: 71560 math-game.jar
    +

    math-game进程是第 2 个,则输入 2,再输入回车/enter。Arthas 会 attach 到目标进程上,并输出日志:

    [INFO] Try to attach process 71560
    +[INFO] Attach process 71560 success.
    +[INFO] arthas-client connect 127.0.0.1 3658
    +  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
    +|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
    +`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'
    +
    +
    +wiki: https://arthas.aliyun.com/3.x/doc
    +version: 3.0.5.20181127201536
    +pid: 71560
    +time: 2018-11-28 19:16:24
    +
    +$
    +

    3. 查看 dashboard

    输入dashboard,按回车/enter,会展示当前进程的信息,按ctrl+c可以中断执行。

    $ dashboard
    +ID     NAME                   GROUP          PRIORI STATE  %CPU    TIME   INTERRU DAEMON
    +17     pool-2-thread-1        system         5      WAITIN 67      0:0    false   false
    +27     Timer-for-arthas-dashb system         10     RUNNAB 32      0:0    false   true
    +11     AsyncAppender-Worker-a system         9      WAITIN 0       0:0    false   true
    +9      Attach Listener        system         9      RUNNAB 0       0:0    false   true
    +3      Finalizer              system         8      WAITIN 0       0:0    false   true
    +2      Reference Handler      system         10     WAITIN 0       0:0    false   true
    +4      Signal Dispatcher      system         9      RUNNAB 0       0:0    false   true
    +26     as-command-execute-dae system         10     TIMED_ 0       0:0    false   true
    +13     job-timeout            system         9      TIMED_ 0       0:0    false   true
    +1      main                   main           5      TIMED_ 0       0:0    false   false
    +14     nioEventLoopGroup-2-1  system         10     RUNNAB 0       0:0    false   false
    +18     nioEventLoopGroup-2-2  system         10     RUNNAB 0       0:0    false   false
    +23     nioEventLoopGroup-2-3  system         10     RUNNAB 0       0:0    false   false
    +15     nioEventLoopGroup-3-1  system         10     RUNNAB 0       0:0    false   false
    +Memory             used   total max    usage GC
    +heap               32M    155M  1820M  1.77% gc.ps_scavenge.count  4
    +ps_eden_space      14M    65M   672M   2.21% gc.ps_scavenge.time(m 166
    +ps_survivor_space  4M     5M    5M           s)
    +ps_old_gen         12M    85M   1365M  0.91% gc.ps_marksweep.count 0
    +nonheap            20M    23M   -1           gc.ps_marksweep.time( 0
    +code_cache         3M     5M    240M   1.32% ms)
    +Runtime
    +os.name                Mac OS X
    +os.version             10.13.4
    +java.version           1.8.0_162
    +java.home              /Library/Java/JavaVir
    +                       tualMachines/jdk1.8.0
    +                       _162.jdk/Contents/Hom
    +                       e/jre
    +

    4. 通过 thread 命令来获取到math-game进程的 Main Class

    thread 1会打印线程 ID 1 的栈,通常是 main 函数的线程。

    $ thread 1 | grep 'main('
    +    at demo.MathGame.main(MathGame.java:17)
    +

    5. 通过 jad 来反编译 Main Class

    $ jad demo.MathGame
    +
    +ClassLoader:
    ++-sun.misc.Launcher$AppClassLoader@3d4eac69
    +  +-sun.misc.Launcher$ExtClassLoader@66350f69
    +
    +Location:
    +/tmp/math-game.jar
    +
    +/*
    + * Decompiled with CFR 0_132.
    + */
    +package demo;
    +
    +import java.io.PrintStream;
    +import java.util.ArrayList;
    +import java.util.Iterator;
    +import java.util.List;
    +import java.util.Random;
    +import java.util.concurrent.TimeUnit;
    +
    +public class MathGame {
    +    private static Random random = new Random();
    +    private int illegalArgumentCount = 0;
    +
    +    public static void main(String[] args) throws InterruptedException {
    +        MathGame game = new MathGame();
    +        do {
    +            game.run();
    +            TimeUnit.SECONDS.sleep(1L);
    +        } while (true);
    +    }
    +
    +    public void run() throws InterruptedException {
    +        try {
    +            int number = random.nextInt();
    +            List<Integer> primeFactors = this.primeFactors(number);
    +            MathGame.print(number, primeFactors);
    +        }
    +        catch (Exception e) {
    +            System.out.println(String.format("illegalArgumentCount:%3d, ", this.illegalArgumentCount) + e.getMessage());
    +        }
    +    }
    +
    +    public static void print(int number, List<Integer> primeFactors) {
    +        StringBuffer sb = new StringBuffer("" + number + "=");
    +        Iterator<Integer> iterator = primeFactors.iterator();
    +        while (iterator.hasNext()) {
    +            int factor = iterator.next();
    +            sb.append(factor).append('*');
    +        }
    +        if (sb.charAt(sb.length() - 1) == '*') {
    +            sb.deleteCharAt(sb.length() - 1);
    +        }
    +        System.out.println(sb);
    +    }
    +
    +    public List<Integer> primeFactors(int number) {
    +        if (number < 2) {
    +            ++this.illegalArgumentCount;
    +            throw new IllegalArgumentException("number is: " + number + ", need >= 2");
    +        }
    +        ArrayList<Integer> result = new ArrayList<Integer>();
    +        int i = 2;
    +        while (i <= number) {
    +            if (number % i == 0) {
    +                result.add(i);
    +                number /= i;
    +                i = 2;
    +                continue;
    +            }
    +            ++i;
    +        }
    +        return result;
    +    }
    +}
    +
    +Affect(row-cnt:1) cost in 970 ms.
    +

    6. watch

    通过watch命令来查看demo.MathGame#primeFactors函数的返回值:

    $ watch demo.MathGame primeFactors returnObj
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 107 ms.
    +ts=2018-11-28 19:22:30; [cost=1.715367ms] result=null
    +ts=2018-11-28 19:22:31; [cost=0.185203ms] result=null
    +ts=2018-11-28 19:22:32; [cost=19.012416ms] result=@ArrayList[
    +    @Integer[5],
    +    @Integer[47],
    +    @Integer[2675531],
    +]
    +ts=2018-11-28 19:22:33; [cost=0.311395ms] result=@ArrayList[
    +    @Integer[2],
    +    @Integer[5],
    +    @Integer[317],
    +    @Integer[503],
    +    @Integer[887],
    +]
    +ts=2018-11-28 19:22:34; [cost=10.136007ms] result=@ArrayList[
    +    @Integer[2],
    +    @Integer[2],
    +    @Integer[3],
    +    @Integer[3],
    +    @Integer[31],
    +    @Integer[717593],
    +]
    +ts=2018-11-28 19:22:35; [cost=29.969732ms] result=@ArrayList[
    +    @Integer[5],
    +    @Integer[29],
    +    @Integer[7651739],
    +]
    +

    更多的功能可以查看进阶教程在新窗口打开

    7. 退出 arthas

    如果只是退出当前的连接,可以用quit或者exit命令。Attach 到目标进程上的 arthas 还会继续运行,端口会保持开放,下次连接时可以直接连接上。

    如果想完全退出 arthas,可以执行stop命令。

    + + + diff --git a/3.x/doc/quit.html b/3.x/doc/quit.html new file mode 100644 index 00000000000..6d663905388 --- /dev/null +++ b/3.x/doc/quit.html @@ -0,0 +1,41 @@ + + + + + + + + + quit | arthas + + + + + + + + diff --git a/3.x/doc/redefine.html b/3.x/doc/redefine.html new file mode 100644 index 00000000000..3fbcd39a45a --- /dev/null +++ b/3.x/doc/redefine.html @@ -0,0 +1,75 @@ + + + + + + + + + redefine | arthas + + + + +
    目录

    redefine

    提示

    推荐使用 retransform 命令

    mc-redefine在线教程在新窗口打开

    提示

    加载外部的.class文件,redefine jvm 已加载的类。

    参考:Instrumentation#redefineClasses在新窗口打开

    常见问题

    提示

    推荐使用 retransform 命令

    • redefine 的 class 不能修改、添加、删除类的 field 和 method,包括方法参数、方法名称及返回值

    • 如果 mc 失败,可以在本地开发环境编译好 class 文件,上传到目标系统,使用 redefine 热加载 class

    • 目前 redefine 和 watch/trace/jad/tt 等命令冲突,以后重新实现 redefine 功能会解决此问题

    注意

    注意, redefine 后的原来的类不能恢复,redefine 有可能失败(比如增加了新的 field),参考 jdk 本身的文档。

    提示

    reset命令对redefine的类无效。如果想重置,需要redefine原始的字节码。

    提示

    redefine命令和jad/watch/trace/monitor/tt等命令会冲突。执行完redefine之后,如果再执行上面提到的命令,则会把redefine的字节码重置。 原因是 jdk 本身 redefine 和 Retransform 是不同的机制,同时使用两种机制来更新字节码,只有最后修改的会生效。

    参数说明

    参数名称参数说明
    [c:]ClassLoader 的 hashcode
    [classLoaderClass:]指定执行表达式的 ClassLoader 的 class name

    使用参考

       redefine /tmp/Test.class
    +   redefine -c 327a647b /tmp/Test.class /tmp/Test\$Inner.class
    +   redefine --classLoaderClass sun.misc.Launcher$AppClassLoader /tmp/Test.class /tmp/Test\$Inner.class
    +

    结合 jad/mc 命令使用

    jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
    +
    +mc /tmp/UserController.java -d /tmp
    +
    +redefine /tmp/com/example/demo/arthas/user/UserController.class
    +
    • jad 命令反编译,然后可以用其它编译器,比如 vim 来修改源码
    • mc 命令来内存编译修改过的代码
    • 用 redefine 命令加载新的字节码

    上传 .class 文件到服务器的技巧

    使用mc命令来编译jad的反编译的代码有可能失败。可以在本地修改代码,编译好后再上传到服务器上。有的服务器不允许直接上传文件,可以使用base64命令来绕过。

    1. 在本地先转换.class文件为 base64,再保存为 result.txt

      base64 < Test.class > result.txt
      +
    2. 到服务器上,新建并编辑result.txt,复制本地的内容,粘贴再保存

    3. 把服务器上的 result.txt还原为.class

      base64 -d < result.txt > Test.class
      +
    4. 用 md5 命令计算哈希值,校验是否一致

    redefine 的限制

    • 不允许新增加 field/method
    • 正在跑的函数,没有退出不能生效,比如下面新增加的System.out.println,只有run()函数里的会生效
    public class MathGame {
    +    public static void main(String[] args) throws InterruptedException {
    +        MathGame game = new MathGame();
    +        while (true) {
    +            game.run();
    +            TimeUnit.SECONDS.sleep(1);
    +            // 这个不生效,因为代码一直跑在 while里
    +            System.out.println("in loop");
    +        }
    +    }
    +
    +    public void run() throws InterruptedException {
    +        // 这个生效,因为run()函数每次都可以完整结束
    +        System.out.println("call run()");
    +        try {
    +            int number = random.nextInt();
    +            List<Integer> primeFactors = primeFactors(number);
    +            print(number, primeFactors);
    +
    +        } catch (Exception e) {
    +            System.out.println(String.format("illegalArgumentCount:%3d, ", illegalArgumentCount) + e.getMessage());
    +        }
    +    }
    +}
    +
    + + + diff --git a/3.x/doc/release-notes.html b/3.x/doc/release-notes.html new file mode 100644 index 00000000000..a3c77d0ff68 --- /dev/null +++ b/3.x/doc/release-notes.html @@ -0,0 +1,41 @@ + + + + + + + + + Release Notes | arthas + + + + +
    目录

    Release Notes

    v3.1.1

    v3.1.0

    v3.0.5

    v3.0.4

    v2017-11-03

    • 增加 getstatic 方法获取静态变量
    • 修复 arthas classloader 加载到应用日志的问题
    • 增加 ognl custom classloader 便于调用静态方法
    • 优化 termd 输出大字符串的性能问题
    • classloader 命令默认按类加载器类型分类编译
    • 修复 wc 命令统计错误的问题
    • 禁止增强特定 JDK 类,如 Classloader, Method, Integer 等
    • 支持 OGNL 表达式出错直接退出命令
    • 修复管道类命令单独出错的问题
    • 优化命令重定向功能,使用异步日志输出结果
    • trace 命令增加过滤 jdk 方法调用的功能

    v2017-09-22

    • 优化 agent server 启动时的异常信息
    • 修复异步命令的一些 bug

    v2017-09-11

    • 支持异步后后命令
    • jad 命令优化,支持 JDK8 及内部类
    • 修复中文乱码问题

    v2017-05-11

    • tt 命令默认只展开 1 层,防止对象过大造成卡顿
    • 修复中文无法展示的问题

    v2017-05-12

    • Arthas 3.0 release

    v2016-12-09

    • as.sh 支持-h 输出帮助
    • [#121] 修复残留的临时文件导致 arthas 启动失败的问题
    • [#123] 修复反复 attach/shutdown 造成 classloader 泄露的问题
    • 优化命令中的帮助提示信息
    • [#126] 修复 tm 命令文档链接错乱的问题
    • [#122] classloader 命令中过滤掉sun.reflect.DelegatingClassLoader
    • [#129] 修复 classloader 层次展示的问题
    • [#125] arthas 输出的 log 不主动换行,对于日志解析更加友好
    • [#96] sc 等命令支持 com/taobao/xxx/TestClass 这样的格式,以后复制粘贴不需要在把'/'替换成'.'啦
    • [#124] 修复某些情况下 trace 的时间为负值的问题
    • [#128] tt 命令的结果默认自动展开,不需要再增加-x 2来看到参数,异常的详细信息了。
    • [#130] 修复当端口冲突时,没有很好地打印错误,而是进入了一个出错的交互界面的问题
    • [#98] 修复 Arthas 启动时,如果下载更新失败,导致启动失败的问题
    • [#139] 修复某些特殊情况下 agent attach 失败的问题
    • [#156] jd-core-java 延迟初始化,避免 arthas 启动时出错
    • 修复线程名重复的问题
    • [#150] trace 命令支持按运行总耗时过滤
    • 修复 sc 查找 SystemClassloader 时可能出现的 NPE
    • [#180] 修复第一次 Attach 成功之后,删除之前 Arthas 的安装包,重新编译打包,再次 attach 失败的问题

    v2016-06-07

    • 修复以资源方式加载 spy 类时出现 NPE 的问题
    • 支持一键找出线程中获得锁并阻塞住其他线程的线程
    • 优化 Thread 输出,按线程名排序
    • 获取 topN 忙的线程时,支持指定刷新间隔

    v2016-04-08

    • New feature:

      • dashboard 支持指定刷新频率,支持指定执行次数
      • 命令执行结果保存到日志文件,方便后续查看
      • 启动速度优化,第一次 attach 的速度提升一倍
      • 支持批处理功能,支持执行脚本文件
      • 优化启动逻辑,arthas 脚本启动时交互式选择进程
      • 类默认启用继承关系查询,查找类时默认会查找子类,如果需要关闭,则通过全局开关 Options disable-sub-class 关闭
      • 支持在彩色模式和文本模式中切换
    • UI Improvement:

      • 合并 exit 和 quit 命令
      • 命令帮助信息增加 wiki 链接
      • 优化 watch 的逻辑,更加符合大家的直觉
      • thread 命令增加 example 说明
      • 自动补全的时候,忽略大小写
    • Bugfix:

      • 修复 trace 命令遇到循环造成输出太长
      • 修复 trace 命令在方法调用中抛出了异常,会让 trace 的节点错位
      • 修正增强 BootstrapClassLoader 加载的类,找不到 Spy 的问题
      • 修复某些配色方案下,结果显示不友好的问题

    v2016-03-07

    • 支持一键查看当前最忙的前 N 个线程及其堆栈
    • 修复 openjdk 下启动 arthas 失败的问题(需要重新安装 as.sh)
    • 一些体验优化

    v2016-01-18

    • 优化 jad,实时 dump 内存 byte array,并使用 jd-core-java 反编译,支持行号显示
    • 修复 tt 命令在监控与线程上下文相关的方法调用时,显示/重做等场景下的 bug

    v2016-01-08

    • 修复一些 bug
      • jad NPE
      • watch/monitor NPE
      • 不需要转义
      • 数据统计问题修复
      • sc 查看静态变量内部层次结构

    v2015-12-29

    • Arthas 2.0 测试版本发布!
    + + + diff --git a/3.x/doc/reset.html b/3.x/doc/reset.html new file mode 100644 index 00000000000..6088292e9eb --- /dev/null +++ b/3.x/doc/reset.html @@ -0,0 +1,76 @@ + + + + + + + + + reset | arthas + + + + +
    目录

    reset

    reset在线教程在新窗口打开

    提示

    重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端stop时会重置所有增强过的类

    使用参考

    $ reset -h
    + USAGE:
    +   reset [-h] [-E] [class-pattern]
    +
    + SUMMARY:
    +   Reset all the enhanced classes
    +
    + EXAMPLES:
    +   reset
    +   reset *List
    +   reset -E .*List
    +
    + OPTIONS:
    + -h, --help                                                         this help
    + -E, --regex                                                        Enable regular expression to match (wildcard matching by default)
    + <class-pattern>                                                    Path and classname of Pattern Matching
    +

    还原指定类

    $ trace Test test
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 57 ms.
    +`---ts=2017-10-26 17:10:33;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@14dad5dc
    +    `---[0.590102ms] Test:test()
    +
    +`---ts=2017-10-26 17:10:34;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@14dad5dc
    +    `---[0.068692ms] Test:test()
    +
    +$ reset Test
    +Affect(class-cnt:1 , method-cnt:0) cost in 11 ms.
    +

    还原所有类

    $ trace Test test
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 15 ms.
    +`---ts=2017-10-26 17:12:06;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@14dad5dc
    +    `---[0.128518ms] Test:test()
    +
    +$ reset
    +Affect(class-cnt:1 , method-cnt:0) cost in 9 ms.
    +
    + + + diff --git a/3.x/doc/retransform.html b/3.x/doc/retransform.html new file mode 100644 index 00000000000..bd90f2e8f3b --- /dev/null +++ b/3.x/doc/retransform.html @@ -0,0 +1,90 @@ + + + + + + + + + retransform | arthas + + + + +
    目录

    retransform

    mc-retransform在线教程在新窗口打开

    提示

    加载外部的.class文件,retransform jvm 已加载的类。

    参考:Instrumentation#retransformClasses在新窗口打开

    使用参考

       retransform /tmp/Test.class
    +   retransform -l
    +   retransform -d 1                    # delete retransform entry
    +   retransform --deleteAll             # delete all retransform entries
    +   retransform --classPattern demo.*   # triger retransform classes
    +   retransform -c 327a647b /tmp/Test.class /tmp/Test\$Inner.class
    +   retransform --classLoaderClass 'sun.misc.Launcher$AppClassLoader' /tmp/Test.class
    +

    retransform 指定的 .class 文件

    $ retransform /tmp/MathGame.class
    +retransform success, size: 1, classes:
    +demo.MathGame
    +

    加载指定的 .class 文件,然后解析出 class name,再 retransform jvm 中已加载的对应的类。每加载一个 .class 文件,则会记录一个 retransform entry.

    提示

    如果多次执行 retransform 加载同一个 class 文件,则会有多条 retransform entry.

    查看 retransform entry

    $ retransform -l
    +Id              ClassName       TransformCount  LoaderHash      LoaderClassName
    +1               demo.MathGame   1               null            null
    +
    • TransformCount 统计在 ClassFileTransformer#transform 函数里尝试返回 entry 对应的 .class 文件的次数,但并不表明 transform 一定成功。

    删除指定 retransform entry

    需要指定 id:

    retransform -d 1
    +

    删除所有 retransform entry

    retransform --deleteAll
    +

    显式触发 retransform

    $ retransform --classPattern demo.MathGame
    +retransform success, size: 1, classes:
    +demo.MathGame
    +

    注意:对于同一个类,当存在多个 retransform entry 时,如果显式触发 retransform ,则最后添加的 entry 生效(id 最大的)。

    消除 retransform 的影响

    如果对某个类执行 retransform 之后,想消除影响,则需要:

    • 删除这个类对应的 retransform entry
    • 重新触发 retransform

    提示

    如果不清除掉所有的 retransform entry,并重新触发 retransform ,则 arthas stop 时,retransform 过的类仍然生效。

    结合 jad/mc 命令使用

    jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
    +
    +mc /tmp/UserController.java -d /tmp
    +
    +retransform /tmp/com/example/demo/arthas/user/UserController.class
    +
    • jad 命令反编译,然后可以用其它编译器,比如 vim 来修改源码
    • mc 命令来内存编译修改过的代码
    • 用 retransform 命令加载新的字节码

    上传 .class 文件到服务器的技巧

    使用mc命令来编译jad的反编译的代码有可能失败。可以在本地修改代码,编译好后再上传到服务器上。有的服务器不允许直接上传文件,可以使用base64命令来绕过。

    1. 在本地先转换.class文件为 base64,再保存为 result.txt

      base64 < Test.class > result.txt
      +
    2. 到服务器上,新建并编辑result.txt,复制本地的内容,粘贴再保存

    3. 把服务器上的 result.txt还原为.class

      base64 -d < result.txt > Test.class
      +
    4. 用 md5 命令计算哈希值,校验是否一致

    retransform 的限制

    • 不允许新增加 field/method
    • 正在跑的函数,没有退出不能生效,比如下面新增加的System.out.println,只有run()函数里的会生效
    public class MathGame {
    +    public static void main(String[] args) throws InterruptedException {
    +        MathGame game = new MathGame();
    +        while (true) {
    +            game.run();
    +            TimeUnit.SECONDS.sleep(1);
    +            // 这个不生效,因为代码一直跑在 while里
    +            System.out.println("in loop");
    +        }
    +    }
    +
    +    public void run() throws InterruptedException {
    +        // 这个生效,因为run()函数每次都可以完整结束
    +        System.out.println("call run()");
    +        try {
    +            int number = random.nextInt();
    +            List<Integer> primeFactors = primeFactors(number);
    +            print(number, primeFactors);
    +
    +        } catch (Exception e) {
    +            System.out.println(String.format("illegalArgumentCount:%3d, ", illegalArgumentCount) + e.getMessage());
    +        }
    +    }
    +}
    +
    + + + diff --git a/3.x/doc/save-log.html b/3.x/doc/save-log.html new file mode 100644 index 00000000000..21294ca172a --- /dev/null +++ b/3.x/doc/save-log.html @@ -0,0 +1,46 @@ + + + + + + + + + 执行结果存日志 | arthas + + + + +
    目录

    执行结果存日志

    执行结果存日志在线教程在新窗口打开

    提示

    将命令的结果完整保存在日志文件中,便于后续进行分析

    • 默认情况下,该功能是关闭的,如果需要开启,请执行以下命令:
    $ options save-result true
    + NAME         BEFORE-VALUE  AFTER-VALUE
    +----------------------------------------
    + save-result  false         true
    +Affect(row-cnt:1) cost in 3 ms.
    +

    看到上面的输出,即表示成功开启该功能;

    • 日志文件路径

    结果会异步保存在:{user.home}/logs/arthas-cache/result.log,请定期进行清理,以免占据磁盘空间

    使用 Arthas 的异步后台任务将结果存日志文件

    参考:async

    + + + diff --git a/3.x/doc/sc.html b/3.x/doc/sc.html new file mode 100644 index 00000000000..cfe2c606e1d --- /dev/null +++ b/3.x/doc/sc.html @@ -0,0 +1,105 @@ + + + + + + + + + sc | arthas + + + + +
    目录

    sc

    sc在线教程在新窗口打开

    提示

    查看 JVM 已加载的类信息

    “Search-Class” 的简写,这个命令能搜索出所有已经加载到 JVM 中的 Class 信息,这个命令支持的参数有 [d][E][f][x:]

    参数说明

    参数名称参数说明
    class-pattern类名表达式匹配
    method-pattern方法名表达式匹配
    [d]输出当前类的详细信息,包括这个类所加载的原始文件来源、类的声明、加载的 ClassLoader 等详细信息。
    如果一个类被多个 ClassLoader 所加载,则会出现多次
    [E]开启正则表达式匹配,默认为通配符匹配
    [f]输出当前类的成员变量信息(需要配合参数-d 一起使用)
    [x:]指定输出静态变量时属性的遍历深度,默认为 0,即直接使用 toString 输出
    [c:]指定 class 的 ClassLoader 的 hashcode
    [classLoaderClass:]指定执行表达式的 ClassLoader 的 class name
    [n:]具有详细信息的匹配类的最大数量(默认为 100)
    [cs <arg>]指定 class 的 ClassLoader#toString() 返回值。长格式[classLoaderStr <arg>]

    提示

    class-pattern 支持全限定名,如 com.taobao.test.AAA,也支持 com/taobao/test/AAA 这样的格式,这样,我们从异常堆栈里面把类名拷贝过来的时候,不需要在手动把/替换为.啦。

    提示

    sc 默认开启了子类匹配功能,也就是说所有当前类的子类也会被搜索出来,想要精确的匹配,请打开options disable-sub-class true开关

    使用参考

    • 模糊搜索

      $ sc demo.*
      +demo.MathGame
      +Affect(row-cnt:1) cost in 55 ms.
      +
    • 打印类的详细信息

      $ sc -d demo.MathGame
      +class-info        demo.MathGame
      +code-source       /private/tmp/math-game.jar
      +name              demo.MathGame
      +isInterface       false
      +isAnnotation      false
      +isEnum            false
      +isAnonymousClass  false
      +isArray           false
      +isLocalClass      false
      +isMemberClass     false
      +isPrimitive       false
      +isSynthetic       false
      +simple-name       MathGame
      +modifier          public
      +annotation
      +interfaces
      +super-class       +-java.lang.Object
      +class-loader      +-sun.misc.Launcher$AppClassLoader@3d4eac69
      +                    +-sun.misc.Launcher$ExtClassLoader@66350f69
      +classLoaderHash   3d4eac69
      +
      +Affect(row-cnt:1) cost in 875 ms.
      +
    • 打印出类的 Field 信息

      $ sc -d -f demo.MathGame
      +class-info        demo.MathGame
      +code-source       /private/tmp/math-game.jar
      +name              demo.MathGame
      +isInterface       false
      +isAnnotation      false
      +isEnum            false
      +isAnonymousClass  false
      +isArray           false
      +isLocalClass      false
      +isMemberClass     false
      +isPrimitive       false
      +isSynthetic       false
      +simple-name       MathGame
      +modifier          public
      +annotation
      +interfaces
      +super-class       +-java.lang.Object
      +class-loader      +-sun.misc.Launcher$AppClassLoader@3d4eac69
      +                    +-sun.misc.Launcher$ExtClassLoader@66350f69
      +classLoaderHash   3d4eac69
      +fields            modifierprivate,static
      +                  type    java.util.Random
      +                  name    random
      +                  value   java.util.Random@522b4
      +                          08a
      +
      +                  modifierprivate
      +                  type    int
      +                  name    illegalArgumentCount
      +
      +
      +Affect(row-cnt:1) cost in 19 ms.
      +
    • 通过 ClassLoader#toString 查找类(前提:有一个 toString()返回值是apo的类加载器,加载的类中包含demo.MathGame, demo.MyBar, demo.MyFoo3 个类)

      $ sc -cs apo *demo*
      +demo.MathGame
      +demo.MyBar
      +demo.MyFoo
      +Affect(row-cnt:3) cost in 56 ms.
      +
    + + + diff --git a/3.x/doc/session.html b/3.x/doc/session.html new file mode 100644 index 00000000000..ff5fc59bced --- /dev/null +++ b/3.x/doc/session.html @@ -0,0 +1,47 @@ + + + + + + + + + session | arthas + + + + +
    目录

    session

    查看当前会话的信息,显示当前绑定的 pid 以及会话 id。

    提示

    如果配置了 tunnel server,会追加打印 代理 id、tunnel 服务器的 url 以及连接状态。

    如果使用了 staturl 做统计,会追加显示 statUrl 地址。

    使用参考

    $ session
    +  Name        Value
    +--------------------------------------------------
    + JAVA_PID    14584
    + SESSION_ID  c2073d3b-443a-4a9b-9249-0c5d24a5756c
    +
    +
    + + + diff --git a/3.x/doc/sm.html b/3.x/doc/sm.html new file mode 100644 index 00000000000..7f1e7276a06 --- /dev/null +++ b/3.x/doc/sm.html @@ -0,0 +1,97 @@ + + + + + + + + + sm | arthas + + + + +
    目录

    sm

    sm在线教程在新窗口打开

    提示

    查看已加载类的方法信息

    “Search-Method” 的简写,这个命令能搜索出所有已经加载了 Class 信息的方法信息。

    sm 命令只能看到由当前类所声明 (declaring) 的方法,父类则无法看到。

    参数说明

    参数名称参数说明
    class-pattern类名表达式匹配
    method-pattern方法名表达式匹配
    [d]展示每个方法的详细信息
    [E]开启正则表达式匹配,默认为通配符匹配
    [c:]指定 class 的 ClassLoader 的 hashcode
    [classLoaderClass:]指定执行表达式的 ClassLoader 的 class name
    [n:]具有详细信息的匹配类的最大数量(默认为 100)

    使用参考

    $ sm java.lang.String
    +java.lang.String-><init>
    +java.lang.String->equals
    +java.lang.String->toString
    +java.lang.String->hashCode
    +java.lang.String->compareTo
    +java.lang.String->indexOf
    +java.lang.String->valueOf
    +java.lang.String->checkBounds
    +java.lang.String->length
    +java.lang.String->isEmpty
    +java.lang.String->charAt
    +java.lang.String->codePointAt
    +java.lang.String->codePointBefore
    +java.lang.String->codePointCount
    +java.lang.String->offsetByCodePoints
    +java.lang.String->getChars
    +java.lang.String->getBytes
    +java.lang.String->contentEquals
    +java.lang.String->nonSyncContentEquals
    +java.lang.String->equalsIgnoreCase
    +java.lang.String->compareToIgnoreCase
    +java.lang.String->regionMatches
    +java.lang.String->startsWith
    +java.lang.String->endsWith
    +java.lang.String->indexOfSupplementary
    +java.lang.String->lastIndexOf
    +java.lang.String->lastIndexOfSupplementary
    +java.lang.String->substring
    +java.lang.String->subSequence
    +java.lang.String->concat
    +java.lang.String->replace
    +java.lang.String->matches
    +java.lang.String->contains
    +java.lang.String->replaceFirst
    +java.lang.String->replaceAll
    +java.lang.String->split
    +java.lang.String->join
    +java.lang.String->toLowerCase
    +java.lang.String->toUpperCase
    +java.lang.String->trim
    +java.lang.String->toCharArray
    +java.lang.String->format
    +java.lang.String->copyValueOf
    +java.lang.String->intern
    +Affect(row-cnt:44) cost in 1342 ms.
    +
    $ sm -d java.lang.String toString
    + declaring-class  java.lang.String
    + method-name      toString
    + modifier         public
    + annotation
    + parameters
    + return           java.lang.String
    + exceptions
    +
    +Affect(row-cnt:1) cost in 3 ms.
    +
    + + + diff --git a/3.x/doc/spring-boot-starter.html b/3.x/doc/spring-boot-starter.html new file mode 100644 index 00000000000..e9e3903dc8e --- /dev/null +++ b/3.x/doc/spring-boot-starter.html @@ -0,0 +1,77 @@ + + + + + + + + + Arthas Spring Boot Starter | arthas + + + + +
    目录

    Arthas Spring Boot Starter

    提示

    只支持 spring boot 2

    最新版本:查看在新窗口打开

    配置 maven 依赖:

            <dependency>
    +            <groupId>com.taobao.arthas</groupId>
    +            <artifactId>arthas-spring-boot-starter</artifactId>
    +            <version>${arthas.version}</version>
    +        </dependency>
    +

    应用启动后,spring 会启动 arthas,并且 attach 自身进程。

    提示

    一键创建包含 Arthas Spring Boot Starter 的工程:点击

    配置属性

    比如,通过配置 tunnel server 实现远程管理:

    arthas.agent-id=hsehdfsfghhwertyfad
    +arthas.tunnel-server=ws://47.75.156.201:7777/ws
    +

    全部支持的配置项:参考在新窗口打开

    提示

    默认情况下,arthas-spring-boot-starter 会禁掉stop命令。

    参考:Arthas Properties

    查看 Endpoint 信息

    提示

    需要配置 spring boot 暴露 endpoint:参考在新窗口打开

    假定 endpoint 端口是 8080,则通过下面 url 可以查看:

    http://localhost:8080/actuator/arthas

    {
    +    "arthasConfigMap": {
    +        "agent-id": "hsehdfsfghhwertyfad",
    +        "tunnel-server": "ws://47.75.156.201:7777/ws",
    +    }
    +}
    +

    非 spring boot 应用使用方式

    非 Spring Boot 应用,可以通过下面的方式来使用:

            <dependency>
    +            <groupId>com.taobao.arthas</groupId>
    +            <artifactId>arthas-agent-attach</artifactId>
    +            <version>${arthas.version}</version>
    +        </dependency>
    +        <dependency>
    +            <groupId>com.taobao.arthas</groupId>
    +            <artifactId>arthas-packaging</artifactId>
    +            <version>${arthas.version}</version>
    +        </dependency>
    +
    import com.taobao.arthas.agent.attach.ArthasAgent;
    +
    +public class ArthasAttachExample {
    +
    +	public static void main(String[] args) {
    +		ArthasAgent.attach();
    +	}
    +
    +}
    +

    也可以配置属性:

            HashMap<String, String> configMap = new HashMap<String, String>();
    +        configMap.put("arthas.appName", "demo");
    +        configMap.put("arthas.tunnelServer", "ws://127.0.0.1:7777/ws");
    +        ArthasAgent.attach(configMap);
    +

    注意

    注意配置必须是驼峰的,和 spring boot 的-风格不一样。spring boot 应用才同时支持驼峰-风格的配置。

    + + + diff --git a/3.x/doc/stack.html b/3.x/doc/stack.html new file mode 100644 index 00000000000..aa2872f6825 --- /dev/null +++ b/3.x/doc/stack.html @@ -0,0 +1,72 @@ + + + + + + + + + stack | arthas + + + + +
    目录

    stack

    stack在线教程在新窗口打开

    提示

    输出当前方法被调用的调用路径

    很多时候我们都知道一个方法被执行,但这个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 stack 命令。

    参数说明

    参数名称参数说明
    class-pattern类名表达式匹配
    method-pattern方法名表达式匹配
    condition-express条件表达式
    [E]开启正则表达式匹配,默认为通配符匹配
    [n:]执行次数限制
    [m <arg>]指定 Class 最大匹配数量,默认值为 50。长格式为[maxMatch <arg>]

    这里重点要说明的是观察表达式,观察表达式的构成主要由 ognl 表达式组成,所以你可以这样写"{params,returnObj}",只要是一个合法的 ognl 表达式,都能被正常支持。

    观察的维度也比较多,主要体现在参数 advice 的数据结构上。Advice 参数最主要是封装了通知节点的所有信息。

    请参考表达式核心变量中关于该节点的描述。

    使用例子

    启动 Demo

    启动快速入门里的math-game

    stack

    $ stack demo.MathGame primeFactors
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 36 ms.
    +ts=2018-12-04 01:32:19;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +

    指定 Class 最大匹配数量

    $ stack demo.MathGame primeFactors -m 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count:1 , method count:1) cost in 561 ms, listenerId: 5.
    +ts=2022-12-25 21:07:07;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@b4aac2
    +    @demo.MathGame.primeFactors()
    +        at demo.MathGame.run(MathGame.java:46)
    +        at demo.MathGame.main(MathGame.java:38)
    +

    据条件表达式来过滤

    $ stack demo.MathGame primeFactors 'params[0]<0' -n 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 30 ms.
    +ts=2018-12-04 01:34:27;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +
    +ts=2018-12-04 01:34:30;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +
    +Command execution times exceed limit: 2, so command will exit. You can set it with -n option.
    +

    据执行时间来过滤

    $ stack demo.MathGame primeFactors '#cost>5'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 35 ms.
    +ts=2018-12-04 01:35:58;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +
    + + + diff --git a/3.x/doc/start-arthas.html b/3.x/doc/start-arthas.html new file mode 100644 index 00000000000..4c6a08f9ded --- /dev/null +++ b/3.x/doc/start-arthas.html @@ -0,0 +1,58 @@ + + + + + + + + + 启动 Arthas | arthas + + + + +
    目录

    启动 Arthas

    交互模式启动

    ./as3.sh
    +
    ➜  bin git:(develop) ✗ ./as3.sh
    +Found existing java process, please choose one and input the serial number of the process, eg: 1 . Then hit ENTER.
    +  [1]: 3088 org.jetbrains.idea.maven.server.RemoteMavenServer
    +* [2]: 12872 org.apache.catalina.startup.Bootstrap
    +  [3]: 2455
    +Attaching to 12872...
    +  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
    +|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
    +`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'
    +$
    +

    非交互模式启动

    启动脚本如下:

    ./as3.sh <PID>[@IP:PORT]
    +

    参数说明

    • PID:目标 Java 进程 ID(请确保执行当前执行命令的用户必须有足够的权限操作对应的 Java 进程)
    • IP:Arthas Server 侦听的地址,默认值是 127.00.1。Arthas 允许多个用户同时访问,并且各自的命令不会相互干扰执行
    • PORT:目标服务器 Arthas Server 的端口号,默认的端口号是 3658

    示例

    • 如果不指定 IP 和 PORT,默认是 127.0.0.1 和 3658

      ./as3.sh 12345

      上述命令等价于:

      ./as3.sh 12356@127.0.0.1:3658

    远程诊断

    服务器启动 Arthas Server 后,其他人可以使用 telnet 远程连接上去进程诊断,例如:

    telnet 192.168.1.119 3658
    +

    sudo 支持

    成熟的线上管理环境一般都不会直接开放 JVM 部署用户权限给你,而是通过 sudo-list 来控制和监控用户的越权操作。由于 as3.sh 脚本中会对当前用户的环境变量产生感知,所以需要加上 -H 参数

    sudo -u admin -H ./as3.sh 12345
    +

    Windows 环境支持

    目前as.bat脚本只支持一个参数:pid

    as.bat <pid>
    +
    + + + diff --git a/3.x/doc/stop.html b/3.x/doc/stop.html new file mode 100644 index 00000000000..752fea9e594 --- /dev/null +++ b/3.x/doc/stop.html @@ -0,0 +1,41 @@ + + + + + + + + + stop | arthas + + + + + + + + diff --git a/3.x/doc/sysenv.html b/3.x/doc/sysenv.html new file mode 100644 index 00000000000..ecd8719a684 --- /dev/null +++ b/3.x/doc/sysenv.html @@ -0,0 +1,92 @@ + + + + + + + + + sysenv | arthas + + + + +
    目录

    sysenv

    sysenv在线教程在新窗口打开

    提示

    查看当前 JVM 的环境属性(System Environment Variables)

    使用参考

     USAGE:
    +   sysenv [-h] [env-name]
    +
    + SUMMARY:
    +   Display the system env.
    +
    + EXAMPLES:
    +   sysenv
    +   sysenv USER
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/sysenv
    +
    + OPTIONS:
    + -h, --help                                                 this help
    + <env-name>                                                 env name
    +

    查看所有环境变量

    $ sysenv
    + KEY                      VALUE
    +----------------------------------------------------------------------------------------------------------------------------
    + PATH                     /Users/admin/.sdkman/candidates/visualvm/current/bin:/Users/admin/.sdkman/candidates/ja
    +                          va/current/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/
    +                          MacOS
    + SDKMAN_VERSION           5.7.3+337
    + JAVA_HOME                /Users/admin/.sdkman/candidates/java/current
    + JAVA_MAIN_CLASS_65244    demo.MathGame
    + TERM                     xterm-256color
    + LANG                     zh_CN.UTF-8
    + AUTOJUMP_SOURCED         1
    + COLORTERM                truecolor
    + LOGNAME                  admin
    + XPC_SERVICE_NAME         0
    + PWD                      /Users/admin/code/ali/arthas/demo
    + TERM_PROGRAM_VERSION     3.2.5
    + _                        /Users/admin/.sdkman/candidates/java/current/bin/java
    + SHELL                    /bin/bash
    + TERM_PROGRAM             iTerm.app
    + SDKMAN_PLATFORM          Darwin
    + USER                     admin
    + ITERM_PROFILE            Default
    + TMPDIR                   /var/folders/0r/k561bkk917gg972stqclbz9h0000gn/T/
    + XPC_FLAGS                0x0
    + TERM_SESSION_ID          w0t4p0:60BC264D-9649-42AC-A7E4-AF85B69F93F8
    + __CF_USER_TEXT_ENCODING  0x1F5:0x19:0x34
    + Apple_PubSub_Socket_Ren  /private/tmp/com.apple.launchd.DwmmjSQsll/Render
    + der
    + COLORFGBG                7;0
    + HOME                     /Users/admin
    + SHLVL                    1
    + AUTOJUMP_ERROR_PATH      /Users/admin/Library/autojump/errors.log
    +

    查看单个环境变量

    提示

    支持通过TAB键自动补全

    $ sysenv USER
    +USER=admin
    +
    + + + diff --git a/3.x/doc/sysprop.html b/3.x/doc/sysprop.html new file mode 100644 index 00000000000..ca13a95e421 --- /dev/null +++ b/3.x/doc/sysprop.html @@ -0,0 +1,136 @@ + + + + + + + + + sysprop | arthas + + + + +
    目录

    sysprop

    sysprop在线教程在新窗口打开

    提示

    查看当前 JVM 的系统属性(System Property)

    使用参考

     USAGE:
    +   sysprop [-h] [property-name] [property-value]
    +
    + SUMMARY:
    +   Display, and change all the system properties.
    +
    + EXAMPLES:
    + sysprop
    + sysprop file.encoding
    + sysprop production.mode true
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/sysprop
    +
    + OPTIONS:
    + -h, --help                                  this help
    + <property-name>                             property name
    + <property-value>                            property value
    +

    查看所有属性

    $ sysprop
    + KEY                                                  VALUE
    +-------------------------------------------------------------------------------------------------------------------------------------
    + java.runtime.name                                    Java(TM) SE Runtime Environment
    + sun.boot.library.path                                /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib
    + java.vm.version                                      25.51-b03
    + user.country.format                                  CN
    + gopherProxySet                                       false
    + java.vm.vendor                                       Oracle Corporation
    + java.vendor.url                                      http://java.oracle.com/
    + path.separator                                       :
    + java.vm.name                                         Java HotSpot(TM) 64-Bit Server VM
    + file.encoding.pkg                                    sun.io
    + user.country                                         US
    + sun.java.launcher                                    SUN_STANDARD
    + sun.os.patch.level                                   unknown
    + java.vm.specification.name                           Java Virtual Machine Specification
    + user.dir                                             /private/var/tmp
    + java.runtime.version                                 1.8.0_51-b16
    + java.awt.graphicsenv                                 sun.awt.CGraphicsEnvironment
    + java.endorsed.dirs                                   /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/endors
    +                                                      ed
    + os.arch                                              x86_64
    + java.io.tmpdir                                       /var/folders/2c/tbxwzs4s4sbcvh7frbcc7n000000gn/T/
    + line.separator
    +
    + java.vm.specification.vendor                         Oracle Corporation
    + os.name                                              Mac OS X
    + sun.jnu.encoding                                     UTF-8
    + java.library.path                                    /Users/wangtao/Library/Java/Extensions:/Library/Java/Extensions:/Network/Libra
    +                                                      ry/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
    + sun.nio.ch.bugLevel
    + java.specification.name                              Java Platform API Specification
    + java.class.version                                   52.0
    + sun.management.compiler                              HotSpot 64-Bit Tiered Compilers
    + os.version                                           10.12.6
    + user.home                                            /Users/wangtao
    + user.timezone                                        Asia/Shanghai
    + java.awt.printerjob                                  sun.lwawt.macosx.CPrinterJob
    + file.encoding                                        UTF-8
    + java.specification.version                           1.8
    + user.name                                            wangtao
    + java.class.path                                      .
    + java.vm.specification.version                        1.8
    + sun.arch.data.model                                  64
    + java.home                                            /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre
    + sun.java.command                                     Test
    + java.specification.vendor                            Oracle Corporation
    + user.language                                        en
    + awt.toolkit                                          sun.lwawt.macosx.LWCToolkit
    + java.vm.info                                         mixed mode
    + java.version                                         1.8.0_51
    + java.ext.dirs                                        /Users/wangtao/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.
    +                                                      8.0_51.jdk/Contents/Home/jre/lib/ext:/Library/Java/Extensions:/Network/Library
    +                                                      /Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
    + sun.boot.class.path                                  /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/resour
    +                                                      ces.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/li
    +                                                      b/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/l
    +                                                      ib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/H
    +                                                      ome/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Content
    +                                                      s/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Conte
    +                                                      nts/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jd
    +                                                      k/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.
    +                                                      jdk/Contents/Home/jre/classes
    + java.vendor                                          Oracle Corporation
    + file.separator                                       /
    + java.vendor.url.bug                                  http://bugreport.sun.com/bugreport/
    + sun.cpu.endian                                       little
    + sun.io.unicode.encoding                              UnicodeBig
    + sun.cpu.isalist
    +

    查看单个属性

    提示

    支持通过TAB键自动补全

    $ sysprop java.version
    +java.version=1.8.0_51
    +

    修改单个属性

    $ sysprop user.country
    +user.country=US
    +$ sysprop user.country CN
    +Successfully changed the system property.
    +user.country=CN
    +
    + + + diff --git a/3.x/doc/tee.html b/3.x/doc/tee.html new file mode 100644 index 00000000000..86b6aa6000b --- /dev/null +++ b/3.x/doc/tee.html @@ -0,0 +1,58 @@ + + + + + + + + + tee | arthas + + + + +
    目录

    tee

    tee在线教程在新窗口打开

    提示

    类似传统的tee命令, 用于读取标准输入的数据,并将其内容输出成文件。

    tee 指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

    使用参考

     USAGE:
    +   tee [-a] [-h] [file]
    +
    + SUMMARY:
    +   tee command for pipes.
    +
    + EXAMPLES:
    +  sysprop | tee /path/to/logfile | grep java
    +  sysprop | tee -a /path/to/logfile | grep java
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/tee
    +
    + OPTIONS:
    + -a, --append                              Append to file
    + -h, --help                                this help
    + <file>                                    File path
    +
    + + + diff --git a/3.x/doc/thread.html b/3.x/doc/thread.html new file mode 100644 index 00000000000..a1ff5c94e90 --- /dev/null +++ b/3.x/doc/thread.html @@ -0,0 +1,152 @@ + + + + + + + + + thread | arthas + + + + +
    目录

    thread

    thread在线教程在新窗口打开

    提示

    查看当前线程信息,查看线程的堆栈

    参数说明

    参数名称参数说明
    id线程 id
    [n:]指定最忙的前 N 个线程并打印堆栈
    [b]找出当前阻塞其他线程的线程
    [i <value>]指定 cpu 使用率统计的采样间隔,单位为毫秒,默认值为 200
    [--all]显示所有匹配的线程

    cpu 使用率是如何统计出来的?

    这里的 cpu 使用率与 linux 命令top -H -p <pid> 的线程%CPU类似,一段采样间隔时间内,当前 JVM 里各个线程的增量 cpu 时间与采样间隔时间的比例。

    工作原理说明:

    • 首先第一次采样,获取所有线程的 CPU 时间(调用的是java.lang.management.ThreadMXBean#getThreadCpuTime()sun.management.HotspotThreadMBean.getInternalThreadCpuTimes()接口)
    • 然后睡眠等待一个间隔时间(默认为 200ms,可以通过-i指定间隔时间)
    • 再次第二次采样,获取所有线程的 CPU 时间,对比两次采样数据,计算出每个线程的增量 CPU 时间
    • 线程 CPU 使用率 = 线程增量 CPU 时间 / 采样间隔时间 * 100%

    注意

    注意: 这个统计也会产生一定的开销(JDK 这个接口本身开销比较大),因此会看到 as 的线程占用一定的百分比,为了降低统计自身的开销带来的影响,可以把采样间隔拉长一些,比如 5000 毫秒。

    提示

    另外一种查看 Java 进程的线程 cpu 使用率方法:可以使用show-busy-java-threads在新窗口打开这个脚本。

    使用参考

    支持一键展示当前最忙的前 N 个线程并打印堆栈:

    $ thread -n 3
    +"C1 CompilerThread0" [Internal] cpuUsage=1.63% deltaTime=3ms time=1170ms
    +
    +
    +"arthas-command-execute" Id=23 cpuUsage=0.11% deltaTime=0ms time=401ms RUNNABLE
    +    at java.management@11.0.7/sun.management.ThreadImpl.dumpThreads0(Native Method)
    +    at java.management@11.0.7/sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:466)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.processTopBusyThreads(ThreadCommand.java:199)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.process(ThreadCommand.java:122)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process(AnnotatedCommandImpl.java:82)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access$100(AnnotatedCommandImpl.java:18)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:111)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:108)
    +    at com.taobao.arthas.core.shell.system.impl.ProcessImpl$CommandProcessTask.run(ProcessImpl.java:385)
    +    at java.base@11.0.7/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    +    at java.base@11.0.7/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    +    at java.base@11.0.7/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
    +    at java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    +    at java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    +    at java.base@11.0.7/java.lang.Thread.run(Thread.java:834)
    +
    +
    +"VM Periodic Task Thread" [Internal] cpuUsage=0.07% deltaTime=0ms time=584ms
    +
    • 没有线程 ID,包含[Internal]表示为 JVM 内部线程,参考dashboard命令的介绍。
    • cpuUsage为采样间隔时间内线程的 CPU 使用率,与dashboard命令的数据一致。
    • deltaTime为采样间隔时间内线程的增量 CPU 时间,小于 1ms 时被取整显示为 0ms。
    • time 线程运行总 CPU 时间。

    注意:线程栈为第二采样结束时获取,不能表明采样间隔时间内该线程都是在处理相同的任务。建议间隔时间不要太长,可能间隔时间越大越不准确。 可以根据具体情况尝试指定不同的间隔时间,观察输出结果。

    当没有参数时,显示第一页线程的信息

    默认按照 CPU 增量时间降序排列,只显示第一页数据。

    $ thread
    +Threads Total: 33, NEW: 0, RUNNABLE: 9, BLOCKED: 0, WAITING: 3, TIMED_WAITING: 4, TERMINATED: 0, Internal threads: 17
    +ID   NAME                           GROUP          PRIORITY  STATE     %CPU      DELTA_TIME TIME      INTERRUPT DAEMON
    +-1   C2 CompilerThread0             -              -1        -         5.06      0.010      0:0.973   false     true
    +-1   C1 CompilerThread0             -              -1        -         0.95      0.001      0:0.603   false     true
    +23   arthas-command-execute         system         5         RUNNABLE  0.17      0.000      0:0.226   false     true
    +-1   VM Periodic Task Thread        -              -1        -         0.05      0.000      0:0.094   false     true
    +-1   Sweeper thread                 -              -1        -         0.04      0.000      0:0.011   false     true
    +-1   G1 Young RemSet Sampling       -              -1        -         0.02      0.000      0:0.025   false     true
    +12   Attach Listener                system         9         RUNNABLE  0.0       0.000      0:0.022   false     true
    +11   Common-Cleaner                 InnocuousThrea 8         TIMED_WAI 0.0       0.000      0:0.000   false     true
    +3    Finalizer                      system         8         WAITING   0.0       0.000      0:0.000   false     true
    +2    Reference Handler              system         10        RUNNABLE  0.0       0.000      0:0.000   false     true
    +4    Signal Dispatcher              system         9         RUNNABLE  0.0       0.000      0:0.000   false     true
    +15   arthas-NettyHttpTelnetBootstra system         5         RUNNABLE  0.0       0.000      0:0.029   false     true
    +22   arthas-NettyHttpTelnetBootstra system         5         RUNNABLE  0.0       0.000      0:0.196   false     true
    +24   arthas-NettyHttpTelnetBootstra system         5         RUNNABLE  0.0       0.000      0:0.038   false     true
    +16   arthas-NettyWebsocketTtyBootst system         5         RUNNABLE  0.0       0.000      0:0.001   false     true
    +17   arthas-NettyWebsocketTtyBootst system         5         RUNNABLE  0.0       0.000      0:0.001   false     true
    +

    thread --all, 显示所有匹配的线程

    显示所有匹配线程信息,有时需要获取全部 JVM 的线程数据进行分析。

    thread id, 显示指定线程的运行堆栈

    $ thread 1
    +"main" Id=1 WAITING on java.util.concurrent.CountDownLatch$Sync@29fafb28
    +    at sun.misc.Unsafe.park(Native Method)
    +    -  waiting on java.util.concurrent.CountDownLatch$Sync@29fafb28
    +    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    +    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
    +    at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
    +    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
    +    at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
    +

    thread -b, 找出当前阻塞其他线程的线程

    有时候我们发现应用卡住了, 通常是由于某个线程拿住了某个锁, 并且其他线程都在等待这把锁造成的。 为了排查这类问题, arthas 提供了thread -b, 一键找出那个罪魁祸首。

    $ thread -b
    +"http-bio-8080-exec-4" Id=27 TIMED_WAITING
    +    at java.lang.Thread.sleep(Native Method)
    +    at test.arthas.TestThreadBlocking.doGet(TestThreadBlocking.java:22)
    +    -  locked java.lang.Object@725be470 <---- but blocks 4 other threads!
    +    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    +    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    +    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    +    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    +    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    +    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    +    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    +    at test.filter.TestDurexFilter.doFilter(TestDurexFilter.java:46)
    +    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    +    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    +    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    +    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    +    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    +    at com.taobao.tomcat.valves.ContextLoadFilterValve$FilterChainAdapter.doFilter(ContextLoadFilterValve.java:191)
    +    at com.taobao.eagleeye.EagleEyeFilter.doFilter(EagleEyeFilter.java:81)
    +    at com.taobao.tomcat.valves.ContextLoadFilterValve.invoke(ContextLoadFilterValve.java:150)
    +    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    +    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    +    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    +    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:429)
    +    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085)
    +    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    +    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    +    -  locked org.apache.tomcat.util.net.SocketWrapper@7127ee12
    +    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    +    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    +    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    +    at java.lang.Thread.run(Thread.java:745)
    +
    +    Number of locked synchronizers = 1
    +    - java.util.concurrent.ThreadPoolExecutor$Worker@31a6493e
    +

    注意

    注意, 目前只支持找出 synchronized 关键字阻塞住的线程, 如果是java.util.concurrent.Lock, 目前还不支持。

    thread -i, 指定采样时间间隔

    • thread -i 1000 : 统计最近 1000ms 内的线程 CPU 时间。

    • thread -n 3 -i 1000 : 列出 1000ms 内最忙的 3 个线程栈

    $ thread -n 3 -i 1000
    +"as-command-execute-daemon" Id=4759 cpuUsage=23% RUNNABLE
    +    at sun.management.ThreadImpl.dumpThreads0(Native Method)
    +    at sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:440)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.processTopBusyThreads(ThreadCommand.java:133)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.process(ThreadCommand.java:79)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process(AnnotatedCommandImpl.java:96)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access$100(AnnotatedCommandImpl.java:27)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:125)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:122)
    +    at com.taobao.arthas.core.shell.system.impl.ProcessImpl$CommandProcessTask.run(ProcessImpl.java:332)
    +    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    +    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    +    at java.lang.Thread.run(Thread.java:756)
    +
    +    Number of locked synchronizers = 1
    +    - java.util.concurrent.ThreadPoolExecutor$Worker@546aeec1
    +...
    +

    thread --state ,查看指定状态的线程

    [arthas@28114]$ thread --state WAITING
    +Threads Total: 16, NEW: 0, RUNNABLE: 9, BLOCKED: 0, WAITING: 3, TIMED_WAITING: 4, TERMINATED: 0
    +ID   NAME                           GROUP           PRIORITY   STATE     %CPU      DELTA_TIME TIME      INTERRUPTE DAEMON
    +3    Finalizer                      system          8          WAITING   0.0       0.000      0:0.000   false      true
    +20   arthas-UserStat                system          9          WAITING   0.0       0.000      0:0.001   false      true
    +14   arthas-timer                   system          9          WAITING   0.0       0.000      0:0.000   false      true
    +
    + + + diff --git a/3.x/doc/trace.html b/3.x/doc/trace.html new file mode 100644 index 00000000000..db833e781c0 --- /dev/null +++ b/3.x/doc/trace.html @@ -0,0 +1,151 @@ + + + + + + + + + trace | arthas + + + + +
    目录

    trace

    trace在线教程在新窗口打开

    提示

    方法内部调用路径,并输出方法路径上的每个节点上耗时

    trace 命令能主动搜索 class-patternmethod-pattern 对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。

    参数说明

    参数名称参数说明
    class-pattern类名表达式匹配
    method-pattern方法名表达式匹配
    condition-express条件表达式
    [E]开启正则表达式匹配,默认为通配符匹配
    [n:]命令执行次数
    #cost方法执行耗时
    [m <arg>]指定 Class 最大匹配数量,默认值为 50。长格式为[maxMatch <arg>]

    这里重点要说明的是条件表达式条件表达式的构成主要由 ognl 表达式组成,所以你可以这样写"params[0]<0",只要是一个合法的 ognl 表达式,都能被正常支持。

    请参考表达式核心变量中关于该节点的描述。

    很多时候我们只想看到某个方法的 rt 大于某个时间之后的 trace 结果,现在 Arthas 可以按照方法执行的耗时来进行过滤了,例如trace *StringUtils isBlank '#cost>100'表示当执行时间超过 100ms 的时候,才会输出 trace 的结果。

    提示

    watch/stack/trace 这个三个命令都支持#cost

    注意事项

    • trace 能方便的帮助你定位和发现因 RT 高而导致的性能问题缺陷,但其每次只能跟踪一级方法的调用链路。

      参考:Trace 命令的实现原理在新窗口打开

    • 3.3.0 版本后,可以使用动态 Trace 功能,不断增加新的匹配类,参考下面的示例。

    • 目前不支持 trace java.lang.Thread getName,参考 issue: #1610在新窗口打开 ,考虑到不是非常必要场景,且修复有一定难度,因此当前暂不修复

    使用参考

    启动 Demo

    启动快速入门里的math-game

    trace 函数

    $ trace demo.MathGame run
    +Press Q or Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 28 ms.
    +`---ts=2019-12-04 00:45:08;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[0.617465ms] demo.MathGame:run()
    +        `---[0.078946ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +
    +`---ts=2019-12-04 00:45:09;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[1.276874ms] demo.MathGame:run()
    +        `---[0.03752ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +

    提示

    结果里的 #24,表示在 run 函数里,在源文件的第24行调用了primeFactors()函数。

    指定 Class 匹配的最大数量

    $ trace demo.MathGame run -m 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 412 ms, listenerId: 4
    +`---ts=2022-12-25 21:00:00;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@b4aac2
    +    `---[0.762093ms] demo.MathGame:run()
    +        `---[30.21% 0.230241ms] demo.MathGame:primeFactors() #46 [throws Exception]
    +
    +`---ts=2022-12-25 21:00:10;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@b4aac2
    +    `---[0.315298ms] demo.MathGame:run()
    +        `---[13.95% 0.043995ms] demo.MathGame:primeFactors() #46 [throws Exception]
    +

    trace 次数限制

    如果方法调用的次数很多,那么可以用-n参数指定捕捉结果的次数。比如下面的例子里,捕捉到一次调用就退出命令。

    $ trace demo.MathGame run -n 1
    +Press Q or Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 20 ms.
    +`---ts=2019-12-04 00:45:53;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[0.549379ms] demo.MathGame:run()
    +        +---[0.059839ms] demo.MathGame:primeFactors() #24
    +        `---[0.232887ms] demo.MathGame:print() #25
    +
    +Command execution times exceed limit: 1, so command will exit. You can set it with -n option.
    +

    包含 jdk 的函数

    • --skipJDKMethod <value> skip jdk method trace, default value true.

    默认情况下,trace 不会包含 jdk 里的函数调用,如果希望 trace jdk 里的函数,需要显式设置--skipJDKMethod false

    $ trace --skipJDKMethod false demo.MathGame run
    +Press Q or Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 60 ms.
    +`---ts=2019-12-04 00:44:41;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[1.357742ms] demo.MathGame:run()
    +        +---[0.028624ms] java.util.Random:nextInt() #23
    +        +---[0.045534ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +        +---[0.005372ms] java.lang.StringBuilder:<init>() #28
    +        +---[0.012257ms] java.lang.Integer:valueOf() #28
    +        +---[0.234537ms] java.lang.String:format() #28
    +        +---[min=0.004539ms,max=0.005778ms,total=0.010317ms,count=2] java.lang.StringBuilder:append() #28
    +        +---[0.013777ms] java.lang.Exception:getMessage() #28
    +        +---[0.004935ms] java.lang.StringBuilder:toString() #28
    +        `---[0.06941ms] java.io.PrintStream:println() #28
    +
    +`---ts=2019-12-04 00:44:42;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[3.030432ms] demo.MathGame:run()
    +        +---[0.010473ms] java.util.Random:nextInt() #23
    +        +---[0.023715ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +        +---[0.005198ms] java.lang.StringBuilder:<init>() #28
    +        +---[0.006405ms] java.lang.Integer:valueOf() #28
    +        +---[0.178583ms] java.lang.String:format() #28
    +        +---[min=0.011636ms,max=0.838077ms,total=0.849713ms,count=2] java.lang.StringBuilder:append() #28
    +        +---[0.008747ms] java.lang.Exception:getMessage() #28
    +        +---[0.019768ms] java.lang.StringBuilder:toString() #28
    +        `---[0.076457ms] java.io.PrintStream:println() #28
    +

    根据调用耗时过滤

    $ trace demo.MathGame run '#cost > 10'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 41 ms.
    +`---ts=2018-12-04 01:12:02;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[12.033735ms] demo.MathGame:run()
    +        +---[0.006783ms] java.util.Random:nextInt()
    +        +---[11.852594ms] demo.MathGame:primeFactors()
    +        `---[0.05447ms] demo.MathGame:print()
    +

    提示

    只会展示耗时大于 10ms 的调用路径,有助于在排查问题的时候,只关注异常情况

    • 是不是很眼熟,没错,在 JProfiler 等收费软件中你曾经见识类似的功能,这里你将可以通过命令就能打印出指定调用路径。 友情提醒下,trace 在执行的过程中本身是会有一定的性能开销,在统计的报告中并未像 JProfiler 一样预先减去其自身的统计开销。所以这统计出来有些许的不准,渲染路径上调用的类、方法越多,性能偏差越大。但还是能让你看清一些事情的。
    • [12.033735ms] 的含义,12.033735 的含义是:当前节点在当前步骤的耗时,单位为毫秒
    • [0,0,0ms,11]xxx:yyy() [throws Exception],对该方法中相同的方法调用进行了合并,0,0,0ms,11 表示方法调用耗时,min,max,total,countthrows Exception 表明该方法调用中存在异常返回
    • 这里存在一个统计不准确的问题,就是所有方法耗时加起来可能会小于该监测方法的总耗时,这个是由于 Arthas 本身的逻辑会有一定的耗时

    trace 多个类或者多个函数

    trace 命令只会 trace 匹配到的函数里的子调用,并不会向下 trace 多层。因为 trace 是代价比较贵的,多层 trace 可能会导致最终要 trace 的类和函数非常多。

    可以用正则表匹配路径上的多个类和函数,一定程度上达到多层 trace 的效果。

    trace -E com.test.ClassA|org.test.ClassB method1|method2|method3
    +

    排除掉指定的类

    使用 --exclude-class-pattern 参数可以排除掉指定的类,比如:

    trace javax.servlet.Filter * --exclude-class-pattern com.demo.TestFilter
    +

    动态 trace

    提示

    3.3.0 版本后支持。

    打开终端 1,trace 上面 demo 里的run函数,可以看到打印出 listenerId: 1

    [arthas@59161]$ trace demo.MathGame run
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 112 ms, listenerId: 1
    +`---ts=2020-07-09 16:48:11;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[1.389634ms] demo.MathGame:run()
    +        `---[0.123934ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +
    +`---ts=2020-07-09 16:48:12;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[3.716391ms] demo.MathGame:run()
    +        +---[3.182813ms] demo.MathGame:primeFactors() #24
    +        `---[0.167786ms] demo.MathGame:print() #25
    +

    现在想要深入子函数primeFactors,可以打开一个新终端 2,使用telnet localhost 3658连接上 arthas,再 trace primeFactors时,指定listenerId

    [arthas@59161]$ trace demo.MathGame primeFactors --listenerId 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 34 ms, listenerId: 1
    +

    这时终端 2 打印的结果,说明已经增强了一个函数:Affect(class count: 1 , method count: 1),但不再打印更多的结果。

    再查看终端 1,可以发现 trace 的结果增加了一层,打印了primeFactors函数里的内容:

    `---ts=2020-07-09 16:49:29;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[0.492551ms] demo.MathGame:run()
    +        `---[0.113929ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +            `---[0.061462ms] demo.MathGame:primeFactors()
    +                `---[0.001018ms] throw:java.lang.IllegalArgumentException() #46
    +
    +`---ts=2020-07-09 16:49:30;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[0.409446ms] demo.MathGame:run()
    +        +---[0.232606ms] demo.MathGame:primeFactors() #24
    +        |   `---[0.1294ms] demo.MathGame:primeFactors()
    +        `---[0.084025ms] demo.MathGame:print() #25
    +

    通过指定listenerId的方式动态 trace,可以不断深入。另外 watch/tt/monitor等命令也支持类似的功能。

    trace 结果时间不准确问题

    比如下面的结果里:0.705196 > (0.152743 + 0.145825)

    $ trace demo.MathGame run -n 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 66 ms, listenerId: 1
    +`---ts=2021-02-08 11:27:36;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@232204a1
    +    `---[0.705196ms] demo.MathGame:run()
    +        +---[0.152743ms] demo.MathGame:primeFactors() #24
    +        `---[0.145825ms] demo.MathGame:print() #25
    +

    那么其它的时间消耗在哪些地方?

    1. 没有被 trace 到的函数。比如java.* 下的函数调用默认会忽略掉。通过增加--skipJDKMethod false参数可以打印出来。

      $ trace demo.MathGame run --skipJDKMethod false
      +Press Q or Ctrl+C to abort.
      +Affect(class count: 1 , method count: 1) cost in 35 ms, listenerId: 2
      +`---ts=2021-02-08 11:27:48;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@232204a1
      +    `---[0.810591ms] demo.MathGame:run()
      +        +---[0.034568ms] java.util.Random:nextInt() #23
      +        +---[0.119367ms] demo.MathGame:primeFactors() #24 [throws Exception]
      +        +---[0.017407ms] java.lang.StringBuilder:<init>() #28
      +        +---[0.127922ms] java.lang.String:format() #57
      +        +---[min=0.01419ms,max=0.020221ms,total=0.034411ms,count=2] java.lang.StringBuilder:append() #57
      +        +---[0.021911ms] java.lang.Exception:getMessage() #57
      +        +---[0.015643ms] java.lang.StringBuilder:toString() #57
      +        `---[0.086622ms] java.io.PrintStream:println() #57
      +
    2. 非函数调用的指令消耗。比如 i++, getfield等指令。

    3. 在代码执行过程中,JVM 可能出现停顿,比如 GC,进入同步块等。

    使用 -v 参数打印更多信息

    提示

    watch/trace/monitor/stack/tt 命令都支持 -v 参数

    当命令执行之后,没有输出结果。有两种可能:

    1. 匹配到的函数没有被执行
    2. 条件表达式结果是 false

    但用户区分不出是哪种情况。

    使用 -v选项,则会打印Condition express的具体值和执行结果,方便确认。

    + + + diff --git a/3.x/doc/tt.html b/3.x/doc/tt.html new file mode 100644 index 00000000000..df1d695e81a --- /dev/null +++ b/3.x/doc/tt.html @@ -0,0 +1,133 @@ + + + + + + + + + tt | arthas + + + + +
    目录

    tt

    tt在线教程在新窗口打开

    提示

    方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测

    watch 虽然很方便和灵活,但需要提前想清楚观察表达式的拼写,这对排查问题而言要求太高,因为很多时候我们并不清楚问题出自于何方,只能靠蛛丝马迹进行猜测。

    这个时候如果能记录下当时方法调用的所有入参和返回值、抛出的异常会对整个问题的思考与判断非常有帮助。

    于是乎,TimeTunnel 命令就诞生了。

    注意事项

    • tt 命令的实现是:把函数的入参/返回值等,保存到一个Map<Integer, TimeFragment>里,默认的大小是 100。
    • tt 相关功能在使用完之后,需要手动释放内存,否则长时间可能导致OOM。退出 arthas 不会自动清除 tt 的缓存 map。

    使用参考

    启动 Demo

    启动快速入门里的math-game

    记录调用

    对于一个最基本的使用来说,就是记录下当前方法的每次调用环境现场。

    $ tt -t demo.MathGame primeFactors
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 66 ms.
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2018-12-04 11:15:38  1.096236  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1001    2018-12-04 11:15:39  0.191848  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1002    2018-12-04 11:15:40  0.069523  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1003    2018-12-04 11:15:41  0.186073  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1004    2018-12-04 11:15:42  17.76437  true    false    0x4b67cf4d     MathGame                       primeFactors
    +

    指定 Class 最大匹配数量

    $ tt -t -m 1 demo.MathGame primeFactors
    +Press Q or Ctrl+C to abort.
    +Affect(class count:1 , method count:1) cost in 130 ms, listenerId: 1.
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2022-12-25 19:41:45  2.629929  true    false    0x3bf400       MathGame                       primeFactors
    + 1001    2022-12-25 19:41:55  0.146161  false   true     0x3bf400       MathGame                       primeFactors
    +
    • 命令参数解析

      • -t

        tt 命令有很多个主参数,-t 就是其中之一。这个参数的表明希望记录下类 *Testprint 方法的每次执行情况。

      • -n 3

        当你执行一个调用量不高的方法时可能你还能有足够的时间用 CTRL+C 中断 tt 命令记录的过程,但如果遇到调用量非常大的方法,瞬间就能将你的 JVM 内存撑爆。

        此时你可以通过 -n 参数指定你需要记录的次数,当达到记录次数时 Arthas 会主动中断 tt 命令的记录过程,避免人工操作无法停止的情况。

      • -m 1

        通过 -m 参数指定 Class 匹配的最大数量,防止匹配到的 Class 数量太多导致 JVM 挂起,默认值是 50。

    • 表格字段说明

    表格字段字段解释
    INDEX时间片段记录编号,每一个编号代表着一次调用,后续 tt 还有很多命令都是基于此编号指定记录操作,非常重要。
    TIMESTAMP方法执行的本机时间,记录了这个时间片段所发生的本机时间
    COST(ms)方法执行的耗时
    IS-RET方法是否以正常返回的形式结束
    IS-EXP方法是否以抛异常的形式结束
    OBJECT执行对象的hashCode(),注意,曾经有人误认为是对象在 JVM 中的内存地址,但很遗憾他不是。但他能帮助你简单的标记当前执行方法的类实体
    CLASS执行的类名
    METHOD执行的方法名
    • 条件表达式

      不知道大家是否有在使用过程中遇到以下困惑

      • Arthas 似乎很难区分出重载的方法
      • 我只需要观察特定参数,但是 tt 却全部都给我记录了下来

      条件表达式也是用 OGNL 来编写,核心的判断对象依然是 Advice 对象。除了 tt 命令之外,watchtracestack 命令也都支持条件表达式。

    • 解决方法重载

      tt -t *Test print params.length==1

      通过制定参数个数的形式解决不同的方法签名,如果参数个数一样,你还可以这样写

      tt -t *Test print 'params[1] instanceof Integer'

    • 解决指定参数

      tt -t *Test print params[0].mobile=="13989838402"

    • 构成条件表达式的 Advice 对象

      前边看到了很多条件表达式中,都使用了 params[0],有关这个变量的介绍,请参考表达式核心变量

    检索调用记录

    当你用 tt 记录了一大片的时间片段之后,你希望能从中筛选出自己需要的时间片段,这个时候你就需要对现有记录进行检索。

    假设我们有这些记录

    $ tt -l
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2018-12-04 11:15:38  1.096236  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1001    2018-12-04 11:15:39  0.191848  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1002    2018-12-04 11:15:40  0.069523  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1003    2018-12-04 11:15:41  0.186073  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1004    2018-12-04 11:15:42  17.76437  true    false    0x4b67cf4d     MathGame                       primeFactors
    +                              9
    + 1005    2018-12-04 11:15:43  0.4776    false   true     0x4b67cf4d     MathGame                       primeFactors
    +Affect(row-cnt:6) cost in 4 ms.
    +

    我需要筛选出 primeFactors 方法的调用信息

    $ tt -s 'method.name=="primeFactors"'
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2018-12-04 11:15:38  1.096236  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1001    2018-12-04 11:15:39  0.191848  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1002    2018-12-04 11:15:40  0.069523  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1003    2018-12-04 11:15:41  0.186073  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1004    2018-12-04 11:15:42  17.76437  true    false    0x4b67cf4d     MathGame                       primeFactors
    +                              9
    + 1005    2018-12-04 11:15:43  0.4776    false   true     0x4b67cf4d     MathGame                       primeFactors
    +Affect(row-cnt:6) cost in 607 ms.
    +

    你需要一个 -s 参数。同样的,搜索表达式的核心对象依旧是 Advice 对象。

    查看调用信息

    对于具体一个时间片的信息而言,你可以通过 -i 参数后边跟着对应的 INDEX 编号查看到他的详细信息。

    $ tt -i 1003
    + INDEX            1003
    + GMT-CREATE       2018-12-04 11:15:41
    + COST(ms)         0.186073
    + OBJECT           0x4b67cf4d
    + CLASS            demo.MathGame
    + METHOD           primeFactors
    + IS-RETURN        false
    + IS-EXCEPTION     true
    + PARAMETERS[0]    @Integer[-564322413]
    + THROW-EXCEPTION  java.lang.IllegalArgumentException: number is: -564322413, need >= 2
    +                      at demo.MathGame.primeFactors(MathGame.java:46)
    +                      at demo.MathGame.run(MathGame.java:24)
    +                      at demo.MathGame.main(MathGame.java:16)
    +
    +Affect(row-cnt:1) cost in 11 ms.
    +

    重做一次调用

    当你稍稍做了一些调整之后,你可能需要前端系统重新触发一次你的调用,此时得求爷爷告奶奶的需要前端配合联调的同学再次发起一次调用。而有些场景下,这个调用不是这么好触发的。

    tt 命令由于保存了当时调用的所有现场信息,所以我们可以自己主动对一个 INDEX 编号的时间片自主发起一次调用,从而解放你的沟通成本。此时你需要 -p 参数。通过 --replay-times 指定 调用次数,通过 --replay-interval 指定多次调用间隔(单位 ms, 默认 1000ms)

    $ tt -i 1004 -p
    + RE-INDEX       1004
    + GMT-REPLAY     2018-12-04 11:26:00
    + OBJECT         0x4b67cf4d
    + CLASS          demo.MathGame
    + METHOD         primeFactors
    + PARAMETERS[0]  @Integer[946738738]
    + IS-RETURN      true
    + IS-EXCEPTION   false
    + COST(ms)         0.186073
    + RETURN-OBJ     @ArrayList[
    +                    @Integer[2],
    +                    @Integer[11],
    +                    @Integer[17],
    +                    @Integer[2531387],
    +                ]
    +Time fragment[1004] successfully replayed.
    +Affect(row-cnt:1) cost in 14 ms.
    +

    你会发现结果虽然一样,但调用的路径发生了变化,由原来的程序发起变成了 Arthas 自己的内部线程发起的调用了。

    观察表达式

    -w, --watch-express 观察时空隧道使用ognl 表达式

    [arthas@10718]$ tt -t demo.MathGame run -n 5
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 56 ms, listenerId: 1
    + INDEX      TIMESTAMP                   COST(ms)     IS-RET     IS-EXP      OBJECT              CLASS                                     METHOD
    +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    + 1000       2021-01-08 21:54:17         0.901091     true       false       0x7699a589          MathGame                                  run
    +[arthas@10718]$ tt -w 'target.illegalArgumentCount'  -x 1 -i 1000
    +@Integer[60]
    +Affect(row-cnt:1) cost in 7 ms.
    +
    • 获取类的静态字段、调用类的静态方法
    [arthas@10718]$ tt -t demo.MathGame run -n 5
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 56 ms, listenerId: 1
    + INDEX      TIMESTAMP                   COST(ms)     IS-RET     IS-EXP      OBJECT              CLASS                                     METHOD
    +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    + 1000       2021-01-08 21:54:17         0.901091     true       false       0x7699a589          MathGame                                  run
    +[arthas@10718]$ tt -w '@demo.MathGame@random.nextInt(100)'  -x 1 -i 1000
    +@Integer[46]
    +

    注意这里使用 com.taobao.arthas.core.advisor.Advice#getLoader加载,使用精确classloader ognl更好。

    高级用法 获取 spring context 调用 bean 方法在新窗口打开

    • 需要强调的点

      1. ThreadLocal 信息丢失

        很多框架偷偷的将一些环境变量信息塞到了发起调用线程的 ThreadLocal 中,由于调用线程发生了变化,这些 ThreadLocal 线程信息无法通过 Arthas 保存,所以这些信息将会丢失。

        一些常见的 CASE 比如:鹰眼的 TraceId 等。

      2. 引用的对象

        需要强调的是,tt 命令是将当前环境的对象引用保存起来,但仅仅也只能保存一个引用而已。如果方法内部对入参进行了变更,或者返回的对象经过了后续的处理,那么在 tt 查看的时候将无法看到当时最准确的值。这也是为什么 watch 命令存在的意义。

    通过索引删除指定的 tt 记录

    tt -d 1001
    +

    清除所有的 tt 记录

    tt --delete-all
    +
    + + + diff --git a/3.x/doc/tunnel.html b/3.x/doc/tunnel.html new file mode 100644 index 00000000000..9e4d6c9b2e6 --- /dev/null +++ b/3.x/doc/tunnel.html @@ -0,0 +1,87 @@ + + + + + + + + + Arthas Tunnel | arthas + + + + +
    目录

    Arthas Tunnel

    通过 Arthas Tunnel Server/Client 来远程管理/连接多个 Agent。

    比如,在流式计算里,Java 进程可以是在不同的机器启动的,想要使用 Arthas 去诊断会比较麻烦,因为用户通常没有机器的权限,即使登陆机器也分不清是哪个 Java 进程。

    在这种情况下,可以使用 Arthas Tunnel Server/Client。

    参考:

    下载部署 arthas tunnel server

    https://github.com/alibaba/arthas/releases在新窗口打开

    Arthas tunnel server 是一个 spring boot fat jar 应用,直接java -jar启动:

    java -jar  arthas-tunnel-server.jar
    +

    默认情况下,arthas tunnel server 的 web 端口是8080,arthas agent 连接的端口是7777

    启动之后,可以访问 http://127.0.0.1:8080/在新窗口打开 ,再通过agentId连接到已注册的 arthas agent 上。

    通过 Spring Boot 的 Endpoint,可以查看到具体的连接信息: http://127.0.0.1:8080/actuator/arthas在新窗口打开 ,登陆用户名是arthas,密码在 arthas tunnel server 的日志里可以找到,比如:

    32851 [main] INFO  o.s.b.a.s.s.UserDetailsServiceAutoConfiguration
    +
    +Using generated security password: f1dca050-3777-48f4-a577-6367e55a78a2
    +

    启动 arthas 时连接到 tunnel server

    在启动 arthas,可以传递--tunnel-server参数,比如:

    as3.sh --tunnel-server 'ws://127.0.0.1:7777/ws'
    +

    也可以使用下面的测试地址(不保证一直可用):

    as3.sh --tunnel-server 'ws://47.75.156.201:80/ws'
    +
    • 如果有特殊需求,可以通过--agent-id参数里指定 agentId。默认情况下,会生成随机 ID。

    attach 成功之后,会打印出 agentId,比如:

      ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
    +|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
    +`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'
    +
    +
    +wiki      https://arthas.aliyun.com/3.x/doc
    +tutorials https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html
    +version   3.1.2
    +pid       86183
    +time      2019-08-30 15:40:53
    +id        URJZ5L48RPBR2ALI5K4V
    +

    如果是启动时没有连接到 tunnel server,也可以在后续自动重连成功之后,通过 session 命令来获取 agentId:

    [arthas@86183]$ session
    + Name           Value
    +-----------------------------------------------------
    + JAVA_PID       86183
    + SESSION_ID     f7273eb5-e7b0-4a00-bc5b-3fe55d741882
    + AGENT_ID       URJZ5L48RPBR2ALI5K4V
    + TUNNEL_SERVER  ws://47.75.156.201:80/ws
    +

    以上面的为例,在浏览器里访问 http://47.75.156.201/arthas/?port=80在新窗口打开 ,输入 agentId,就可以连接到本机上的 arthas 了。

    最佳实践

    提示

    注意,agentId 要保持唯一,否则会在 tunnel server 上冲突,不能正常工作。

    如果 arthas agent 配置了 appName,则生成的 agentId 会带上appName的前缀。

    比如在加上启动参数:as3.sh --tunnel-server 'ws://127.0.0.1:7777/ws' --app-name demoapp ,则生成的 agentId 可能是demoapp_URJZ5L48RPBR2ALI5K4V

    Tunnel server 会以_做分隔符,提取出appName,方便按应用进行管理。

    提示

    另外,也可以在解压的 arthas 目录下的 arthas.properties,或者在 spring boot 应用的application.properties里配置appName

    Tunnel Server 的管理页面

    提示

    需要在 spring boot 的application.properties里配置 arthas.enable-detail-pages=true

    注意,开放管理页面有风险!管理页面没有安全拦截功能,务必自行增加安全措施。

    在本地启动 tunnel-server,然后使用as3.sh attach,并且指定应用名--app-name test

    $ as3.sh --tunnel-server 'ws://127.0.0.1:7777/ws' --app-name test
    +telnet connecting to arthas server... current timestamp is 1627539688
    +Trying 127.0.0.1...
    +Connected to 127.0.0.1.
    +Escape character is '^]'.
    +  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
    +|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
    +`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'
    +
    +
    +wiki       https://arthas.aliyun.com/3.x/doc
    +tutorials  https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html
    +version    3.5.3
    +main_class demo.MathGame
    +pid        65825
    +time       2021-07-29 14:21:29
    +id         test_PE3LZO9NA9ENJYTPGL9L
    +

    然后访问 tunnel-server,可以看到所有连接的应用列表:

    http://localhost:8080/apps.html在新窗口打开

    再打开详情,则可以看到连接的所有 agent 列表:

    http://localhost:8080/agents.html?app=test在新窗口打开

    安全和权限管理

    提示

    强烈建议不要把 tunnel server 直接暴露到公网上。

    目前 tunnel server 没有专门的权限管理

    1. 用户需要自行开发,对 app name 鉴权。
    2. 如果开放管理页面,需要增加安全措施。

    集群方式管理

    如果希望部署多台 tunnel server,可以通过 nginx 做转发,redis 来保存 agent 信息。

    • nginx 需要配置 sticky session,保证用户 web socket 连接到同一个后端 tunnel server 上。简单的配置方式是用ip_hash

    Arthas tunnel server 的工作原理

    browser <-> arthas tunnel server <-> arthas tunnel client <-> arthas agent
    +

    tunnel-server/README.md在新窗口打开

    + + + diff --git a/3.x/doc/version.html b/3.x/doc/version.html new file mode 100644 index 00000000000..3c29a8dbd54 --- /dev/null +++ b/3.x/doc/version.html @@ -0,0 +1,43 @@ + + + + + + + + + version | arthas + + + + + + + + diff --git a/3.x/doc/vmoption.html b/3.x/doc/vmoption.html new file mode 100644 index 00000000000..481cab350d8 --- /dev/null +++ b/3.x/doc/vmoption.html @@ -0,0 +1,80 @@ + + + + + + + + + vmoption | arthas + + + + +
    目录

    vmoption

    vmoption在线教程在新窗口打开

    提示

    查看,更新 VM 诊断相关的参数

    使用参考

    查看所有的 option

    [arthas@56963]$ vmoption
    + KEY                    VALUE                   ORIGIN                 WRITEABLE
    +---------------------------------------------------------------------------------------------
    + HeapDumpBeforeFullGC   false                   DEFAULT                true
    + HeapDumpAfterFullGC    false                   DEFAULT                true
    + HeapDumpOnOutOfMemory  false                   DEFAULT                true
    + Error
    + HeapDumpPath                                   DEFAULT                true
    + CMSAbortablePrecleanW  100                     DEFAULT                true
    + aitMillis
    + CMSWaitDuration        2000                    DEFAULT                true
    + CMSTriggerInterval     -1                      DEFAULT                true
    + PrintGC                false                   DEFAULT                true
    + PrintGCDetails         true                    MANAGEMENT             true
    + PrintGCDateStamps      false                   DEFAULT                true
    + PrintGCTimeStamps      false                   DEFAULT                true
    + PrintGCID              false                   DEFAULT                true
    + PrintClassHistogramBe  false                   DEFAULT                true
    + foreFullGC
    + PrintClassHistogramAf  false                   DEFAULT                true
    + terFullGC
    + PrintClassHistogram    false                   DEFAULT                true
    + MinHeapFreeRatio       0                       DEFAULT                true
    + MaxHeapFreeRatio       100                     DEFAULT                true
    + PrintConcurrentLocks   false                   DEFAULT                true
    +

    查看指定的 option

    $ vmoption PrintGC
    + KEY                 VALUE                ORIGIN              WRITEABLE
    +---------------------------------------------------------------------------------
    + PrintGC             false                MANAGEMENT          true
    +

    更新指定的 option

    $ vmoption PrintGC true
    +Successfully updated the vm option.
    + NAME     BEFORE-VALUE  AFTER-VALUE
    +------------------------------------
    + PrintGC  false         true
    +
    $ vmoption PrintGCDetails true
    +Successfully updated the vm option.
    + NAME            BEFORE-VALUE  AFTER-VALUE
    +-------------------------------------------
    + PrintGCDetails  false         true
    +
    + + + diff --git a/3.x/doc/vmtool.html b/3.x/doc/vmtool.html new file mode 100644 index 00000000000..2a8986a4289 --- /dev/null +++ b/3.x/doc/vmtool.html @@ -0,0 +1,69 @@ + + + + + + + + + vmtool | arthas + + + + +
    目录

    vmtool

    提示

    @since 3.5.1

    vmtool在线教程在新窗口打开

    vmtool 利用JVMTI接口,实现查询内存对象,强制 GC 等功能。

    获取对象

    $ vmtool --action getInstances --className java.lang.String --limit 10
    +@String[][
    +    @String[com/taobao/arthas/core/shell/session/Session],
    +    @String[com.taobao.arthas.core.shell.session.Session],
    +    @String[com/taobao/arthas/core/shell/session/Session],
    +    @String[com/taobao/arthas/core/shell/session/Session],
    +    @String[com/taobao/arthas/core/shell/session/Session.class],
    +    @String[com/taobao/arthas/core/shell/session/Session.class],
    +    @String[com/taobao/arthas/core/shell/session/Session.class],
    +    @String[com/],
    +    @String[java/util/concurrent/ConcurrentHashMap$ValueIterator],
    +    @String[java/util/concurrent/locks/LockSupport],
    +]
    +

    提示

    通过 --limit参数,可以限制返回值数量,避免获取超大数据时对 JVM 造成压力。默认值是 10。

    指定 classloader name

    vmtool --action getInstances --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader --className org.springframework.context.ApplicationContext
    +

    指定 classloader hash

    可以通过sc命令查找到加载 class 的 classloader。

    $ sc -d org.springframework.context.ApplicationContext
    + class-info        org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext
    + code-source       file:/private/tmp/demo-arthas-spring-boot.jar!/BOOT-INF/lib/spring-boot-1.5.13.RELEASE.jar!/
    + name              org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext
    +...
    + class-loader      +-org.springframework.boot.loader.LaunchedURLClassLoader@19469ea2
    +                     +-sun.misc.Launcher$AppClassLoader@75b84c92
    +                       +-sun.misc.Launcher$ExtClassLoader@4f023edb
    + classLoaderHash   19469ea2
    +

    然后用-c/--classloader 参数指定:

    vmtool --action getInstances -c 19469ea2 --className org.springframework.context.ApplicationContext
    +

    指定返回结果展开层数

    提示

    getInstances action 返回结果绑定到instances变量上,它是数组。

    通过 -x/--expand 参数可以指定结果的展开层次,默认值是 1。

    vmtool --action getInstances -c 19469ea2 --className org.springframework.context.ApplicationContext -x 2
    +

    执行表达式

    提示

    getInstances action 返回结果绑定到instances变量上,它是数组。可以通过--express参数执行指定的表达式。

    vmtool --action getInstances --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader --className org.springframework.context.ApplicationContext --express 'instances[0].getBeanDefinitionNames()'
    +

    强制 GC

    vmtool --action forceGc
    +
    • 可以结合 vmoption 命令动态打开PrintGC开关。

    interrupt 指定线程

    thread id 通过-t参数指定,可以使用 thread命令获取。

    vmtool --action interruptThread -t 1
    +
    + + + diff --git a/3.x/doc/watch.html b/3.x/doc/watch.html new file mode 100644 index 00000000000..b60ef0d9a7e --- /dev/null +++ b/3.x/doc/watch.html @@ -0,0 +1,228 @@ + + + + + + + + + watch | arthas + + + + +
    目录

    watch

    watch在线教程在新窗口打开

    提示

    函数执行数据观测

    让你能方便的观察到指定函数的调用情况。能观察到的范围为:返回值抛出异常入参,通过编写 OGNL 表达式进行对应变量的查看。

    参数说明

    watch 的参数比较多,主要是因为它能在 4 个不同的场景观察对象

    参数名称参数说明
    class-pattern类名表达式匹配
    method-pattern函数名表达式匹配
    express观察表达式,默认值:{params, target, returnObj}
    condition-express条件表达式
    [b]函数调用之前观察
    [e]函数异常之后观察
    [s]函数返回之后观察
    [f]函数结束之后(正常返回和异常返回)观察
    [E]开启正则表达式匹配,默认为通配符匹配
    [x:]指定输出结果的属性遍历深度,默认为 1,最大值是 4
    [m <arg>]指定 Class 最大匹配数量,默认值为 50。长格式为[maxMatch <arg>]

    这里重点要说明的是观察表达式,观察表达式的构成主要由 ognl 表达式组成,所以你可以这样写"{params,returnObj}",只要是一个合法的 ognl 表达式,都能被正常支持。

    观察的维度也比较多,主要体现在参数 advice 的数据结构上。Advice 参数最主要是封装了通知节点的所有信息。请参考表达式核心变量中关于该节点的描述。

    特别说明

    • watch 命令定义了 4 个观察事件点,即 -b 函数调用前,-e 函数异常后,-s 函数返回后,-f 函数结束后
    • 4 个观察事件点 -b-e-s 默认关闭,-f 默认打开,当指定观察点被打开后,在相应事件点会对观察表达式进行求值并输出
    • 这里要注意函数入参函数出参的区别,有可能在中间被修改导致前后不一致,除了 -b 事件点 params 代表函数入参外,其余事件都代表函数出参
    • 当使用 -b 时,由于观察事件点是在函数调用前,此时返回值或异常均不存在
    • 在 watch 命令的结果里,会打印出location信息。location有三种可能值:AtEnterAtExitAtExceptionExit。对应函数入口,函数正常 return,函数抛出异常。

    使用参考

    启动 Demo

    启动快速入门里的math-game

    观察函数调用返回时的参数、this 对象和返回值

    提示

    观察表达式,默认值是{params, target, returnObj}

    $ watch demo.MathGame primeFactors -x 2
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 32 ms, listenerId: 5
    +method=demo.MathGame.primeFactors location=AtExceptionExit
    +ts=2021-08-31 15:22:57; [cost=0.220625ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[-179173],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@31cefde0],
    +        illegalArgumentCount=@Integer[44],
    +    ],
    +    null,
    +]
    +method=demo.MathGame.primeFactors location=AtExit
    +ts=2021-08-31 15:22:58; [cost=1.020982ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@31cefde0],
    +        illegalArgumentCount=@Integer[44],
    +    ],
    +    @ArrayList[
    +        @Integer[2],
    +        @Integer[2],
    +        @Integer[26947],
    +    ],
    +]
    +
    • 上面的结果里,说明函数被执行了两次,第一次结果是location=AtExceptionExit,说明函数抛出异常了,因此returnObj是 null
    • 在第二次结果里是location=AtExit,说明函数正常返回,因此可以看到returnObj结果是一个 ArrayList

    指定 Class 最大匹配数量

    $ watch demo.MathGame primeFactors -m 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 302 ms, listenerId: 3
    +method=demo.MathGame.primeFactors location=AtExceptionExit
    +ts=2022-12-25 19:58:41; [cost=0.222419ms] result=@ArrayList[
    +    @Object[][isEmpty=false;size=1],
    +    @MathGame[demo.MathGame@3bf400],
    +    null,
    +]
    +method=demo.MathGame.primeFactors location=AtExceptionExit
    +ts=2022-12-25 19:58:51; [cost=0.046928ms] result=@ArrayList[
    +    @Object[][isEmpty=false;size=1],
    +    @MathGame[demo.MathGame@3bf400],
    +    null,
    +]
    +

    观察函数调用入口的参数和返回值

    $ watch demo.MathGame primeFactors "{params,returnObj}" -x 2 -b
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 50 ms.
    +ts=2018-12-03 19:23:23; [cost=0.0353ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[-1077465243],
    +    ],
    +    null,
    +]
    +
    • 对比前一个例子,返回值为空(事件点为函数执行前,因此获取不到返回值)

    同时观察函数调用前和函数返回后

    $ watch demo.MathGame primeFactors "{params,target,returnObj}" -x 2 -b -s -n 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 46 ms.
    +ts=2018-12-03 19:29:54; [cost=0.01696ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@522b408a],
    +        illegalArgumentCount=@Integer[13038],
    +    ],
    +    null,
    +]
    +ts=2018-12-03 19:29:54; [cost=4.277392ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@522b408a],
    +        illegalArgumentCount=@Integer[13038],
    +    ],
    +    @ArrayList[
    +        @Integer[2],
    +        @Integer[2],
    +        @Integer[2],
    +        @Integer[5],
    +        @Integer[5],
    +        @Integer[73],
    +        @Integer[241],
    +        @Integer[439],
    +    ],
    +]
    +
    • 参数里-n 2,表示只执行两次

    • 这里输出结果中,第一次输出的是函数调用前的观察表达式的结果,第二次输出的是函数返回后的表达式的结果

    • 结果的输出顺序和事件发生的先后顺序一致,和命令中 -s -b 的顺序无关

    调整-x的值,观察具体的函数参数值

    $ watch demo.MathGame primeFactors "{params,target}" -x 3
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 58 ms.
    +ts=2018-12-03 19:34:19; [cost=0.587833ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[
    +            serialVersionUID=@Long[3905348978240129619],
    +            seed=@AtomicLong[3133719055989],
    +            multiplier=@Long[25214903917],
    +            addend=@Long[11],
    +            mask=@Long[281474976710655],
    +            DOUBLE_UNIT=@Double[1.1102230246251565E-16],
    +            BadBound=@String[bound must be positive],
    +            BadRange=@String[bound must be greater than origin],
    +            BadSize=@String[size must be non-negative],
    +            seedUniquifier=@AtomicLong[-3282039941672302964],
    +            nextNextGaussian=@Double[0.0],
    +            haveNextNextGaussian=@Boolean[false],
    +            serialPersistentFields=@ObjectStreamField[][isEmpty=false;size=3],
    +            unsafe=@Unsafe[sun.misc.Unsafe@2eaa1027],
    +            seedOffset=@Long[24],
    +        ],
    +        illegalArgumentCount=@Integer[13159],
    +    ],
    +]
    +
    • -x表示遍历深度,可以调整来打印具体的参数和结果内容,默认值是 1。
    • -x最大值是 4,防止展开结果占用太多内存。用户可以在ognl表达式里指定更具体的 field。

    条件表达式的例子

    $ watch demo.MathGame primeFactors "{params[0],target}" "params[0]<0"
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 68 ms.
    +ts=2018-12-03 19:36:04; [cost=0.530255ms] result=@ArrayList[
    +    @Integer[-18178089],
    +    @MathGame[demo.MathGame@41cf53f9],
    +]
    +
    • 只有满足条件的调用,才会有响应。

    观察异常信息的例子

    $ watch demo.MathGame primeFactors "{params[0],throwExp}" -e -x 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 62 ms.
    +ts=2018-12-03 19:38:00; [cost=1.414993ms] result=@ArrayList[
    +    @Integer[-1120397038],
    +    java.lang.IllegalArgumentException: number is: -1120397038, need >= 2
    +	at demo.MathGame.primeFactors(MathGame.java:46)
    +	at demo.MathGame.run(MathGame.java:24)
    +	at demo.MathGame.main(MathGame.java:16)
    +,
    +]
    +
    • -e表示抛出异常时才触发
    • express 中,表示异常信息的变量是throwExp

    按照耗时进行过滤

    $ watch demo.MathGame primeFactors '{params, returnObj}' '#cost>200' -x 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 66 ms.
    +ts=2018-12-03 19:40:28; [cost=2112.168897ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @ArrayList[
    +        @Integer[5],
    +        @Integer[428379493],
    +    ],
    +]
    +
    • #cost>200(单位是ms)表示只有当耗时大于 200ms 时才会输出,过滤掉执行时间小于 200ms 的调用

    观察当前对象中的属性

    如果想查看函数运行前后,当前对象中的属性,可以使用target关键字,代表当前对象

    $ watch demo.MathGame primeFactors 'target'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 52 ms.
    +ts=2018-12-03 19:41:52; [cost=0.477882ms] result=@MathGame[
    +    random=@Random[java.util.Random@522b408a],
    +    illegalArgumentCount=@Integer[13355],
    +]
    +

    然后使用target.field_name访问当前对象的某个属性

    $ watch demo.MathGame primeFactors 'target.illegalArgumentCount'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 67 ms.
    +ts=2018-12-03 20:04:34; [cost=131.303498ms] result=@Integer[8]
    +ts=2018-12-03 20:04:35; [cost=0.961441ms] result=@Integer[8]
    +

    获取类的静态字段、调用类的静态函数的例子

    watch demo.MathGame * '{params,@demo.MathGame@random.nextInt(100)}' -v -n 1 -x 2
    +[arthas@6527]$ watch demo.MathGame * '{params,@demo.MathGame@random.nextInt(100)}' -n 1 -x 2
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 5) cost in 34 ms, listenerId: 3
    +ts=2021-01-05 21:35:20; [cost=0.173966ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[-138282],
    +    ],
    +    @Integer[89],
    +]
    +
    • 注意这里使用 Thread.currentThread().getContextClassLoader() 加载,使用精确classloader ognl更好。

    排除掉指定的类

    提示

    watch/trace/monitor/stack/tt 命令都支持 --exclude-class-pattern 参数

    使用 --exclude-class-pattern 参数可以排除掉指定的类,比如:

    watch javax.servlet.Filter * --exclude-class-pattern com.demo.TestFilter
    +

    不匹配子类

    默认情况下 watch/trace/monitor/stack/tt 命令都会匹配子类。如果想不匹配,可以通过全局参数关掉。

    options disable-sub-class true
    +

    使用 -v 参数打印更多信息

    提示

    watch/trace/monitor/stack/tt 命令都支持 -v 参数

    当命令执行之后,没有输出结果。有两种可能:

    1. 匹配到的函数没有被执行
    2. 条件表达式结果是 false

    但用户区分不出是哪种情况。

    使用 -v选项,则会打印Condition express的具体值和执行结果,方便确认。

    比如:

    $ watch -v -x 2 demo.MathGame print 'params' 'params[0] > 100000'
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 29 ms, listenerId: 11
    +Condition express: params[0] > 100000 , result: false
    +Condition express: params[0] > 100000 , result: false
    +Condition express: params[0] > 100000 , result: true
    +ts=2020-12-02 22:38:56; [cost=0.060843ms] result=@Object[][
    +    @Integer[200033],
    +    @ArrayList[
    +        @Integer[200033],
    +    ],
    +]
    +Condition express: params[0] > 100000 , result: true
    +ts=2020-12-02 22:38:57; [cost=0.052877ms] result=@Object[][
    +    @Integer[123047],
    +    @ArrayList[
    +        @Integer[29],
    +        @Integer[4243],
    +    ],
    +]
    +
    + + + diff --git a/3.x/doc/web-console.html b/3.x/doc/web-console.html new file mode 100644 index 00000000000..9c5f44721ec --- /dev/null +++ b/3.x/doc/web-console.html @@ -0,0 +1,41 @@ + + + + + + + + + Web Console | arthas + + + + +
    目录

    Web Console

    Web Console在线教程在新窗口打开

    通过浏览器连接 arthas

    Arthas 目前支持 Web Console,用户在 attach 成功之后,可以直接访问:http://127.0.0.1:8563/在新窗口打开

    可以填入 IP,远程连接其它机器上的 arthas。

    注意

    默认情况下,arthas 只 listen 127.0.0.1,所以如果想从远程连接,则可以使用 --target-ip参数指定 listen 的 IP,更多参考-h的帮助说明。 注意会有安全风险,考虑下面的 tunnel server 的方案。

    提示

    3.5.4 版本后,在 Web Console 可以鼠标右键复制粘贴。

    scrollback URL 参数

    提示

    3.5.5 版本后支持

    默认 Web Console 支持向上回滚的行数是 1000。可以在 URL 里用scrollback指定。比如

    http://127.0.0.1:8563/?scrollback=3000在新窗口打开

    使用 arthas tunnel server 连接远程 arthas

    参考:Arthas Tunnel

    + + + diff --git a/3.x/en-us/index.html b/3.x/en-us/index.html new file mode 100644 index 00000000000..49b88d83535 --- /dev/null +++ b/3.x/en-us/index.html @@ -0,0 +1,17 @@ + + + + + + + + Redirecting... + + + +

    Redirecting...

    + + \ No newline at end of file diff --git a/3.x/en/doc/advanced-use.html b/3.x/en/doc/advanced-use.html new file mode 100644 index 00000000000..3b0e94dece0 --- /dev/null +++ b/3.x/en/doc/advanced-use.html @@ -0,0 +1,70 @@ + + + + + + + + + Other features | arthas + + + + +
    Table of Contents

    Other features

    Arthas Async Jobs

    If you need to investigate an issue, but you are unsure about the exact time it occurs, you can run the monitoring command in the background and save the output to a log file.

    Log the output

    All execution records are fully saved in the log file for subsequent analysis.

    Docker

    Arthas configuration reference for using in Docker containers.

    Web Console

    Arthas supports living inside a browser. The communication between arthas and browser is via websocket.

    Arthas Tunnel

    Arthas Tunnel Server/Client enables remote management/connection to Java services across multiple servers.

    How to use ognl

    IDEA Plugin

    Build arthas commands more efficiently in the IntelliJ IDEA compiler.

    Arthas Properties

    Arthas supports configuration options reference.

    Start as a Java Agent

    Arthas Spring Boot Starter

    Starting with the application.

    HTTP API

    The Http API provides structured data and supports more complex interactive functions, making it easier to integrate Arthas into custom interfaces.

    Batch Processing

    It is convenient for running multiple commands in bulk with custom scripts. It can be used in conjunction with the --select parameter to specify the process name.

    as3.sh and arthas-boot3 tips

    • Select the process to be attached via the select option.

    Normally, as3.sh/arthas-boot3.jar needs to a pid, bacause the pid will change.

    For example, with math-game.jar already started, use the jps command to see.

    $ jps
    +58883 math-game.jar
    +58884 Jps
    +

    The select option allows you to specify a process name, which is very convenient.

    $ ./as3.sh --select math-game
    +Arthas script version: 3.3.6
    +[INFO] JAVA_HOME: /tmp/java/8.0.222-zulu
    +Arthas home: /Users/admin/.arthas/lib/3.3.6/arthas
    +Calculating attach execution time...
    +Attaching to 59161 using version /Users/admin/.arthas/lib/3.3.6/arthas...
    +
    +real	0m0.572s
    +user	0m0.281s
    +sys	0m0.039s
    +Attach success.
    +telnet connecting to arthas server... current timestamp is 1594280799
    +Trying 127.0.0.1...
    +Connected to localhost.
    +Escape character is '^]'.
    +  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
    +|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
    +`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'
    +
    +
    +wiki      https://arthas.aliyun.com/3.x/doc
    +tutorials https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html
    +version   3.3.6
    +pid       58883
    +

    User data report

    After the 3.1.4 version, arthas support user data report.

    At startup, use the stat-url option, such as: ./as3.sh --stat-url 'http://192.168.10.11:8080/api/stat'

    There is a sample data report in the tunnel server that users can implement on their own.

    StatController.javaopen in new window

    + + + diff --git a/3.x/en/doc/advice-class.html b/3.x/en/doc/advice-class.html new file mode 100644 index 00000000000..e672e611c3c --- /dev/null +++ b/3.x/en/doc/advice-class.html @@ -0,0 +1,56 @@ + + + + + + + + + Fundamental Fields in Expressions | arthas + + + + +

    Fundamental Fields in Expressions

    There is a very fundamental class Advice for the expressions used in filtering, tracing or monitoring and other aspects in commands.

    public class Advice {
    +
    +    private final ClassLoader loader;
    +    private final Class<?> clazz;
    +    private final ArthasMethod method;
    +    private final Object target;
    +    private final Object[] params;
    +    private final Object returnObj;
    +    private final Throwable throwExp;
    +    private final boolean isBefore;
    +    private final boolean isThrow;
    +    private final boolean isReturn;
    +
    +    // getter/setter
    +}
    +

    Description for the variables in the class Advice:

    NameSpecification
    loaderthe class loader for the current called class
    clazzthe reference to the current called class
    methodthe reference to the current called method
    targetthe instance of the current called class
    paramsthe parameters for the current call, which is an array (when there's no parameter, it will be an empty array)
    returnObjthe return value from the current call - only available when the method call returns normally (isReturn==true), and null is for void return value
    throwExpthe exceptions thrown from the current call - only available when the method call throws exception (isThrow==true)
    isBeforeflag to indicate the method is about to execute. isBefore==true but isThrow==false and isReturn==false since it's no way to know how the method call will end
    isThrowflag to indicate the method call ends with exception thrown
    isReturnflag to indicate the method call ends normally without exception thrown

    All variables listed above can be used directly in the OGNL expressionopen in new window. The command will not execute and exit if there's illegal OGNL grammar or unexpected variable in the expression.

    + + + diff --git a/3.x/en/doc/agent.html b/3.x/en/doc/agent.html new file mode 100644 index 00000000000..ed14dbde7b6 --- /dev/null +++ b/3.x/en/doc/agent.html @@ -0,0 +1,42 @@ + + + + + + + + + Start as a Java Agent | arthas + + + + +

    Start as a Java Agent

    Usually Arthas dynamic attach the applications on the fly, but from version 3.2.0 onwards, Arthas supports starting directly as a java agent.

    For example, download the full arthas zip package, decompress it and start it by specifying arthas-agent.jar with the parameter -javaagent.

    java -javaagent:/tmp/test/arthas-agent.jar -jar math-game.jar
    +

    The default configuration is in the arthas.properties file in the decompression directory. Reference: Arthas Properties

    Reference: https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html

    + + + diff --git a/3.x/en/doc/arthas-properties.html b/3.x/en/doc/arthas-properties.html new file mode 100644 index 00000000000..0eea65c4f35 --- /dev/null +++ b/3.x/en/doc/arthas-properties.html @@ -0,0 +1,53 @@ + + + + + + + + + Arthas Properties | arthas + + + + +
    Table of Contents

    Arthas Properties

    The arthas.properties file is in the arthas directory.

    • If it is automatically downloaded arthas, the directory is under ~/.arthas/lib/3.x.x/arthas/
    • If it is a downloaded complete package, under the decompression directory of arthas

    Supported configuration items

    WARNING

    Note that the configuration must be camel case, which is different from the - style of spring boot. Only the spring boot application supports both camel case and - style configuration.

    #arthas.config.overrideAll=true
    +arthas.telnetPort=3658
    +arthas.httpPort=8563
    +arthas.ip=127.0.0.1
    +
    +# seconds
    +arthas.sessionTimeout=1800
    +
    +#arthas.appName=demoapp
    +#arthas.tunnelServer=ws://127.0.0.1:7777/ws
    +#arthas.agentId=mmmmmmyiddddd
    +
    • If the configuration of arthas.telnetPort is -1, the telnet port will not be listened. arthas.httpPort is similar.
    • If you configure arthas.telnetPort to 0, then random listen telnet port, you can find the random port log in ~/logs/arthas/arthas.log. arthas.httpPort is similar.

    TIP

    If you want to prevent multiple arthas port conflicts on a machine. It can be configured as a random port, or configured as -1, and use arthas through the tunnel server.

    disable specify commands

    TIP

    since 3.5.2

    Such as configuration:

    arthas.disabledCommands=stop,dump
    +

    It can also be configured on the command line: --disabled-commands stop,dump.

    TIP

    By default, arthas-spring-boot-starter will disable the stop command.

    Configured order

    The order of configuration is: command line parameters > System Env > System Properties > arthas.properties.

    such as:

    • ./as3.sh --telnet-port 9999 command line configuration will overwrite the default value arthas.telnetPort=3658 in arthas.properties.
    • If the application itself sets system properties arthas.telnetPort=8888, it will override the default value arthas.telnetPort=3658 in arthas.properties.

    If you want arthas.properties to have the highest order, you can configure arthas.config.overrideAll=true.

    + + + diff --git a/3.x/en/doc/async.html b/3.x/en/doc/async.html new file mode 100644 index 00000000000..151a95046d6 --- /dev/null +++ b/3.x/en/doc/async.html @@ -0,0 +1,54 @@ + + + + + + + + + Arthas Async Jobs | arthas + + + + +
    Table of Contents

    Arthas Async Jobs

    Async Jobs online tutorialopen in new window

    Asynchronous jobs in arthas. The idea is borrowed from linux jobsopen in new window.

    1. Use & to run the command in the background

    For example, execute the trace command in the background:

    trace Test t &
    +

    By doing this, the current command is put to the background to run, you can continue to execute other commands in the console.

    2. List background jobs

    If you want to list all background jobs, you can execute the jobs command and the results are as follows:

    $ jobs
    +[10]*
    +       Stopped           watch com.taobao.container.Test test "params[0].{? #this.name == null }" -x 2
    +       execution count : 19
    +       start time      : Fri Sep 22 09:59:55 CST 2017
    +       timeout date    : Sat Sep 23 09:59:55 CST 2017
    +       session         : 3648e874-5e69-473f-9eed-7f89660b079b (current)
    +

    You can see that there is currently a background job executing:

    • job id is 10, * indicates that this job is created by the current session.
    • status is Stopped
    • execution count is the number of executions, which have been executed 19 times since the start.
    • timeout date: timeout timestamp, when the time exceeds this timestamp, the job will be automatically timeout and exit.

    3. Suspend and cancel job

    When the job is executing in the foreground, for example, directly executing the command trace Test t, or executing the background job command trace Test t &, then putting the job back to the foreground via fg command, the console cannot continue to execute other command, but can receive and process the following keyboard events:

    • ‘ctrl + z’: Suspends the job, the job status will change to Stopped, and the job can be restarted by bg <job-id> or fg <job-id>
    • ‘ctrl + c’: Stops the job
    • ‘ctrl + d’: According to linux semantics this should lead to exit the terminal, right now Arthas has not implemented this yet, therefore simply ignore this keystroke.

    4. fg/bg, switch the job from the foreground to the background, and vise verse

    • When a job is executed in the background or in suspended status (use ctrl + z to suspend job), fg <job-id> can transfer the job to the foreground to continue to run.
    • When a job is in suspended status (use ctrl + z to suspend job), bg <job-id> can put the job to the background to continue to run.
    • A job created by other session can only be put to the foreground to run by using fg in the current session.

    5. Redirect the output

    The job output can be redirect to the specified file by > or >>, and can be used together with &. By doing this, you can achieve running commands asynchronously, for example:

    $ trace Test t >> test.out &
    +

    At this time, the trace command will be executed in the background, and the result will be output to the test.out file under the working directory of the application. You can continue to execute other commands. And you can view the command execution result in the file. You can execute the pwd command to view the working directory of the current application.

    $ cat test.out
    +

    If no redirect file is specified, the result will be output to the ~/logs/arthas-cache/ directory, for example:

    $ trace Test t >> &
    +job id : 2
    +cache location : /Users/admin/logs/arthas-cache/28198/2
    +

    At this time, the command will be executed asynchronously in the background, and the result will be asynchronously saved in the file (~/logs/arthas-cache/${PID}/${JobId});

    • At this time, the execution of the task is not affected by the session disconnection; the default timeout period of the task is 1 day, and the default timeout period can be modified through the global options command;
    • The result of this command will be output asynchronously to the file; at this time, regardless of whether save-result is true or not, the result will not be written asynchronously to ~/logs/arthas-cache/result.log.

    6. Stop job

    If you want to stop background job, just kill <job-id>.

    7. Others

    • Support up to 8 commands at the same time to redirect the output to the log files.
    • Do not open too many background jobs at the same time to avoid negative performance effect to the target JVM.
    • If you do not want to stop the Arthas service and continue to perform background tasks, you can exit the Arthas console by executing quit command (stop command will stop the Arthas service)
    + + + diff --git a/3.x/en/doc/auth.html b/3.x/en/doc/auth.html new file mode 100644 index 00000000000..34a02a57576 --- /dev/null +++ b/3.x/en/doc/auth.html @@ -0,0 +1,53 @@ + + + + + + + + + auth | arthas + + + + +
    Table of Contents

    auth

    TIP

    Authenticates the current session

    Configure username and password

    When attaching, you can specify a password on the command line. such as:

    java -jar arthas-boot3.jar --password ppp
    +
    • The user can be specified by the --username option, the default value is arthas.

    • You can also configure username/password in arthas.properties. The priority of the command line is higher than that of the configuration file.

    • If only username is configured and no password is configured, a random password will be generated and printed in ~/logs/arthas/arthas.log

      Using generated security password: 0vUBJpRIppkKuZ7dYzYqOKtranj4unGh
      +

    Local connection does not require authentication

    By default, there are configurations in the arthas.properties file:

    arthas.localConnectionNonAuth=true
    +

    When the password is configured, connect from localhost, the authentication is not required. The default configuration value is true, which is convenient for local connection. Authentication is only required when connecting remotely.

    Authenticate in the telnet console

    After connecting to arthas, directly executing the command will prompt for authentication:

    [arthas@37430]$ help
    +Error! command not permitted, try to use 'auth' command to authenticates.
    +

    Use the auth command to authenticate, and you can execute other commands after success.

    [arthas@37430]$ auth ppp
    +Authentication result: true
    +
    • The user can be specified by the --username option, the default value is arthas.

    Web console Authentication

    Open the browser, there will be a pop-up window prompting you to enter your username and password.

    After success, you can directly connect to the web console.

    HTTP API Authentication

    Arthas uses the HTTP standard Basic Authorization.

    For example, if the user name is: admin and the password is admin, the combination is a string: admin:admin, the base64 result is: YWRtaW46YWRtaW4=, then the HTTP request adds the Authorization header:

    curl 'http://localhost:8563/api' \
    +  -H 'Authorization: Basic YWRtaW46YWRtaW4=' \
    +  --data-raw '{"action":"exec","command":"version"}'
    +

    URL parameters

    It supports passing username and password in parameters. such as:

    curl 'http://localhost:8563/api?password=admin' \
    +  --data-raw '{"action":"exec","command":"version"}'
    +
    + + + diff --git a/3.x/en/doc/base64.html b/3.x/en/doc/base64.html new file mode 100644 index 00000000000..258de3dae3a --- /dev/null +++ b/3.x/en/doc/base64.html @@ -0,0 +1,51 @@ + + + + + + + + + base64 | arthas + + + + +
    Table of Contents

    base64

    TIP

    Encode and decode using Base64 representation.

    Encode to base64

    [arthas@70070]$ echo 'abc' > /tmp/test.txt
    +[arthas@70070]$ cat /tmp/test.txt
    +abc
    +
    +[arthas@70070]$ base64 /tmp/test.txt
    +YWJjCg==
    +

    Encode to base64 and save output to file

    $ base64 --input /tmp/test.txt --output /tmp/result.txt
    +

    Decode from base64

    $ base64 -d /tmp/result.txt
    +abc
    +

    Decode from base64 and save output to file

    $ base64 -d /tmp/result.txt --output /tmp/bbb.txt
    +
    + + + diff --git a/3.x/en/doc/batch-support.html b/3.x/en/doc/batch-support.html new file mode 100644 index 00000000000..43c463409a2 --- /dev/null +++ b/3.x/en/doc/batch-support.html @@ -0,0 +1,50 @@ + + + + + + + + + Batch Processing | arthas + + + + +
    Table of Contents

    Batch Processing

    With the help of Batch Processing, you can run multiple commands in batch and get the final result at the end. The process name can be specified using the “–select” parameter.

    Usage

    Step 1: Create the script

    Create a test.as script suffixed with as. Here as is suggested for the suffix of the filename, but in fact any suffix is acceptable.

    ➜  arthas git:(develop) cat /var/tmp/test.as
    +help
    +dashboard -n 1
    +session
    +thread
    +sc -d org.apache.commons.lang.StringUtils
    +

    Note:

    • Each command takes one line.
    • Batch mode execution times (via -n) must be explicitly specified for dashboard, otherwise batch script cannot terminate.
    • Commands such as watch/tt/trace/monitor/stack should include -n option to ensure the script can be able to quit.
    • Also consider to use async (for example: watch c.t.X test returnObj > &) to put commands run at background and get the output from the log file, see more from asynchronous job

    Step 2: Run the script

    Use -f to specify the script file. By default the result will be output to the standard output, but you can redirect the output to the file like this:

    ./as3.sh -f /var/tmp/test.as 56328 > test.out
    +

    Use -c also can specify the commands, like this:

    ./as3.sh -c 'sysprop; thread' 56328 > test.out
    +

    Step 3: Check the output

    cat test.out
    +
    + + + diff --git a/3.x/en/doc/cat.html b/3.x/en/doc/cat.html new file mode 100644 index 00000000000..d5753339484 --- /dev/null +++ b/3.x/en/doc/cat.html @@ -0,0 +1,42 @@ + + + + + + + + + cat | arthas + + + + + + + + diff --git a/3.x/en/doc/classloader.html b/3.x/en/doc/classloader.html new file mode 100644 index 00000000000..c5e2526aeee --- /dev/null +++ b/3.x/en/doc/classloader.html @@ -0,0 +1,127 @@ + + + + + + + + + classloader | arthas + + + + +
    Table of Contents

    classloader

    classloader online tutorialopen in new window

    TIP

    View hierarchy, urls and classes-loading info for the class-loaders.

    classloader can search and print out the URLs for a specified resource from one particular classloader. It is quite handy when analyzing ResourceNotFoundException.

    Options

    NameSpecification
    [l]list all classloader instances
    [t]print classloader's hierarchy
    [a]list all the classes loaded by all the classloaders (use it with great caution since the output can be huge)
    [c:]print classloader's hashcode
    [classLoaderClass:]The class name of the ClassLoader that executes the expression.
    [c: r:]using ClassLoader to search resource
    [c: load:]using ClassLoader to load class

    Usage

    View statistics categorized by class type

    $ classloader
    + name                                       numberOfInstances  loadedCountTotal
    + com.taobao.arthas.agent.ArthasClassloader  1                  2115
    + BootstrapClassLoader                       1                  1861
    + sun.reflect.DelegatingClassLoader          5                  5
    + sun.misc.Launcher$AppClassLoader           1                  4
    + sun.misc.Launcher$ExtClassLoader           1                  1
    +Affect(row-cnt:5) cost in 3 ms.
    +

    View statistics categorized by loaded classes number

    $ classloader -l
    + name                                                loadedCount  hash      parent
    + BootstrapClassLoader                                1861         null      null
    + com.taobao.arthas.agent.ArthasClassloader@68b31f0a  2115         68b31f0a  sun.misc.Launcher$ExtClassLoader@66350f69
    + sun.misc.Launcher$AppClassLoader@3d4eac69           4            3d4eac69  sun.misc.Launcher$ExtClassLoader@66350f69
    + sun.misc.Launcher$ExtClassLoader@66350f69           1            66350f69  null
    +Affect(row-cnt:4) cost in 2 ms.
    +

    View class-loaders hierarchy

    $ classloader -t
    ++-BootstrapClassLoader
    ++-sun.misc.Launcher$ExtClassLoader@66350f69
    +  +-com.taobao.arthas.agent.ArthasClassloader@68b31f0a
    +  +-sun.misc.Launcher$AppClassLoader@3d4eac69
    +Affect(row-cnt:4) cost in 3 ms.
    +

    Show the URLs of the URLClassLoader

    $ classloader -c 3d4eac69
    +file:/private/tmp/math-game.jar
    +file:/Users/hengyunabc/.arthas/lib/3.0.5/arthas/arthas-agent.jar
    +
    +Affect(row-cnt:9) cost in 3 ms.
    +

    Note that the hashcode changes, you need to check the current ClassLoader information first, and extract the hashcode corresponding to the ClassLoader.

    For ClassLoader with only unique instance, it can be specified by class name, which is more convenient to use:

    $ classloader --classLoaderClass sun.misc.Launcher$AppClassLoader
    +file:/private/tmp/math-game.jar
    +file:/Users/hengyunabc/.arthas/lib/3.0.5/arthas/arthas-agent.jar
    +
    +Affect(row-cnt:9) cost in 3 ms.
    +

    Use the classloader to load resource

    $ classloader -c 3d4eac69  -r META-INF/MANIFEST.MF
    + jar:file:/System/Library/Java/Extensions/MRJToolkit.jar!/META-INF/MANIFEST.MF
    + jar:file:/private/tmp/math-game.jar!/META-INF/MANIFEST.MF
    + jar:file:/Users/hengyunabc/.arthas/lib/3.0.5/arthas/arthas-agent.jar!/META-INF/MANIFEST.MF
    +

    Use the classloader to load .class resource

    $ classloader -c 1b6d3586 -r java/lang/String.class
    + jar:file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/rt.jar!/java/lang/String.class
    +

    Use the classloader to load class

    $ classloader -c 3d4eac69 --load demo.MathGame
    +load class success.
    + class-info        demo.MathGame
    + code-source       /private/tmp/math-game.jar
    + name              demo.MathGame
    + isInterface       false
    + isAnnotation      false
    + isEnum            false
    + isAnonymousClass  false
    + isArray           false
    + isLocalClass      false
    + isMemberClass     false
    + isPrimitive       false
    + isSynthetic       false
    + simple-name       MathGame
    + modifier          public
    + annotation
    + interfaces
    + super-class       +-java.lang.Object
    + class-loader      +-sun.misc.Launcher$AppClassLoader@3d4eac69
    +                     +-sun.misc.Launcher$ExtClassLoader@66350f69
    + classLoaderHash   3d4eac69
    +

    Statistics ClassLoader actually used URLs and unused URLs

    WARNING

    Note that statistics are based on all classes currently loaded by the JVM. Does not mean that Unused URLs can be removed from the application. Because it may be necessary to load classes from Unused URLs in the future, or to load resources.

    $ classloader --url-stat
    + com.taobao.arthas.agent.ArthasClassloader@3c41660, hash:3c41660
    + Used URLs:
    + file:/Users/admin/.arthas/lib/3.5.6/arthas/arthas-core.jar
    + Unused URLs:
    +
    + sun.misc.Launcher$AppClassLoader@75b84c92, hash:75b84c92
    + Used URLs:
    + file:/Users/admin/code/java/arthas/math-game/target/math-game.jar
    + file:/Users/admin/.arthas/lib/3.5.6/arthas/arthas-agent.jar
    + Unused URLs:
    +
    + sun.misc.Launcher$ExtClassLoader@7f31245a, hash:7f31245a
    + Used URLs:
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/sunec.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/sunjce_provider.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/localedata.jar
    + Unused URLs:
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/nashorn.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/cldrdata.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/legacy8ujsse.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/jfxrt.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/dnsns.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/openjsse.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/sunpkcs11.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/jaccess.jar
    + file:/tmp/jdk1.8/Contents/Home/jre/lib/ext/zipfs.jar
    +
    + + + diff --git a/3.x/en/doc/cls.html b/3.x/en/doc/cls.html new file mode 100644 index 00000000000..c14ac34007b --- /dev/null +++ b/3.x/en/doc/cls.html @@ -0,0 +1,41 @@ + + + + + + + + + cls | arthas + + + + + + + + diff --git a/3.x/en/doc/commands.html b/3.x/en/doc/commands.html new file mode 100644 index 00000000000..37d3d54a065 --- /dev/null +++ b/3.x/en/doc/commands.html @@ -0,0 +1,41 @@ + + + + + + + + + All Commands | arthas + + + + +
    Table of Contents

    All Commands

    • dashboard - dashboard for the system's real-time data
    • getstatic - examine class's static properties
    • heapdump - dump java heap in hprof binary format, like jmap
    • jvm - show JVM information
    • logger - print the logger information, update the logger level
    • mbean - show Mbean information
    • memory - show JVM memory information
    • ognl - execute ognl expression
    • perfcounter - show JVM Perf Counter information
    • sysenv — view system environment variables
    • sysprop - view/modify system properties
    • thread - show java thread information
    • vmoption - view/modify the vm diagnostic options.
    • vmtool - jvm tool, getInstances in jvm, forceGc
    • classloader - check the inheritance structure, urls, class loading info for the specified class; using classloader to get the url of the resource e.g. java/lang/String.class
    • dump - dump the loaded classes in byte code to the specified location
    • jad - decompile the specified loaded classes
    • mc - Memory compiler, compiles .java files into .class files in memory
    • redefine - load external *.class files and re-define it into JVM
    • retransform - load external *.class files and retransform it into JVM
    • sc - check the info for the classes loaded by JVM
    • sm - check methods info for the loaded classes

    WARNING

    Attention: commands here are taking advantage of byte-code-injection, which means we are injecting some aspectsopen in new window into the current classes for monitoring and statistics purpose. Therefore, when using it for online troubleshooting in your production environment, you'd better explicitly specify classes/methods/criteria, and remember to remove the injected code by stop or reset.

    • monitor - monitor method execution statistics
    • stack - display the stack trace for the specified class and method
    • trace - trace the execution time of specified method invocation
    • tt - time tunnel, record the arguments and returned value for the methods and replay
    • watch - display the input/output parameter, return object, and thrown exception of specified method invocation

    profiler/flame graph

    authentication

    • auth - authentication

    options

    • options - check/set Arthas global optionss

    pipe

    Arthas provides pipe to process the result returned from commands further, e.g. sm java.lang.String * | grep 'index'. Commands supported in pipe:

    • grep- filter the result with the given keyword
    • plaintext - remove the ANSI color
    • wc - count lines

    async jobs

    async can be handy when a problem is hardly to reproduce in the production environment, e.g. one watch condition may happen only once in one single day.

    • job control - use > to redirect result into the log file, use & to put the job to the background. Job keeps running even if the session is disconnected (the session lifecycle is 1 day by default)
    • jobs - list all jobs
    • kill - forcibly terminate the job
    • fg - bring the suspend job to the foreground
    • bg - put the job to run in the background

    Basic Arthas Commands

    • base64 - Encode and decode using Base64 representation.
    • cat - Concatenate and print files
    • cls - clear the screen
    • echo - write arguments to the standard output
    • grep - Pattern searcher
    • help - display Arthas help
    • history - view command history
    • keymap - keymap for Arthas keyboard shortcut
    • pwd - Return working directory name
    • quit/exit - exit the current Arthas session, without effecting other sessions
    • reset - reset all the enhanced classes. All enhanced classes will also be reset when Arthas server is closed by stop
    • session - display current session information
    • stop - terminate the Arthas server, all Arthas sessions will be destroyed
    • tee - Copies standard input to standard output, making a copy in zero or more files.
    • version - print the version for the Arthas attached to the current Java process
    + + + diff --git a/3.x/en/doc/contact-us.html b/3.x/en/doc/contact-us.html new file mode 100644 index 00000000000..2b30d497eae --- /dev/null +++ b/3.x/en/doc/contact-us.html @@ -0,0 +1,41 @@ + + + + + + + + + Contact Us | arthas + + + + +
    Table of Contents

    Contact Us

    Issues

    Questions about how to use Arthas and opinions can be directly raised in issues: https://github.com/alibaba/arthas/issuesopen in new window

    DingDing Group

    • Arthas open source discussion Group: 21965291 ,You can join by searching for group number。

    • Arthas open source discussion Group 2: 30707824 ,You can join by searching for group number。

    • Arthas open source discussion Group 3: 17605006847 , You can join by searching for group number。

    Instructions for Installing DingTalk

    DingTalk can be downloaded from: https://www.dingtalk.com/enopen in new window

    After installing you can search for group number and join it.

    QQ Group

    Arthas open source discussion QQ group:916328269

    Arthas open source discussion QQ group2:854625984

    Arthas open source discussion QQ group 3: 672077388

    + + + diff --git a/3.x/en/doc/dashboard.html b/3.x/en/doc/dashboard.html new file mode 100644 index 00000000000..550add24382 --- /dev/null +++ b/3.x/en/doc/dashboard.html @@ -0,0 +1,73 @@ + + + + + + + + + dashboard | arthas + + + + +
    Table of Contents

    dashboard

    dashboard online tutorialopen in new window

    TIP

    This is the real time statistics dashboard for the current system, press Ctrl+C to exit.

    When running in Apache Tomcat Alibaba edition, the dashboard will also present the real time statistics of the tomcat, including QPSopen in new window, RT, error counts, and thread pool, etc.

    Options

    NameSpecification
    [i:]The interval (in ms) between two executions, default is 5000 ms.
    [n:]The number of times this command will be executed.

    Usage

    $ dashboard
    +ID   NAME                           GROUP           PRIORITY   STATE     %CPU      DELTA_TIME TIME      INTERRUPTE DAEMON
    +-1   C2 CompilerThread0             -               -1         -         1.55      0.077      0:8.684   false      true
    +53   Timer-for-arthas-dashboard-07b system          5          RUNNABLE  0.08      0.004      0:0.004   false      true
    +22   scheduling-1                   main            5          TIMED_WAI 0.06      0.003      0:0.287   false      false
    +-1   C1 CompilerThread0             -               -1         -         0.06      0.003      0:2.171   false      true
    +-1   VM Periodic Task Thread        -               -1         -         0.03      0.001      0:0.092   false      true
    +49   arthas-NettyHttpTelnetBootstra system          5          RUNNABLE  0.02      0.001      0:0.156   false      true
    +16   Catalina-utility-1             main            1          TIMED_WAI 0.0       0.000      0:0.029   false      false
    +-1   G1 Young RemSet Sampling       -               -1         -         0.0       0.000      0:0.019   false      true
    +17   Catalina-utility-2             main            1          WAITING   0.0       0.000      0:0.025   false      false
    +34   http-nio-8080-ClientPoller     main            5          RUNNABLE  0.0       0.000      0:0.016   false      true
    +23   http-nio-8080-BlockPoller      main            5          RUNNABLE  0.0       0.000      0:0.011   false      true
    +-1   VM Thread                      -               -1         -         0.0       0.000      0:0.032   false      true
    +-1   Service Thread                 -               -1         -         0.0       0.000      0:0.006   false      true
    +-1   GC Thread#5                    -               -1         -         0.0       0.000      0:0.043   false      true
    +Memory                     used     total    max      usage    GC
    +heap                       36M      70M      4096M    0.90%    gc.g1_young_generation.count   12
    +g1_eden_space              6M       18M      -1       33.33%                                  86
    +g1_old_gen                 30M      50M      4096M    0.74%    gc.g1_old_generation.count     0
    +g1_survivor_space          491K     2048K    -1       24.01%   gc.g1_old_generation.time(ms)  0
    +nonheap                    66M      69M      -1       96.56%
    +codeheap_'non-nmethods'    1M       2M       5M       22.39%
    +metaspace                  46M      47M      -1       98.01%
    +Runtime
    +os.name                                                        Mac OS X
    +os.version                                                     10.15.4
    +java.version                                                   15
    +java.home                                                      /Library/Java/JavaVirtualMachines/jdk-15.jdk/Contents/Home
    +systemload.average                                             10.68
    +processors                                                     8
    +uptime                                                         272s
    +

    Notes on column headers

    • ID: JVM thread ID, pls. note this ID is different from the nativeID in jstack
    • NAME: thread name
    • GROUP: thread group name
    • PRIORITY: thread priority, ranged from 1 to 10. The greater number, the higher priority
    • STATE: thread state
    • CPU%: the ratio of CPU usage for the thread. For example, the sampling interval is 1000ms, and the incremental cpu time of a thread is 100ms, then the cpu usage rate=100/1000=10%
    • DELTA_TIME: incremental CPU time of thread running after the last sampling in second format
    • TIME: total CPU time of the thread in minute:second format
    • INTERRUPTED: the thread interruption state
    • DAEMON: daemon thread or not

    JVM internal threads

    After Java 8, it is supported to obtain the CPU time of JVM internal threads. These threads only have the name and CPU time, without ID and status information (display ID is -1).

    JVM activities can be observed through internal threads, such as GC, JIT compilation, etc., to perceive the overall status of JVM.

    • When the JVM heap/metaspace space is insufficient or OOM, it can be seen that the CPU usage of the GC threads is significantly higher than other threads.
    • After executing commands such as trace/watch/tt/redefine, you can see that JIT threads activities become more frequent. Because the JIT compilation data related to this class is cleared when the JVM hot update the class bytecode, it needs to be recompiled.

    JVM internal threads include the following:

    • JIT compilation thread: such as C1 CompilerThread0, C2 CompilerThread0
    • GC thread: such as GC Thread0, G1 Young RemSet Sampling
    • Other internal threads: such asVM Periodic Task Thread, VM Thread, Service Thread

    Screenshot

    + + + diff --git a/3.x/en/doc/docker.html b/3.x/en/doc/docker.html new file mode 100644 index 00000000000..ee99fed81ef --- /dev/null +++ b/3.x/en/doc/docker.html @@ -0,0 +1,90 @@ + + + + + + + + + Docker | arthas + + + + +
    Table of Contents

    Docker

    Use JDK in Docker

    Many times, the problem that arthas can't work with the application in docker is because the docker does not install JDK, but installs JRE. If only JRE is installed, many JAVA command line tools and class libraries will be missing, and Arthas will not work properly. Here are two common ways to use JDK in Docker.

    Use public JDK image

    • https://hub.docker.com/_/openjdk/

    such as:

    FROM openjdk:8-jdk
    +

    or:

    FROM openjdk:8-jdk-alpine
    +

    Install via package management software

    such as:

    # Install OpenJDK-8
    +RUN apt-get update && \
    +    apt-get install -y openjdk-8-jdk && \
    +    apt-get install -y ant && \
    +    apt-get clean;
    +
    +# Fix certificate issues
    +RUN apt-get update && \
    +    apt-get install ca-certificates-java && \
    +    apt-get clean && \
    +    update-ca-certificates -f;
    +
    +# Setup JAVA_HOME - useful for docker commandline
    +ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
    +RUN export JAVA_HOME
    +

    or:

    RUN yum install -y \
    +   java-1.8.0-openjdk \
    +   java-1.8.0-openjdk-devel
    +
    +ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/
    +RUN export JAVA_HOME
    +

    Quick start with Docker

    1. Delete the existing math-game docker container (not necessary)

      $ docker stop math-game || true && docker rm math-game || true
      +
    2. Start math-game

      $ docker run --name math-game -it hengyunabc/arthas:latest /bin/sh -c "java -jar /opt/arthas/math-game.jar"
      +
    3. Start arthas-boot3 for diagnosis

      $ docker exec -it math-game /bin/sh -c "java -jar /opt/arthas/arthas-boot3.jar"
      +* [1]: 9 jar
      +
      +[INFO] arthas home: /opt/arthas
      +[INFO] Try to attach process 9
      +[INFO] Attach process 9 success.
      +[INFO] arthas-client connect 127.0.0.1 3658
      +,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
      +/  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
      +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
      +|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
      +`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'
      +
      +
      +wiki: https://arthas.aliyun.com/3.x/doc
      +version: 3.0.5
      +pid: 9
      +time: 2018-12-18 11:30:36
      +

    Diagnose the Java process in Docker

    docker exec -it  ${containerId} /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot3.jar && java -jar arthas-boot3.jar"
    +

    Diagnose the Java process in the container in k8s

    kubectl exec -it ${pod} --container ${containerId} -- /bin/bash -c "wget https://arthas.aliyun.com/arthas-boot3.jar && java -jar arthas-boot3.jar"
    +

    Install Arthas into the base Docker image

    It's easy to install Arthas into your Docker image.

    FROM openjdk:8-jdk-alpine
    +
    +# copy arthas
    +COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
    +

    If you want to specify a version, you can view all the tags:

    https://hub.docker.com/r/hengyunabc/arthas/tagsopen in new window

    + + + diff --git a/3.x/en/doc/download.html b/3.x/en/doc/download.html new file mode 100644 index 00000000000..ea3258f33bd --- /dev/null +++ b/3.x/en/doc/download.html @@ -0,0 +1,45 @@ + + + + + + + + + Download | arthas + + + + +
    Table of Contents

    Download

    Download full package

    Download from Github Releases

    https://github.com/alibaba/arthas/releasesopen in new window

    Use as3.sh

    Download and unzip, find as3.sh in the directory. Start it in bash:

    ./as3.sh
    +

    Print usage:

    ./as3.sh -h
    +

    Use arthas-boot3.jar

    Download and unzip, find arthas-boot3.jar in the directory. Start with java command:

    java -jar arthas-boot3.jar
    +

    Print usage:

    java -jar arthas-boot3.jar -h
    +
    + + + diff --git a/3.x/en/doc/dump.html b/3.x/en/doc/dump.html new file mode 100644 index 00000000000..f51b6d8f994 --- /dev/null +++ b/3.x/en/doc/dump.html @@ -0,0 +1,60 @@ + + + + + + + + + dump | arthas + + + + +
    Table of Contents

    dump

    dump online tutorialopen in new window

    TIP

    Dump the bytecode for the particular classes to the specified directory.

    The dump command is used to dump the bytecode of classes actually running in the JVM to a specified directory. It is suitable for bulk downloading the bytecode of classes in a specific package directory. If you need to decompile a single class or view class information in real-time, you can refer to jad.

    Options

    NameSpecification
    class-patternclass name pattern
    [c:]hashcode of the class loader that loaded the target class
    [classLoaderClass:]The class name of the ClassLoader that executes the expression.
    [d:]set the destination directory for class files
    [E]turn on regex match, the default behavior is wild card match

    Usage

    $ dump java.lang.String
    + HASHCODE  CLASSLOADER  LOCATION
    + null                   /Users/admin/logs/arthas/classdump/java/lang/String.class
    +Affect(row-cnt:1) cost in 119 ms.
    +
    $ dump demo.*
    + HASHCODE  CLASSLOADER                                    LOCATION
    + 3d4eac69  +-sun.misc.Launcher$AppClassLoader@3d4eac69    /Users/admin/logs/arthas/classdump/sun.misc.Launcher$AppClassLoader-3d4eac69/demo/MathGame.class
    +             +-sun.misc.Launcher$ExtClassLoader@66350f69
    +Affect(row-cnt:1) cost in 39 ms.
    +
    $ dump -d /tmp/output java.lang.String
    + HASHCODE  CLASSLOADER  LOCATION
    + null                   /tmp/output/java/lang/String.class
    +Affect(row-cnt:1) cost in 138 ms.
    +
    • Specify classLoader

    Note that the hashcode changes, you need to check the current ClassLoader information first, and extract the hashcode corresponding to the ClassLoader.

    if you use-c, you have to manually type hashcode by -c <hashcode>.

    $ dump -c 3d4eac69 demo.*
    +

    For classloader with only one instance, it can be specified by --classLoaderClass using class name, which is more convenient to use.

    $ dump --classLoaderClass sun.misc.Launcher$AppClassLoader demo.*
    + HASHCODE  CLASSLOADER                                    LOCATION
    + 3d4eac69  +-sun.misc.Launcher$AppClassLoader@3d4eac69    /Users/admin/logs/arthas/classdump/sun.misc.Launcher$AppClassLoader-3d4eac69/demo/MathGame.class
    +             +-sun.misc.Launcher$ExtClassLoader@66350f69
    +Affect(row-cnt:1) cost in 39 ms.
    +
    • PS: Here the classLoaderClass in java 8 is sun.misc.Launcher$AppClassLoader, while in java 11 it's jdk.internal.loader.ClassLoaders$AppClassLoader. Currently killercoda using java 11.

    The value of --classloaderclass is the class name of classloader. It can only work when it matches a unique classloader instance. The purpose is to facilitate the input of general commands. However, -c <hashcode> is dynamic.

    + + + diff --git a/3.x/en/doc/echo.html b/3.x/en/doc/echo.html new file mode 100644 index 00000000000..30569cb541c --- /dev/null +++ b/3.x/en/doc/echo.html @@ -0,0 +1,42 @@ + + + + + + + + + echo | arthas + + + + + + + + diff --git a/3.x/en/doc/faq.html b/3.x/en/doc/faq.html new file mode 100644 index 00000000000..8b7634f3d90 --- /dev/null +++ b/3.x/en/doc/faq.html @@ -0,0 +1,47 @@ + + + + + + + + + FAQ | arthas + + + + +
    Table of Contents

    FAQ

    TIP

    For questions that are not in this list, please search in issues. https://github.com/alibaba/arthas/issuesopen in new window

    Where is the log file?

    Log file path: ~/logs/arthas/arthas.log

    How much impact does Arthas attach have on the performance of the original process?

    https://github.com/alibaba/arthas/issues/44open in new window

    target process not responding or HotSpot VM not loaded

    com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded

    1. Check whether the current user and the target java process are consistent. If they are inconsistent, switch to the same user. JVM can only attach java processes under the same user.
    2. Try to use jstack -l $pid. If the process does not respond, it means that the process may freeze and fail to respond to the JVM attach signal. So Arthas based on the attach mechanism cannot work. Try to use jmap heapdump to analyze.
    3. Try to attach math-game in quick-start.
    4. For more information: https://github.com/alibaba/arthas/issues/347open in new window

    Can commands such as trace/watch enhance the classes in jdk?

    By default, classes beginning with java. or the classes loaded by the Bootstrap ClassLoader are filtered out, but they can be turned on:

    options unsafe true
    +

    See more at options

    TIP

    To support the jars appended by java.lang.instrument.Instrumentation#appendToBootstrapClassLoaderSearch need to enable unsafe.

    How to view the result in json format

    options json-format true
    +

    See more at options

    Can arthas trace native methods

    No.

    Can arthas view the value of a variable in memory?

    1. You can use vmtool command.
    2. You can use some tricks to intercept the object with the tt command, or fetch it from a static method.

    How to filter method with the same name?

    You can used all variables in fundamental fields in expressions for the condition express to filter method with the same name, you can use the number of parameters params.length ==1,parameter type params[0] instanceof java.lang.Integer,return value type returnObj instanceof java.util.List and so on in one or more combinations as condition express.

    You can use -v to view the condition express result https://github.com/alibaba/arthas/issues/1348open in new window

    example math-game

    watch demo.MathGame primeFactors '{params,returnObj,throwExp}' 'params.length >0 && returnObj instanceof java.util.List' -v
    +

    How to watch or trace constructor?

    watch demo.MathGame <init> '{params,returnObj,throwExp}' -v
    +

    How to watch or trace inner classes?

    In the JVM specification the name of inner classes is OuterClass$InnerClass.

    watch OuterClass$InnerClass
    +

    Enter Unicode characters

    Convert Unicode characters to \u representation:

    ognl '@java.lang.System@out.println("Hello \u4e2d\u6587")'
    +

    java.lang.ClassFormatError: null, skywalking arthas compatible use

    When error log appear java.lang.ClassFormatError: null, it is usually modified by other bytecode tools that are not compatible with arthas modified bytecode.

    For example: use skywalking V8.1.0 below cannot trace, watch classes enhanced by skywalking agentopen in new window, V8.1.0 or above is compatible, refer to skywalking configuration for more details. skywalking compatible with other javaagent bytecode processingopen in new window.

    class redefinition failed: attempted to change the schema (add/remove fields)

    Reference: https://github.com/alibaba/arthas/issues/2165open in new window

    Can I use arthas offline?

    Yes. Just download the full size package and unzip it, refer to: Download.

    Attach the process with pid 1 in docker/k8s failed

    Reference: https://github.com/alibaba/arthas/issues/362#issuecomment-448185416open in new window

    Why is the new version of Arthas downloaded, but the old version is connected?

    For example, the started version of as3.sh/arthas-boot3.jar is 3.5., but after connecting, the printed arthas version is 3.4..

    It may be that the target process has been diagnosed with the old version of arthas before. You can execute stop to stop the old version of arthas, and then reuse the new version to attach.

    + + + diff --git a/3.x/en/doc/getstatic.html b/3.x/en/doc/getstatic.html new file mode 100644 index 00000000000..cd2f139c06a --- /dev/null +++ b/3.x/en/doc/getstatic.html @@ -0,0 +1,74 @@ + + + + + + + + + getstatic | arthas + + + + +
    Table of Contents

    getstatic

    getstatic online tutorialopen in new window

    Usage

    • It is recommended to use the [OGNL] (ognl.md) command, which will be more flexible.

    Check the static fields of classes conveniently, the usage is getstatic class_name field_name.

    $ getstatic demo.MathGame random
    +field: random
    +@Random[
    +    serialVersionUID=@Long[3905348978240129619],
    +    seed=@AtomicLong[120955813885284],
    +    multiplier=@Long[25214903917],
    +    addend=@Long[11],
    +    mask=@Long[281474976710655],
    +    DOUBLE_UNIT=@Double[1.1102230246251565E-16],
    +    BadBound=@String[bound must be positive],
    +    BadRange=@String[bound must be greater than origin],
    +    BadSize=@String[size must be non-negative],
    +    seedUniquifier=@AtomicLong[-3282039941672302964],
    +    nextNextGaussian=@Double[0.0],
    +    haveNextNextGaussian=@Boolean[false],
    +    serialPersistentFields=@ObjectStreamField[][isEmpty=false;size=3],
    +    unsafe=@Unsafe[sun.misc.Unsafe@2eaa1027],
    +    seedOffset=@Long[24],
    +]
    +
    • Specify classLoader

    Note that the hashcode changes, you need to check the current ClassLoader information first, and extract the hashcode corresponding to the ClassLoader using sc -d <ClassName>.

    if you use-c, you have to manually type hashcode by -c <hashcode>.

    $ getstatic -c 3d4eac69 demo.MathGame random
    +

    For classloader with only one instance, it can be specified by --classLoaderClass using class name, which is more convenient to use.

    getstatic --classLoaderClass demo.MathGame random

    • PS: Here the classLoaderClass in java 8 is sun.misc.Launcher$AppClassLoader, while in java 11 it's jdk.internal.loader.ClassLoaders$AppClassLoader. Currently killercoda using java 11.

    The value of --classloaderclass is the class name of classloader. It can only work when it matches a unique classloader instance. The purpose is to facilitate the input of general commands. However, -c <hashcode> is dynamic.

    Tip: if the static field is a complex class, you can even use OGNLopen in new window to traverse, filter and access the inner properties of this class.

    E.g. suppose n is a Map and its key is a Enum, then you can achieve this if you want to pick the key with a specific Enum value:

    $ getstatic com.alibaba.arthas.Test n 'entrySet().iterator.{? #this.key.name()=="STOP"}'
    +field: n
    +@ArrayList[
    +    @Node[STOP=bbb],
    +]
    +Affect(row-cnt:1) cost in 68 ms.
    +
    +
    +$ getstatic com.alibaba.arthas.Test m 'entrySet().iterator.{? #this.key=="a"}'
    +field: m
    +@ArrayList[
    +    @Node[a=aaa],
    +]
    +
    + + + diff --git a/3.x/en/doc/grep.html b/3.x/en/doc/grep.html new file mode 100644 index 00000000000..c11bffa65f8 --- /dev/null +++ b/3.x/en/doc/grep.html @@ -0,0 +1,70 @@ + + + + + + + + + grep | arthas + + + + +
    Table of Contents

    grep

    grep online tutorialopen in new window

    TIP

    Similar to the traditional grep command.

    Usage

     USAGE:
    +   grep [-A <value>] [-B <value>] [-C <value>] [-h] [-i] [-v] [-n] [-m <value>] [-e] [--trim-end] pattern
    +
    + SUMMARY:
    +   grep command for pipes.
    +
    + EXAMPLES:
    +  sysprop | grep java
    +  sysprop | grep java -n
    +  sysenv | grep -v JAVA
    +  sysenv | grep -e "(?i)(JAVA|sun)" -m 3  -C 2
    +  sysenv | grep JAVA -A2 -B3
    +  thread | grep -m 10 -e  "TIMED_WAITING|WAITING"
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/grep
    +
    + OPTIONS:
    + -A, --after-context <value>                                                    Print NUM lines of trailing context)
    + -B, --before-context <value>                                                   Print NUM lines of leading context)
    + -C, --context <value>                                                          Print NUM lines of output context)
    + -h, --help                                                                     this help
    + -i, --ignore-case                                                              Perform case insensitive matching.  By default, grep is case sensitive.
    + -v, --invert-match                                                             Select non-matching lines
    + -n, --line-number                                                              Print line number with output lines
    + -m, --max-count <value>                                                        stop after NUM selected lines)
    + -e, --regex                                                                    Enable regular expression to match
    +     --trim-end                                                                 Remove whitespaces at the end of the line
    + <pattern>                                                                      Pattern
    +
    + + + diff --git a/3.x/en/doc/groovy.html b/3.x/en/doc/groovy.html new file mode 100644 index 00000000000..d20c69dc67f --- /dev/null +++ b/3.x/en/doc/groovy.html @@ -0,0 +1,164 @@ + + + + + + + + + groovy | arthas + + + + +
    Table of Contents

    groovy

    TIP

    Arthas support groovy scripting to allow user to use script like BTrace. It is possible to use if/for/switch/while in groovy scripting, but has more limitations compared to BTrace.

    Limitations

    1. Prohibit from alternating the original logic. Like watch command, The major purpose of scripting is monitoring and observing.
    2. Only allow to monitor at the stages of before/success/exception/finish on one method.

    Parameters

    ParameterExplanation
    class-patternclass name pattern
    method-patternmethod name pattern
    script-filepaththe absolute path of the groovy script
    [S]match all sub classes
    [E]enable regex match, the default is wildcard match

    Note: the third parameter script-filepath must be the absolute path of the groovy script, for example /tmp/test.groovy. It is not recommended to use relative path, e.g. ./test.groovy.

    Explanation on the important callbacks

    /**
    + * Listeners for script to enhance the class
    + */
    +interface ScriptListener {
    +
    +    /**
    +     * When the script is created
    +     *
    +     * @param output Output
    +     */
    +    void create(Output output);
    +
    +    /**
    +     * When the script is destroyed
    +     *
    +     * @param output Output
    +     */
    +    void destroy(Output output);
    +
    +    /**
    +     * Before the method executes
    +     *
    +     * @param output Output
    +     * @param advice Advice
    +     */
    +    void before(Output output, Advice advice);
    +
    +    /**
    +     * After the method returns
    +     *
    +     * @param output Output
    +     * @param advice Advice
    +     */
    +    void afterReturning(Output output, Advice advice);
    +
    +    /**
    +     * After the method throws exceptions
    +     *
    +     * @param output Output
    +     * @param advice Advice
    +     */
    +    void afterThrowing(Output output, Advice advice);
    +
    +}
    +

    Advice parameter

    Advice contains all information necessary for notification. Refer to expression core parameters for more details.

    Output parameter

    There are three methods in Output, used for outputting the corresponding text.

    /**
    + * Output
    + */
    +interface Output {
    +
    +    /**
    +     * Output text without line break
    +     *
    +     * @param string Text to output
    +     * @return this
    +     */
    +    Output print(String string);
    +
    +    /**
    +     * Output text with line break
    +     *
    +     * @param string Text to output
    +     * @return this
    +     */
    +    Output println(String string);
    +
    +    /**
    +     * Finish outputting from the script
    +     *
    +     * @return this
    +     */
    +    Output finish();
    +
    +}
    +

    A groovy sample script to output logs

    import com.taobao.arthas.core.command.ScriptSupportCommand
    +import com.taobao.arthas.core.util.Advice
    +
    +import static java.lang.String.format
    +
    +/**
    + * Output method logs
    + */
    +public class Logger implements ScriptSupportCommand.ScriptListener {
    +
    +    @Override
    +    void create(ScriptSupportCommand.Output output) {
    +        output.println("script create.");
    +    }
    +
    +    @Override
    +    void destroy(ScriptSupportCommand.Output output) {
    +        output.println("script destroy.");
    +    }
    +
    +    @Override
    +    void before(ScriptSupportCommand.Output output, Advice advice) {
    +        output.println(format("before:class=%s;method=%s;paramslen=%d;%s;",
    +                advice.getClazz().getSimpleName(),
    +                advice.getMethod().getName(),
    +                advice.getParams().length, advice.getParams()))
    +    }
    +
    +    @Override
    +    void afterReturning(ScriptSupportCommand.Output output, Advice advice) {
    +        output.println(format("returning:class=%s;method=%s;",
    +                advice.getClazz().getSimpleName(),
    +                advice.getMethod().getName()))
    +    }
    +
    +    @Override
    +    void afterThrowing(ScriptSupportCommand.Output output, Advice advice) {
    +        output.println(format("throwing:class=%s;method=%s;",
    +                advice.getClazz().getSimpleName(),
    +                advice.getMethod().getName()))
    +    }
    +}
    +

    Run the script like this:

    $ groovy com.alibaba.sample.petstore.dal.dao.ProductDao getProductById /Users/zhuyong/middleware/arthas/scripts/Logger.groovy -S
    +script create.
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 102 ms.
    +before:class=IbatisProductDao;method=getProductById;paramslen=1;[Ljava.lang.Object;@45df64fc;
    +returning:class=IbatisProductDao;method=getProductById;
    +before:class=IbatisProductDao;method=getProductById;paramslen=1;[Ljava.lang.Object;@5b0e2d00;
    +returning:class=IbatisProductDao;method=getProductById;
    +
    + + + diff --git a/3.x/en/doc/heapdump.html b/3.x/en/doc/heapdump.html new file mode 100644 index 00000000000..74286400fb0 --- /dev/null +++ b/3.x/en/doc/heapdump.html @@ -0,0 +1,50 @@ + + + + + + + + + heapdump | arthas + + + + +
    Table of Contents

    heapdump

    heapdump online tutorialopen in new window

    TIP

    dump java heap in hprof binary format, like jmap.

    Usage

    Dump to file

    [arthas@58205]$ heapdump arthas-output/dump.hprof
    +Dumping heap to arthas-output/dump.hprof ...
    +Heap dump file created
    +

    TIP

    The generated file is located in the arthas-output directory and can be downloaded through the browser at http://localhost:8563/arthas-output/

    Dump only live objects

    [arthas@58205]$ heapdump --live /tmp/dump.hprof
    +Dumping heap to /tmp/dump.hprof ...
    +Heap dump file created
    +

    Dump to tmp file

    [arthas@58205]$ heapdump
    +Dumping heap to /var/folders/my/wy7c9w9j5732xbkcyt1mb4g40000gp/T/heapdump2019-09-03-16-385121018449645518991.hprof...
    +Heap dump file created
    +
    + + + diff --git a/3.x/en/doc/help.html b/3.x/en/doc/help.html new file mode 100644 index 00000000000..384fba1a70c --- /dev/null +++ b/3.x/en/doc/help.html @@ -0,0 +1,106 @@ + + + + + + + + + help | arthas + + + + +
    Table of Contents

    help

    show help message, the command can show all the commands that current Arthas server supports,or you can use the command to show the detail usage of another command.

    TIP

    [help command] equals [command -help],both is to show the detail usage of one command.

    Options

    NameSpecification
    show all the commands that current Arthas server supports
    [name:]show the detail usage of one command

    Usage

    $ help
    + NAME         DESCRIPTION
    + help         Display Arthas Help
    + auth         Authenticates the current session
    + keymap       Display all the available keymap for the specified connection.
    + sc           Search all the classes loaded by JVM
    + sm           Search the method of classes loaded by JVM
    + classloader  Show classloader info
    + jad          Decompile class
    + getstatic    Show the static field of a class
    + monitor      Monitor method execution statistics, e.g. total/success/failure count, average rt, fail rate, etc.
    + stack        Display the stack trace for the specified class and method
    + thread       Display thread info, thread stack
    + trace        Trace the execution time of specified method invocation.
    + watch        Display the input/output parameter, return object, and thrown exception of specified method invocation
    + tt           Time Tunnel
    + jvm          Display the target JVM information
    + perfcounter  Display the perf counter information.
    + ognl         Execute ognl expression.
    + mc           Memory compiler, compiles java files into bytecode and class files in memory.
    + redefine     Redefine classes. @see Instrumentation#redefineClasses(ClassDefinition...)
    + retransform  Retransform classes. @see Instrumentation#retransformClasses(Class...)
    + dashboard    Overview of target jvm's thread, memory, gc, vm, tomcat info.
    + dump         Dump class byte array from JVM
    + heapdump     Heap dump
    + options      View and change various Arthas options
    + cls          Clear the screen
    + reset        Reset all the enhanced classes
    + version      Display Arthas version
    + session      Display current session information
    + sysprop      Display, and change the system properties.
    + sysenv       Display the system env.
    + vmoption     Display, and update the vm diagnostic options.
    + logger       Print logger info, and update the logger level
    + history      Display command history
    + cat          Concatenate and print files
    + base64       Encode and decode using Base64 representation
    + echo         write arguments to the standard output
    + pwd          Return working directory name
    + mbean        Display the mbean information
    + grep         grep command for pipes.
    + tee          tee command for pipes.
    + profiler     Async Profiler. https://github.com/jvm-profiling-tools/async-profiler
    + stop         Stop/Shutdown Arthas server and exit the console.
    +
    +
    +
     $ help dashboard
    +  USAGE:
    +   dashboard [-h] [-i <value>] [-n <value>]
    +
    + SUMMARY:
    +   Overview of target jvm's thread, memory, gc, vm, tomcat info.
    +
    + EXAMPLES:
    +   dashboard
    +   dashboard -n 10
    +   dashboard -i 2000
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/dashboard
    +
    + OPTIONS:
    + -h, --help                              this help
    + -i, --interval <value>                  The interval (in ms) between two executions, default is 5000 ms.
    + -n, --number-of-execution <value>       The number of times this command will be executed.
    +
    + + + diff --git a/3.x/en/doc/history.html b/3.x/en/doc/history.html new file mode 100644 index 00000000000..d9c31e1e059 --- /dev/null +++ b/3.x/en/doc/history.html @@ -0,0 +1,50 @@ + + + + + + + + + history | arthas + + + + +
    Table of Contents

    history

    view command history.

    TIP

    history of commands will persisted in a file named history, so the history command can show all the history commands of current Arthas server ,but not only history in current session.

    Options

    NameSpecification
    [c:]clear all the history commands
    [n:]view the nearest 5 commands

    Usage

    #view the nearest 3 commands
    +$ history 3
    +  269  thread
    +  270  cls
    +  271  history 3
    +
     #clear all the history commands
    + $ history -c
    + $ history 3
    +  1  history 3
    +
    + + + diff --git a/3.x/en/doc/http-api.html b/3.x/en/doc/http-api.html new file mode 100644 index 00000000000..b37e8063cbf --- /dev/null +++ b/3.x/en/doc/http-api.html @@ -0,0 +1,384 @@ + + + + + + + + + Http API | arthas + + + + +
    Table of Contents

    Http API

    Http API online tutorialopen in new window

    Overview

    Http API provides a RESTful-like interactive interface, and both requests and responses data in JSON format. Compared with Telnet/WebConsole's output unstructured text data, Http API can provide structured data and support more complex interactive functions, such as a series of diagnostic operations in specific application scenarios.

    Access address

    The Http API address is: http://ip:port/api, the request parameters must be submitted using POST. Such as POST http://127.0.0.1:8563/api.

    Note: The telnet port 3658 has compatibility issues with the Chrome browser. It is recommended to use the http port 8563 to access the http api.

    Request data format

    {
    +  "action": "exec",
    +  "requestId": "req112",
    +  "sessionId": "94766d3c-8b39-42d3-8596-98aee3ccbefb",
    +  "consumerId": "955dbd1325334a84972b0f3ac19de4f7_2",
    +  "command": "version",
    +  "execTimeout": "10000"
    +}
    +

    Request data format description:

    • action : The requested action/behavior, please refer to "Request Actions" for optional values.
    • requestId : Optional request ID, generated by the client.
    • sessionId : Arthas session ID, one-time command does not need to set the session ID.
    • consumerId : Arthas consumer ID, used for multi-person sharing sessions.
    • command : Arthas command line
    • execTimeout : Timeout for executing commands (ms), default value is 30000.

    Note: Different actions use different parameters. Set the parameters according to the specific action.

    Request Actions

    Currently supported request actions are as follows:

    • exec : The command is executed synchronously, and the command results is returned after the command execution end or interrupted.
    • async_exec : The command is executed asynchronously, and the scheduling result of the command is returned immediately. The command execution result is obtained through pull_results action.
    • interrupt_job : To interrupt the foreground command of the session, similar to the function of Telnet Ctrl + c.
    • pull_results : Get the result of the command executed asynchronously, and execute it repeatedly in http long-polling mode.
    • init_session : Create new session.
    • join_session : Join the session, used to support multiple people sharing the same Arthas session.
    • close_session : Close the session.

    Response status

    The state attribute in the response indicates the request processing state, and its value is as follows:

    • SCHEDULED: When the command is executed asynchronously, it means that the job has been created, and may not be executed yet or is being executed;
    • SUCCEEDED: The request is processed successfully (completed status);
    • FAILED: Request processing failed (completed status), usually accompanied by a message explaining the reason;
    • REFUSED: The request is rejected (completed status), usually accompanied by a message explaining the reason;

    One-time command

    Similar to executing batch commands, the one-time commands are executed synchronously. No need to create a session, no need to set the sessionId option.

    {
    +  "action": "exec",
    +  "command": "<Arthas command line>"
    +}
    +

    For example, get the Arthas version number:

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"exec",
    +  "command":"version"
    +}
    +'
    +

    The response is as follows:

    {
    +  "state": "SUCCEEDED",
    +  "sessionId": "ee3bc004-4586-43de-bac0-b69d6db7a869",
    +  "body": {
    +    "results": [
    +      {
    +        "type": "version",
    +        "version": "3.3.7",
    +        "jobId": 5
    +      },
    +      {
    +        "jobId": 5,
    +        "statusCode": 0,
    +        "type": "status"
    +      }
    +    ],
    +    "timeExpired": false,
    +    "command": "version",
    +    "jobStatus": "TERMINATED",
    +    "jobId": 5
    +  }
    +}
    +

    Response data format description:

    • state: Request processing status, refer to the description of "Response Status".
    • sessionId : Arthas session ID, one-time command to automatically create and destroy temporary sessions.
    • body.jobId: The job ID of the command, all output results of the same job are the same jobId.
    • body.jobStatus: The job status of the command.
    • body.timeExpired: Whether the job execution timed out.
    • body/results: Command execution results.

    Command result format description

    [
    +  {
    +    "type": "version",
    +    "version": "3.3.7",
    +    "jobId": 5
    +  },
    +  {
    +    "jobId": 5,
    +    "statusCode": 0,
    +    "type": "status"
    +  }
    +]
    +
    • type : The command result type, except for the special ones such as status, the others remain the same as the Arthas command name. Please refer to the section "Special command results".
    • jobId : The job ID of the command.
    • Other fields are the data of each different command.

    Note: You can also use a one-time command to execute continuous output commands such as watch/trace, but you can't interrupt the command execution, and there may be hang up for a long time. Please refer to the example in the "Make watch command output a map object" section.

    Please try to deal with it in the following way:

    • Set a reasonable execTimeout to forcibly interrupt the command execution after the timeout period is reached to avoid a long hang.
    • Use the -n parameter to specify a smaller number of executions.
    • Ensure the methods of the command matched can be successfully hit and the condition-express is written correctly. If the watch/trace does not hit, even if -n 1 is specified, it will hang and wait until the execution timeout.

    Session interaction

    Users create and manage Arthas sessions, which are suitable for complex interactive processes. The access process is as follows:

    • Create a session
    • Join the session (optional)
    • Pull command results
    • Execute a series of commands
    • Interrupt command execution
    • Close the session

    Create session

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"init_session"
    +}
    +'
    +

    Response result:

    {
    +  "sessionId": "b09f1353-202c-407b-af24-701b744f971e",
    +  "consumerId": "5ae4e5fbab8b4e529ac404f260d4e2d1_1",
    +  "state": "SUCCEEDED"
    +}
    +

    The new session ID is: b09f1353-202c-407b-af24-701b744f971e, and consumer ID is: 5ae4e5fbab8b4e529ac404f260d4e2d1_1.

    Join session

    Specify the session ID to join, and the server will assign a new consumer ID. Multiple consumers can receive the same command results of target session. This interface is used to support multiple people sharing the same session or refreshing the page to retrieve the session history.

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"join_session",
    +  "sessionId" : "b09f1353-202c-407b-af24-701b744f971e"
    +}
    +'
    +

    Response result:

    {
    +  "consumerId": "8f7f6ad7bc2d4cb5aa57a530927a95cc_2",
    +  "sessionId": "b09f1353-202c-407b-af24-701b744f971e",
    +  "state": "SUCCEEDED"
    +}
    +

    The new consumer ID is 8f7f6ad7bc2d4cb5aa57a530927a95cc_2 .

    Pull command results

    The action of pulling the command result message is pull_results. Please use the Http long-polling method to periodically pull the result messages. The consumer's timeout period is 5 minutes. After the timeout, you need to call join_session to allocate a new consumer.

    Each consumer is allocated a cache queue separately, and the pull order does not affect the content received by the consumer.

    The request parameters require session ID and consumer ID:

    curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"pull_results",
    +  "sessionId" : "b09f1353-202c-407b-af24-701b744f971e",
    +  "consumerId" : "8f7f6ad7bc2d4cb5aa57a530927a95cc_2"
    +}
    +'
    +

    Use Bash scripts to regularly pull results messages:

    while true; do curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"pull_results",
    +  "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a",
    +  "consumerId" : "8ecb9cb7c7804d5d92e258b23d5245cc_1"
    +}
    +' | json_pp; sleep 2; done
    +

    Note: The json_pp tool formats the output content as pretty json.

    The response content is as follows:

    {
    +  "body": {
    +    "results": [
    +      {
    +        "inputStatus": "DISABLED",
    +        "jobId": 0,
    +        "type": "input_status"
    +      },
    +      {
    +        "type": "message",
    +        "jobId": 0,
    +        "message": "Welcome to arthas!"
    +      },
    +      {
    +        "tutorials": "https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html",
    +        "time": "2020-08-06 15:56:43",
    +        "type": "welcome",
    +        "jobId": 0,
    +        "pid": "7909",
    +        "wiki": "https://arthas.aliyun.com/3.x/doc",
    +        "version": "3.3.7"
    +      },
    +      {
    +        "inputStatus": "ALLOW_INPUT",
    +        "type": "input_status",
    +        "jobId": 0
    +      }
    +    ]
    +  },
    +  "sessionId": "b09f1353-202c-407b-af24-701b744f971e",
    +  "consumerId": "8f7f6ad7bc2d4cb5aa57a530927a95cc_2",
    +  "state": "SUCCEEDED"
    +}
    +

    Execute commands asynchronously

    curl -Ss -XPOST http://localhost:8563/api -d '''
    +{
    +  "action":"async_exec",
    +  "command":"watch demo.MathGame primeFactors \"{params, returnObj, throwExp}\" ",
    +  "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a"
    +}
    +'''
    +

    Response of async_exec:

    {
    +  "sessionId": "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a",
    +  "state": "SCHEDULED",
    +  "body": {
    +    "jobStatus": "READY",
    +    "jobId": 3,
    +    "command": "watch demo.MathGame primeFactors \"{params, returnObj, throwExp}\" "
    +  }
    +}
    +
    • state : The status of SCHEDULED means that the command has been parsed and generated the job, but the execution has not started.
    • body.jobId : The job id of command execution, filter the command results output in pull_results according to this job ID.
    • body.jobStatus : The job status READY means that execution has not started.

    The shell output of the script that continuously pulls the result message:

    {
    +   "body" : {
    +      "results" : [
    +         {
    +            "type" : "command",
    +            "jobId" : 3,
    +            "state" : "SCHEDULED",
    +            "command" : "watch demo.MathGame primeFactors \"{params, returnObj, throwExp}\" "
    +         },
    +         {
    +            "inputStatus" : "ALLOW_INTERRUPT",
    +            "jobId" : 0,
    +            "type" : "input_status"
    +         },
    +         {
    +            "success" : true,
    +            "jobId" : 3,
    +            "effect" : {
    +               "listenerId" : 3,
    +               "cost" : 24,
    +               "classCount" : 1,
    +               "methodCount" : 1
    +            },
    +            "type" : "enhancer"
    +         },
    +         {
    +            "sizeLimit" : 10485760,
    +            "expand" : 1,
    +            "jobId" : 3,
    +            "type" : "watch",
    +            "cost" : 0.071499,
    +            "ts" : 1596703453237,
    +            "value" : [
    +               [
    +                  -170365
    +               ],
    +               null,
    +               {
    +                  "stackTrace" : [
    +                     {
    +                        "className" : "demo.MathGame",
    +                        "classLoaderName" : "app",
    +                        "methodName" : "primeFactors",
    +                        "nativeMethod" : false,
    +                        "lineNumber" : 46,
    +                        "fileName" : "MathGame.java"
    +                     },
    +                     ...
    +                  ],
    +                  "localizedMessage" : "number is: -170365, need >= 2",
    +                  "@type" : "java.lang.IllegalArgumentException",
    +                  "message" : "number is: -170365, need >= 2"
    +               }
    +            ]
    +         },
    +         {
    +            "type" : "watch",
    +            "cost" : 0.033375,
    +            "jobId" : 3,
    +            "ts" : 1596703454241,
    +            "value" : [
    +               [
    +                  1
    +               ],
    +               [
    +                  2,
    +                  2,
    +                  2,
    +                  2,
    +                  13,
    +                  491
    +               ],
    +               null
    +            ],
    +            "sizeLimit" : 10485760,
    +            "expand" : 1
    +         }
    +      ]
    +   },
    +   "consumerId" : "8ecb9cb7c7804d5d92e258b23d5245cc_1",
    +   "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a",
    +   "state" : "SUCCEEDED"
    +}
    +

    The value of the watch command result is the value of watch-experss, and the above command is {params, returnObj, throwExp}, so the value of the watch result is an array of length 3, and each element corresponds to the expression in the corresponding order.

    Please refer to the section "Make watch command output a map object".

    Interrupt command execution

    Interrupt the running foreground job of the session:

    curl -Ss -XPOST http://localhost:8563/api -d '''
    +{
    +  "action":"interrupt_job",
    +  "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a"
    +}
    +'''
    +
    {
    +  "state": "SUCCEEDED",
    +  "body": {
    +    "jobStatus": "TERMINATED",
    +    "jobId": 3
    +  }
    +}
    +

    Close session

    Specify the session ID to close the session.

    curl -Ss -XPOST http://localhost:8563/api -d '''
    +{
    +  "action":"close_session",
    +  "sessionId" : "2b085b5d-883b-4914-ab35-b2c5c1d5aa2a"
    +}
    +'''
    +
    {
    +  "state": "SUCCEEDED"
    +}
    +

    Authentication

    Web UI

    A Web UI based on Http API, visit url : http://127.0.0.1:8563/uiopen in new window .

    Completed functions:

    • Create a session
    • Copy and open the url to join the session, share the session with multiple people
    • Continuously pull session command result messages
    • Refresh the web page or join the session to pull command messages history
    • Control input or interrupt command status

    Pending function:

    • Improve the readability of command result messages
    • Support automatic completion of input commands and command templates
    • Provide command help
    • Support personal profile settings

    Special command results

    status

    {
    +  "jobId": 5,
    +  "statusCode": 0,
    +  "type": "status"
    +}
    +

    type is status to indicate the command execution status:

    After each command is executed, there is a unique status result. If the statusCode is 0, it means the execution is successful, and the statusCode is a non-zero value that means the execution failed, similar to the process exit code.

    When the command execution fails, an error message is generally provided, such as:

    {
    +  "jobId": 3,
    +  "message": "The argument 'class-pattern' is required",
    +  "statusCode": -10,
    +  "type": "status"
    +}
    +

    input_status

    {
    +  "inputStatus": "ALLOW_INPUT",
    +  "type": "input_status",
    +  "jobId": 0
    +}
    +

    type is input_status to indicate input status:

    It is used to control user input during UI interaction, and a change message will be sent before and after each command is executed.

    Possible values ​​of inputStatus:

    • ALLOW_INPUT : Allow users to enter commands, which means that the session has no foreground command being executed and can accept new command.
    • ALLOW_INTERRUPT : Allow the user to interrupt the command execution, indicating that a command is currently being executed, and the user can send interrupt_job to interrupt the execution.
    • DISABLED : In the disabled state, commands cannot be entered or interrupted.

    command

    {
    +  "type": "command",
    +  "jobId": 3,
    +  "state": "SCHEDULED",
    +  "command": "watch demo.MathGame primeFactors \"{params, returnObj, throwExp}\" "
    +}
    +

    type is command to indicate the input command data:

    It is used for the interactive UI to echo the commands entered by the user. The pulled session command message history will contain messages of type command, which can be processed in order.

    enhancer

    {
    +  "success": true,
    +  "jobId": 3,
    +  "effect": {
    +    "listenerId": 3,
    +    "cost": 24,
    +    "classCount": 1,
    +    "methodCount": 1
    +  },
    +  "type": "enhancer"
    +}
    +

    type is enhancer to indicate the result of class enhancement:

    Commands such as trace/watch/jad/tt need to enhance the class and will receive this enhancer result. It may happen that the result of enhancer is successful, but there is no hit method. The client can prompt the user according to the result of enhancer.

    Cases

    Get classpath of Java application

    Get system properties of the Java application through Http api and extract the value of java.class.path.

    json_data=$(curl -Ss -XPOST http://localhost:8563/api -d '
    +{
    +  "action":"exec",
    +  "command":"sysprop"
    +}')
    +
    • Extract value with sed:
    class_path=$(echo $json_data | tr -d '\n' | sed 's/.*"java.class.path":"\([^"]*\).*/\1/')
    +echo "classpath: $class_path"
    +
    • Extract value with json_pp/awk:
    class_path=$(echo $json_data | tr -d '\n' | json_pp | grep java.class.path | awk -F'"' '{ print $4 }')
    +echo "classpath: $class_path"
    +

    Output:

    classpath: demo-arthas-spring-boot.jar
    +

    NOTE:

    • echo $json_data | tr -d '\n' : Delete line breaks (the value of line.separator) to avoid affecting the processing of sed/json_pp commands.
    • awk -F'"' '{ print $4 }' : Use double quote as delimiter

    Make watch command output a map object

    The result value of watch is generated by calculating the watch-express ognl expression. You can change the ognl expression to generate the desired value, please refer to OGNL documentopen in new window.

    TIP

    Maps can also be created using a special syntax.

    #{ "foo" : "foo value", "bar" : "bar value" }

    This creates a Map initialized with mappings for "foo" and "bar".

    The following command generates values ​​in map format:

    watch *MathGame prime* '#{ "params" : params, "returnObj" : returnObj, "throwExp": throwExp}' -x 2 -n 5
    +

    Execute the above command in Telnet shell/WebConsole, the output result:

    ts=2020-08-06 16:57:20; [cost=0.241735ms] result=@LinkedHashMap[
    +    @String[params]:@Object[][
    +        @Integer[1],
    +    ],
    +    @String[returnObj]:@ArrayList[
    +        @Integer[2],
    +        @Integer[241],
    +        @Integer[379],
    +    ],
    +    @String[throwExp]:null,
    +]
    +

    Execute the above command with Http api, pay attention to escaping the JSON double quotes:

    curl -Ss -XPOST http://localhost:8563/api -d @- << EOF
    +{
    +  "action":"exec",
    +  "execTimeout": 30000,
    +  "command":"watch *MathGame prime* '#{ \"params\" : params, \"returnObj\" : returnObj, \"throwExp\": throwExp}' -n 3 "
    +}
    +EOF
    +

    Http api execution result:

    {
    +    "body": {
    +         ...
    +        "results": [
    +            ...
    +            {
    +                ...
    +                "type": "watch",
    +                "value": {
    +                    "params": [
    +                        1
    +                    ],
    +                    "returnObj": [
    +                        2,
    +                        5,
    +                        17,
    +                        23,
    +                        23
    +                    ]
    +                }
    +            },
    +            {
    +                ...
    +                "type": "watch",
    +                "value": {
    +                    "params": [
    +                        -98278
    +                    ],
    +                    "throwExp": {
    +                        "@type": "java.lang.IllegalArgumentException",
    +                        "localizedMessage": "number is: -98278, need >= 2",
    +                        "message": "number is: -98278, need >= 2",
    +                        "stackTrace": [
    +                            ...
    +                        ]
    +                    }
    +                }
    +            },
    +            ...
    +}
    +

    You can see that the value of the watch result becomes a map object, and the program can read value through a key .

    + + + diff --git a/3.x/en/doc/idea-plugin.html b/3.x/en/doc/idea-plugin.html new file mode 100644 index 00000000000..dfa8d04420f --- /dev/null +++ b/3.x/en/doc/idea-plugin.html @@ -0,0 +1,41 @@ + + + + + + + + + IDEA Plugin | arthas + + + + + + + + diff --git a/3.x/en/doc/index.html b/3.x/en/doc/index.html new file mode 100644 index 00000000000..b9535d45b0f --- /dev/null +++ b/3.x/en/doc/index.html @@ -0,0 +1,41 @@ + + + + + + + + + Introduction | arthas + + + + +
    Table of Contents

    Introduction

    Arthas is a Java diagnostic tool open-sourced by Alibaba middleware team. It is widely adopted and popular among the developers inside Alibaba. Arthas helps developers in trouble-shooting issues in production environment for Java based applications without modifying code or restarting servers.

    Background

    Oftentimes the production system network is inaccessible from local development environment. If issues are encountered in production systems, it is impossible to use IDE to debug the application remotely. What's even worse, debugging in production environment is unacceptable, as it will suspend all the threads, leading to services downtime.

    Developers could always try to reproduce the same issue on the test/staging environment. However, this is tricky as some issues cannot be reproduced easily in a different environment, or even disappear once restarted.

    And if you're thinking of adding some logs to your code to help trouble-shoot the issue, you will have to go through the following lifecycle: test, staging, and then to production. Time is money! This approach is inefficient! Worse still, the issue may not be fixed since it might be irreproducible once the JVM is restarted, as described above.

    Arthas is built to solve these issues. A developer can troubleshoot production issues on the fly. No JVM restart, no additional code changes. Arthas works as an observer, that is, it will never suspend your running threads.

    Key features

    • Check whether a class is loaded? Or where the class is loaded from? (Useful for trouble-shooting jar file conflicts)
    • Decompile a class to ensure the code is running as expected.
    • Check classloader statistics, e.g. the number of classloaders, the number of classes loaded per classloader, the classloader hierarchy, possible classloader leaks, etc.
    • Check the method invocation details, e.g. method parameter, returned values, exceptions and etc.
    • Check the stack trace of specified method invocation. This is useful when a developer wants to know the caller of the method.
    • Trace the method invocation to find slow sub-invocations.
    • Monitor method invocation statistics, e.g. QPS (Query Per Second), RT (Return Time), success rate and etc.
    • Monitor system metrics, thread states and CPU usage, GC statistics and etc.
    • Supports command line interactive mode, with auto-complete feature enabled.
    • Supports telnet and WebSocket, which enables both local and remote diagnostics with command line and browsers.
    • Supports profiler/Flame Graph
    • Support get objects in the heap that are instances of the specified class.
    • Supports JDK 6+
    • Supports Linux/Mac/Windows

    If you are using Arthas, please let us know. Your feedback is very important to us: Viewopen in new window

    Contributors

    open in new window

    + + + diff --git a/3.x/en/doc/install-detail.html b/3.x/en/doc/install-detail.html new file mode 100644 index 00000000000..ab60c7fa7ff --- /dev/null +++ b/3.x/en/doc/install-detail.html @@ -0,0 +1,52 @@ + + + + + + + + + Install Arthas | arthas + + + + +
    Table of Contents

    Install Arthas

    Quick installation

    Downloadarthas-boot3.jar,Start with java command:

    curl -O https://arthas.aliyun.com/arthas-boot3.jar
    +java -jar arthas-boot3.jar
    +

    Print usage:

    java -jar arthas-boot3.jar -h
    +

    Use as3.sh

    You can install Arthas with one single line command on Linux, Unix, and Mac. Pls. copy the following command and paste it into the command line, then press Enter to run:

    curl -L https://arthas.aliyun.com/install3.sh | sh
    +

    The command above will download the bootstrap script as3.sh to the current directory. You can move it to any other place you want, or put its location in $PATH.

    You can enter its interactive interface by executing as3.sh, or execute as3.sh -h for more help information.

    Full installation

    Download from Github Releases

    https://github.com/alibaba/arthas/releasesopen in new window

    Download and unzip, find arthas-boot3.jar in the directory. Start with java command:

    java -jar arthas-boot3.jar
    +

    Print usage:

    java -jar arthas-boot3.jar -h
    +

    Manual Installation

    Manual Installation

    Installation via Packages

    Arthas has packages for Debian and Fedora based systems. you can get them from the github releases page https://github.com/alibaba/arthas/releases.

    Instruction for Debian based systems

    sudo dpkg -i arthas*.deb
    +

    Instruction for Fedora based systems

    sudo rpm -i arthas*.rpm
    +

    Usage

    After the installation of packages, execute

    as3.sh
    +

    Offline Help Documentation

    Latest Version Documentation, Click To Download:open in new window

    Uninstall

    • On Linux/Unix/Mac, delete the files with the following command:

      rm -rf ~/.arthas/
      +rm -rf ~/logs/arthas/
      +
    • On Windows, delete .arthas and logs/arthas directory under user home.

    + + + diff --git a/3.x/en/doc/jad.html b/3.x/en/doc/jad.html new file mode 100644 index 00000000000..754f685be85 --- /dev/null +++ b/3.x/en/doc/jad.html @@ -0,0 +1,159 @@ + + + + + + + + + jad | arthas + + + + +
    Table of Contents

    jad

    jad online tutorialopen in new window

    TIP

    Decompile the specified classes.

    jad helps to decompile the byte code running in JVM to the source code to assist you to understand the logic behind better. If you need to download the bytecode of classes in a specific package directory in bulk, you can refer to the dump tool for assistance.

    • The decompiled code is syntax highlighted for better readability in Arthas console.
    • It is possible that there's grammar error in the decompiled code, but it should not affect your interpretation.

    Options

    NameSpecification
    class-patternpattern for the class name
    [c:]hashcode of the class loader that loads the class
    [classLoaderClass:]The class name of the ClassLoader that executes the expression.
    [E]turn on regex match while the default is wildcard match

    Usage

    Decompile java.lang.String

    $ jad java.lang.String
    +
    +ClassLoader:
    +
    +Location:
    +
    +
    +        /*
    +         * Decompiled with CFR.
    +         */
    +        package java.lang;
    +
    +        import java.io.ObjectStreamField;
    +        import java.io.Serializable;
    +...
    +        public final class String
    +        implements Serializable,
    +        Comparable<String>,
    +        CharSequence {
    +            private final char[] value;
    +            private int hash;
    +            private static final long serialVersionUID = -6849794470754667710L;
    +            private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];
    +            public static final Comparator<String> CASE_INSENSITIVE_ORDER = new CaseInsensitiveComparator();
    +...
    +            public String(byte[] byArray, int n, int n2, Charset charset) {
    +/*460*/         if (charset == null) {
    +                    throw new NullPointerException("charset");
    +                }
    +/*462*/         String.checkBounds(byArray, n, n2);
    +/*463*/         this.value = StringCoding.decode(charset, byArray, n, n2);
    +            }
    +...
    +

    By default, the decompile result will have the ClassLoader information. With the --source-only option, you can print only the source code. Conveniently used with the mc/retransform commands.

    $ jad --source-only demo.MathGame
    +/*
    + * Decompiled with CFR 0_132.
    + */
    +package demo;
    +
    +import java.io.PrintStream;
    +import java.util.ArrayList;
    +import java.util.Iterator;
    +import java.util.List;
    +import java.util.Random;
    +import java.util.concurrent.TimeUnit;
    +
    +public class MathGame {
    +    private static Random random = new Random();
    +    public int illegalArgumentCount = 0;
    +...
    +

    Decompile the specified method

    $ jad demo.MathGame main
    +
    +ClassLoader:
    ++-sun.misc.Launcher$AppClassLoader@232204a1
    +  +-sun.misc.Launcher$ExtClassLoader@7f31245a
    +
    +Location:
    +/private/tmp/math-game.jar
    +
    +       public static void main(String[] args) throws InterruptedException {
    +           MathGame game = new MathGame();
    +           while (true) {
    +/*16*/         game.run();
    +/*17*/         TimeUnit.SECONDS.sleep(1L);
    +           }
    +       }
    +

    Do not print line numbers

    • --lineNumber: Output source code contins line numbers, default value true
    $ jad demo.MathGame main --lineNumber false
    +
    +ClassLoader:
    ++-sun.misc.Launcher$AppClassLoader@232204a1
    +  +-sun.misc.Launcher$ExtClassLoader@7f31245a
    +
    +Location:
    +/private/tmp/math-game.jar
    +
    +public static void main(String[] args) throws InterruptedException {
    +    MathGame game = new MathGame();
    +    while (true) {
    +        game.run();
    +        TimeUnit.SECONDS.sleep(1L);
    +    }
    +}
    +

    Decompile with specified classLoader

    TIP

    If the target class is loaded by multiple classloaders, jad outputs the hashcode of the corresponding classloaders, then you can re-run jad and specify -c <hashcode> to decompile the target class from the specified classloader.

    $ jad org.apache.log4j.Logger
    +
    +Found more than one class for: org.apache.log4j.Logger, Please use jad -c hashcode org.apache.log4j.Logger
    +HASHCODE  CLASSLOADER
    +69dcaba4  +-monitor's ModuleClassLoader
    +6e51ad67  +-java.net.URLClassLoader@6e51ad67
    +            +-sun.misc.Launcher$AppClassLoader@6951a712
    +            +-sun.misc.Launcher$ExtClassLoader@6fafc4c2
    +2bdd9114  +-pandora-qos-service's ModuleClassLoader
    +4c0df5f8  +-pandora-framework's ModuleClassLoader
    +
    +Affect(row-cnt:0) cost in 38 ms.
    +$ jad org.apache.log4j.Logger -c 69dcaba4
    +
    +ClassLoader:
    ++-monitor's ModuleClassLoader
    +
    +Location:
    +/Users/admin/app/log4j-1.2.14.jar
    +
    +package org.apache.log4j;
    +
    +import org.apache.log4j.spi.*;
    +
    +public class Logger extends Category
    +{
    +    private static final String FQCN;
    +
    +    protected Logger(String name)
    +    {
    +        super(name);
    +    }
    +
    +...
    +
    +Affect(row-cnt:1) cost in 190 ms.
    +

    For classloader with only one instance, it can be specified by --classLoaderClass using class name, which is more convenient to use.

    The value of --classloaderclass is the class name of classloader. It can only work when it matches a unique classloader instance. The purpose is to facilitate the input of general commands. However, -c <hashcode> is dynamic.

    + + + diff --git a/3.x/en/doc/jfr.html b/3.x/en/doc/jfr.html new file mode 100644 index 00000000000..0e5e4b29a91 --- /dev/null +++ b/3.x/en/doc/jfr.html @@ -0,0 +1,62 @@ + + + + + + + + + jfr | arthas + + + + +
    Table of Contents

    jfr

    jfr online tutorialopen in new window

    TIP

    Java Flight Recorder (JFR) is a tool for collecting diagnostic and profiling data about a running Java application. It is integrated into the Java Virtual Machine (JVM) and causes almost no performance overhead, so it can be used even in heavily loaded production environments.

    The jfr command supports starting and stopping JFR recordings during dynamic program running. Recording collects data about events. Events occur in the JVM or the Java application at a specific point in time. Each event has a name, a time stamp, and an optional payload. The payload is the data associated with an event, for example, the CPU usage, the Java heap size before and after the event, the thread ID of the lock holder, and so on.

    The basic usage of the jfr command isjfr cmd [actionArg]

    Note: jfr is supported only after the 8u262 version of jdk8

    Supported Options

    NameSpecification
    cmdCommand to execute, support【start,status,dump,stop】
    actionArgAttribute name pattern
    [n:]Name of recording
    [r:]Recording id
    [dumponexit:]When the program exits, whether to dump the .jfr file. (boolean false)
    [d:]Duration of recording, i.e. 60s, 2m, 5h, 3d. default no delay
    [duration:]Duration of recording, default forever.
    [s:]Server-side template, The default is default.jfc located at $JAVA_HOME/lib/jfr/default.jfc
    [f:]Resulting recording filename
    [maxage:]Maximum age of buffer data
    [maxsize:]Maximum size of buffers in bytes
    [state:]Recording state

    Start jfr recording

    $ jfr start
    +Started recording 1. No limit specified, using maxsize=250MB as default.
    +

    TIP

    The default JFR record is started.

    Start the JFR recording, specify the recording name, duration, file saving path.

    $ jfr start -n myRecording --duration 60s -f /tmp/myRecording.jfr
    +Started recording 2. The result will be written to:
    +/tmp/myRecording.jfr
    +

    ##View jfr recordings status

    The default is to view all JFR recordings.

    $ jfr status
    +Recording: recording=1 name=Recording-1 (running)
    +Recording: recording=2 name=myRecording duration=PT1M (closed)
    +

    View the records of the specified recording ID.

    $ jfr status -r 1
    +Recording: recording=1 name=Recording-1 (running)
    +

    View recordings in a specified state.

    $ jfr status --state closed
    +Recording: recording=2 name=myRecording duration=PT1M (closed)
    +

    dump jfr recording

    The jfr dump command will output the recordings from the start until the execution of the command to a JFR file, without stopping the recording.
    Specifies the record output path.

    $ jfr dump -r 1 -f /tmp/myRecording1.jfr
    +Dump recording 1, The result will be written to:
    +/tmp/myRecording1.jfr
    +

    The file output path is not specified. By default, it is saved to the arthas-output directory

    $ jfr dump -r 1
    +Dump recording 1, The result will be written to:
    +/tmp/test/arthas-output/20220819-200915.jfr
    +

    Stop jfr recording

    No recording output path is specified, default is saved to arthas-output directory.

    $ jfr stop -r 1
    +Stop recording 1, The result will be written to:
    +/tmp/test/arthas-output/20220819-202049.jfr
    +

    notice: A recording can only be stopped once.

    You can also specify the record output path.

    View JFR recording results under arthas-output via browser

    By default, arthas uses http port 8563 , which can be opened:http://localhost:8563/arthas-output/open in new window View the arthas-output directory below JFR recording results:

    The resulting results can be viewed with tools that support the JFR format. Such as:

    • JDK Mission Control : https://github.com/openjdk/jmc
    + + + diff --git a/3.x/en/doc/jvm.html b/3.x/en/doc/jvm.html new file mode 100644 index 00000000000..64a8a58a61c --- /dev/null +++ b/3.x/en/doc/jvm.html @@ -0,0 +1,140 @@ + + + + + + + + + jvm | arthas + + + + +
    Table of Contents

    jvm

    jvm online tutorialopen in new window

    TIP

    Check the current JVM's info

    Usage

    $ jvm
    +RUNTIME
    +--------------------------------------------------------------------------------------------------------------
    + MACHINE-NAME                   37@ff267334bb65
    + JVM-START-TIME                 2020-07-23 07:50:36
    + MANAGEMENT-SPEC-VERSION        1.2
    + SPEC-NAME                      Java Virtual Machine Specification
    + SPEC-VENDOR                    Oracle Corporation
    + SPEC-VERSION                   1.8
    + VM-NAME                        Java HotSpot(TM) 64-Bit Server VM
    + VM-VENDOR                      Oracle Corporation
    + VM-VERSION                     25.201-b09
    + INPUT-ARGUMENTS                []
    + CLASS-PATH                     demo-arthas-spring-boot.jar
    + BOOT-CLASS-PATH                /usr/lib/jvm/java-8-oracle/jre/lib/resources.jar:/usr/lib/jvm/java-8-oracle/j
    +                                re/lib/rt.jar:/usr/lib/jvm/java-8-oracle/jre/lib/sunrsasign.jar:/usr/lib/jvm/
    +                                java-8-oracle/jre/lib/jsse.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jce.jar:/us
    +                                r/lib/jvm/java-8-oracle/jre/lib/charsets.jar:/usr/lib/jvm/java-8-oracle/jre/l
    +                                ib/jfr.jar:/usr/lib/jvm/java-8-oracle/jre/classes
    + LIBRARY-PATH                   /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
    +
    +--------------------------------------------------------------------------------------------------------------
    + CLASS-LOADING
    +--------------------------------------------------------------------------------------------------------------
    + LOADED-CLASS-COUNT             7529
    + TOTAL-LOADED-CLASS-COUNT       7529
    + UNLOADED-CLASS-COUNT           0
    + IS-VERBOSE                     false
    +
    +--------------------------------------------------------------------------------------------------------------
    + COMPILATION
    +--------------------------------------------------------------------------------------------------------------
    + NAME                           HotSpot 64-Bit Tiered Compilers
    + TOTAL-COMPILE-TIME             14921(ms)
    +
    +--------------------------------------------------------------------------------------------------------------
    + GARBAGE-COLLECTORS
    +--------------------------------------------------------------------------------------------------------------
    + PS Scavenge                            name : PS Scavenge
    + [count/time (ms)]                      collectionCount : 7
    +                                        collectionTime : 68
    +
    + PS MarkSweep                           name : PS MarkSweep
    + [count/time (ms)]                      collectionCount : 1
    +                                        collectionTime : 47
    +
    +--------------------------------------------------------------------------------------------------------------
    + MEMORY-MANAGERS
    +--------------------------------------------------------------------------------------------------------------
    + CodeCacheManager               Code Cache
    +
    + Metaspace Manager              Metaspace
    +                                Compressed Class Space
    +
    + Copy                           Eden Space
    +                                Survivor Space
    +
    + MarkSweepCompact               Eden Space
    +                                Survivor Space
    +                                Tenured Gen
    +
    +
    +--------------------------------------------------------------------------------------------------------------
    + MEMORY
    +--------------------------------------------------------------------------------------------------------------
    + HEAP-MEMORY-USAGE                      init : 268435456(256.0 MiB)
    + [memory in bytes]                      used : 18039504(17.2 MiB)
    +                                        committed : 181403648(173.0 MiB)
    +                                        max : 3817865216(3.6 GiB)
    +
    + NO-HEAP-MEMORY-USAGE                   init : 2555904(2.4 MiB)
    + [memory in bytes]                      used : 33926216(32.4 MiB)
    +                                        committed : 35176448(33.5 MiB)
    +                                        max : -1(-1 B)
    +
    +--------------------------------------------------------------------------------------------------------------
    + OPERATING-SYSTEM
    +--------------------------------------------------------------------------------------------------------------
    + OS                             Linux
    + ARCH                           amd64
    + PROCESSORS-COUNT               3
    + LOAD-AVERAGE                   29.53
    + VERSION                        4.15.0-52-generic
    +
    +--------------------------------------------------------------------------------------------------------------
    + THREAD
    +--------------------------------------------------------------------------------------------------------------
    + COUNT                          30
    + DAEMON-COUNT                   24
    + PEAK-COUNT                     31
    + STARTED-COUNT                  36
    + DEADLOCK-COUNT                 0
    +
    +--------------------------------------------------------------------------------------------------------------
    + FILE-DESCRIPTOR
    +--------------------------------------------------------------------------------------------------------------
    + MAX-FILE-DESCRIPTOR-COUNT      1048576
    + OPEN-FILE-DESCRIPTOR-COUNT     100
    +Affect(row-cnt:0) cost in 88 ms.
    +
    • COUNT: the count of active threads
    • DAEMON-COUNT: the count of active daemon threads
    • PEAK-COUNT: the maximum count of the live threads since JVM starts
    • STARTED-COUNT: the total count of the created threads since JVM starts
    • DEADLOCK-COUNT: the count of deadlocked threads
    • MAX-FILE-DESCRIPTOR-COUNT:the count of max file descriptor JVM process can open
    • OPEN-FILE-DESCRIPTOR-COUNT:the current count of file descriptor JVM process open
    + + + diff --git a/3.x/en/doc/keymap.html b/3.x/en/doc/keymap.html new file mode 100644 index 00000000000..dc61ef6de68 --- /dev/null +++ b/3.x/en/doc/keymap.html @@ -0,0 +1,60 @@ + + + + + + + + + keymap | arthas + + + + +
    Table of Contents

    keymap

    keymap online tutorialopen in new window

    Use keymap command to print the current keymap:

    The default keymap is:

    ShortcutShortcut DescriptionCommand NameCommand Description
    "\C-a"ctrl + abeginning-of-linego to the beginning of the line
    "\C-e"ctrl + eend-of-linego to the end of the line
    "\C-f"ctrl + fforward-wordforward a word
    "\C-b"ctrl + bbackward-wordbackward a word
    "\e[D"left arrowbackward-charbackward a character
    "\e[C"right arrowforward-charforward a character
    "\e[B"down arrownext-historyshow next history command
    "\e[A"up arrowprevious-historyshow previous history command
    "\C-h"ctrl + hbackward-delete-charbackward delete a character
    "\C-?"ctrl + shift + /backward-delete-charbackward delete a character
    "\C-u"ctrl + uundoclear current line
    "\C-d"ctrl + ddelete-chardelete the character of the current cursor
    "\C-k"ctrl + kkill-linedelete all characters from the current cursor to the end of the line
    "\C-i"ctrl + icompleteAuto completion, equivalent to TAB
    "\C-j"ctrl + jaccept-lineend the current line, equivalent to enter
    "\C-m"ctrl + maccept-lineend the current line, equivalent to enter
    "\C-w"backward-delete-word
    "\C-x\e[3~"backward-kill-line
    "\e\C-?"backward-kill-word
    • Press tab to enable auto-completion prompt at any time.
    • Enter command and - or --, then press tab to display the concrete options for the current command.

    Custom shortcuts

    Specify customization in $USER_HOME/.arthas/conf/inputrc file in the current user home directory.

    Vim user may want to map ctrl+h to moving the cursor forward one character. To achieve this, copy the default configuration first,

    "\C-a": beginning-of-line
    +"\C-e": end-of-line
    +"\C-f": forward-word
    +"\C-b": backward-word
    +"\e[D": backward-char
    +"\e[C": forward-char
    +"\e[B": next-history
    +"\e[A": previous-history
    +"\C-h": backward-delete-char
    +"\C-?": backward-delete-char
    +"\C-u": undo
    +"\C-d": delete-char
    +"\C-k": kill-line
    +"\C-i": complete
    +"\C-j": accept-line
    +"\C-m": accept-line
    +"\C-w": backward-delete-word
    +"\C-x\e[3~": backward-kill-line
    +"\e\C-?": backward-kill-word
    +

    then replace "\C-h": backward-delete-char with "\C-h": backward-char, then reconnect to Arthas console to take effect.

    Shortcuts for jobs

    • ctrl + c: Terminates current command
    • ctrl + z: Suspends the current command, you can restore this command with bg/fg, or kill it.
    • ctrl + a: Go to the beginning the line
    • ctrl + e: Go to the end of the line
    + + + diff --git a/3.x/en/doc/logger.html b/3.x/en/doc/logger.html new file mode 100644 index 00000000000..fc2779e3040 --- /dev/null +++ b/3.x/en/doc/logger.html @@ -0,0 +1,176 @@ + + + + + + + + + logger | arthas + + + + +
    Table of Contents

    logger

    logger online tutorialopen in new window

    TIP

    Print the logger information, update the logger level

    Usage

    Take the following logback.xml as an example:

    <?xml version="1.0" encoding="UTF-8"?>
    +<configuration>
    +    <appender name="APPLICATION" class="ch.qos.logback.core.rolling.RollingFileAppender">
    +        <file>app.log</file>
    +        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    +            <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
    +            <maxFileSize>100MB</maxFileSize>
    +            <maxHistory>60</maxHistory>
    +            <totalSizeCap>2GB</totalSizeCap>
    +        </rollingPolicy>
    +        <encoder>
    +            <pattern>%logger{35} - %msg%n</pattern>
    +        </encoder>
    +    </appender>
    +
    +    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
    +        <appender-ref ref="APPLICATION" />
    +    </appender>
    +
    +    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    +        <encoder>
    +            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n
    +            </pattern>
    +            <charset>utf8</charset>
    +        </encoder>
    +    </appender>
    +
    +    <root level="INFO">
    +        <appender-ref ref="CONSOLE" />
    +        <appender-ref ref="ASYNC" />
    +    </root>
    +</configuration>
    +

    The result of the logger command:

    [arthas@2062]$ logger
    + name                                   ROOT
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  INFO
    + effectiveLevel                         INFO
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    + appenders                              name            CONSOLE
    +                                        class           ch.qos.logback.core.ConsoleAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        target          System.out
    +                                        name            APPLICATION
    +                                        class           ch.qos.logback.core.rolling.RollingFileAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        file            app.log
    +                                        name            ASYNC
    +                                        class           ch.qos.logback.classic.AsyncAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        appenderRef     [APPLICATION]
    +

    In the appenders section:

    • The target of CONSOLE logger is System.out
    • APPLICATION logger is RollingFileAppender, the file is app.log
    • ASYNC its appenderRef is APPLICATION, which means asynchronous output to the file

    View logger information for the special name

    [arthas@2062]$ logger -n org.springframework.web
    + name                                   org.springframework.web
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  null
    + effectiveLevel                         INFO
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    +

    View logger information for the special classloader

    Note that the hashcode changes, you need to check the current ClassLoader information first, and extract the hashcode corresponding to the ClassLoader.

    if you use-c, you have to manually type hashcode by -c <hashcode>.

    [arthas@2062]$ logger -c 2a139a55
    + name                                   ROOT
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  DEBUG
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    + appenders                              name            CONSOLE
    +                                        class           ch.qos.logback.core.ConsoleAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        target          System.out
    +                                        name            APPLICATION
    +                                        class           ch.qos.logback.core.rolling.RollingFileAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        file            app.log
    +                                        name            ASYNC
    +                                        class           ch.qos.logback.classic.AsyncAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        appenderRef     [APPLICATION]
    +

    For classloader with only one instance, it can be specified by --classLoaderClass using class name, which is more convenient to use.

    logger --classLoaderClass sun.misc.Launcher$AppClassLoader

    • PS: Here the classLoaderClass in java 8 is sun.misc.Launcher$AppClassLoader, while in java 11 it's jdk.internal.loader.ClassLoaders$AppClassLoader.

    The value of --classloaderclass is the class name of classloader. It can only work when it matches a unique classloader instance. The purpose is to facilitate the input of general commands. However, -c <hashcode> is dynamic.

    Update logger level

    [arthas@2062]$ logger --name ROOT --level debug
    +update logger level success.
    +

    Speecify classloader to update logger level

    By default,logger command will be executed under SystemClassloader, if the application is a traditional war, or using spring boot fat jar, then it needs to specify classloader。

    You can first use sc -d yourClassName to check specified classloader hashcode,then specify classloader when updating logger level:

    [arthas@2062]$ logger -c 2a139a55 --name ROOT --level debug
    +

    View the logger information without appenders

    By default, the logger command only prints information about the logger with appenders. If you want to see information about loggers without appender, you can use the parameter --include-no-appender.

    Note that the output will usually be very long.

    [arthas@2062]$ logger --include-no-appender
    + name                                   ROOT
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  DEBUG
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    + appenders                              name            CONSOLE
    +                                        class           ch.qos.logback.core.ConsoleAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        target          System.out
    +                                        name            APPLICATION
    +                                        class           ch.qos.logback.core.rolling.RollingFileAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        file            app.log
    +                                        name            ASYNC
    +                                        class           ch.qos.logback.classic.AsyncAppender
    +                                        classLoader     sun.misc.Launcher$AppClassLoader@2a139a55
    +                                        classLoaderHash 2a139a55
    +                                        appenderRef     [APPLICATION]
    +
    + name                                   com
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  null
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    +
    + name                                   com.alibaba
    + class                                  ch.qos.logback.classic.Logger
    + classLoader                            sun.misc.Launcher$AppClassLoader@2a139a55
    + classLoaderHash                        2a139a55
    + level                                  null
    + effectiveLevel                         DEBUG
    + additivity                             true
    + codeSource                             file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    +...
    +
    + + + diff --git a/3.x/en/doc/manual-install.html b/3.x/en/doc/manual-install.html new file mode 100644 index 00000000000..de9ee401d35 --- /dev/null +++ b/3.x/en/doc/manual-install.html @@ -0,0 +1,60 @@ + + + + + + + + + Manually Install Arthas | arthas + + + + +
    Table of Contents

    Manually Install Arthas

    1. Download the latest version

    Download from Github Releases

    https://github.com/alibaba/arthas/releasesopen in new window

    1. Unzip zip file

      unzip arthas-packaging-bin.zip
      +
    2. Install Arthas

      It is recommended to completely remove all old versions of Arthas before installation.

      sudo su admin
      +rm -rf /home/admin/.arthas/lib/* # remove all the leftover of the old outdated Arthas
      +cd arthas
      +./install-local3.sh # switch the user based on the owner of the target Java process.
      +
    3. Start Arthas

      Make sure stop the old Arthas server before start.

      ./as3.sh
      +

    Startup with as3.sh/as.bat

    Linux/Unix/Mac

    You can install Arthas with one single line command on Linux, Unix, and Mac. Pls. copy the following command and paste it into the command line, then press Enter to run:

    curl -L https://arthas.aliyun.com/install3.sh | sh
    +

    The command above will download the bootstrap script as3.sh to the current directory. You can move it the any other place you want, or put its location in $PATH.

    You can enter its interactive interface by executing as3.sh, or execute as3.sh -h for more help information.

    Windows

    Latest Version, Click To Download: open in new window

    Download and unzip, then find as.bat from 'bin' directory. For now this script will only take one argument pid, which means you can only diagnose the local Java process. (Welcome any bat script expert to make it better ❤️)

    as.bat <pid>
    +

    If you want to diagnose Java process run as windows service, try these commands:

    as-service.bat -port <port>
    +as-service.bat -pid <pid>
    +as-service.bat -pid <pid> --interact
    +

    Use this command to remove arthas service:

    as-service.bat -remove
    +

    Manual command line startup

    If you fail to boot Arthas with the provided batch file, you could try to assemble the bootstrap command in the following way.

    1. Locate java in the target JVM:

      • Linux/Unix/Mac: ps aux | grep java
      • Windows: open the Process Monitor to search java
    2. Assemble bootstrap command:

      Let's suppose we are using /opt/jdk1.8/bin/java, then the command should be:

      /opt/jdk1.8/bin/java -Xbootclasspath/a:/opt/jdk1.8/lib/tools.jar \
      +    -jar /tmp/arthas-packaging/arthas-core.jar \
      +    -pid 15146 \
      +    -target-ip 127.0.0.1 -telnet-port 3658 -http-port 8563 \
      +    -core /tmp/arthas-packaging/arthas-core.jar \
      +    -agent /tmp/arthas-packaging/arthas/arthas-agent.jar
      +

      Note:

      • -Xbootclasspath adds tools.jar
      • -jar /tmp/arthas-packaging/arthas-core.jar specifies main entry
      • -pid 15146 specifies the target java process PID
      • -target-ip 127.0.0.1 specifies the IP
      • -telnet-port 3658 -http-port 8563 specifies telnet and HTTP ports for remote access
      • -core /tmp/arthas-packaging/arthas-core.jar -agent /tmp/arthas-packaging/arthas/arthas-agent.jar specifies core/agent jar package

      If you are running on JDK 1.9 or above,then it's unnecessary to add tools.jar in option -Xbootclasspath.

      You can find the logs from ~/logs/arthas/arthas.log.

    3. Use telnet to connect once attaching to the target JVM (in step 2) succeeds

      telnet 127.0.0.1 3658
      +
    + + + diff --git a/3.x/en/doc/mbean.html b/3.x/en/doc/mbean.html new file mode 100644 index 00000000000..6107f4a4c2a --- /dev/null +++ b/3.x/en/doc/mbean.html @@ -0,0 +1,49 @@ + + + + + + + + + mbean | arthas + + + + +
    Table of Contents

    mbean

    mbean online tutorialopen in new window

    TIP

    show Mbean information

    This command can show or monitor Mbean attribute information.

    Parameters

    NameSpecification
    name-patternpattern for the Mbean name
    attribute-patternpattern for the attribute name
    [m]show meta information
    [i:]specify the interval to refresh attribute value (ms)
    [n:]execution times
    [E]turn on regex matching while the default mode is wildcard matching. Only effect on the attribute name

    Usage

    show all Mbean names:

    mbean
    +

    show meta data of Mbean:

    mbean -m java.lang:type=Threading
    +

    show attributes of Mbean:

    mbean java.lang:type=Threading
    +

    Mbean name support wildcard matcher:

    mbean java.lang:type=Th*
    +

    WARNING

    Notes:ObjectName matching rules differ from normal wildcards, Reference resources:javax.management.ObjectNameopen in new window

    Wildcards match specific attributes:

    mbean java.lang:type=Threading *Count
    +

    Switch to regular matching using the -E command:

    mbean -E java.lang:type=Threading PeakThreadCount|ThreadCount|DaemonThreadCount
    +

    Real-time monitoring using -i command:

    mbean -i 1000 java.lang:type=Threading *Count
    +

    Real-time monitoring using -i with number of times the command will be executed using -n command (100 times by default):

    mbean -i 1000 -n 50 java.lang:type=Threading *Count
    +
    + + + diff --git a/3.x/en/doc/mc.html b/3.x/en/doc/mc.html new file mode 100644 index 00000000000..6cacba527c7 --- /dev/null +++ b/3.x/en/doc/mc.html @@ -0,0 +1,48 @@ + + + + + + + + + mc | arthas + + + + +
    Table of Contents

    mc

    mc-retransform online tutorialopen in new window

    Usage

    TIP

    Memory compiler, compiles .java files into .class files in memory.

    mc /tmp/Test.java
    +

    The classloader can be specified with the -c option:

    mc -c 327a647b /tmp/Test.java
    +

    You can also specify the ClassLoader with the --classLoaderClass option:

    $ mc --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader /tmp/UserController.java -d /tmp
    +Memory compiler output:
    +/tmp/com/example/demo/arthas/user/UserController.class
    +Affect(row-cnt:1) cost in 346 ms
    +

    The output directory can be specified with the -d option:

    mc -d /tmp/output /tmp/ClassA.java /tmp/ClassB.java
    +

    After compiling the .class file, you can use the retransform command to re-define the loaded classes in JVM.

    WARNING

    Note that the mc command may fail. If the compilation fails, the .class file can be compiled locally and uploaded to the server. Refer to the retransform command description for details.

    + + + diff --git a/3.x/en/doc/memory.html b/3.x/en/doc/memory.html new file mode 100644 index 00000000000..772b0d3c5a9 --- /dev/null +++ b/3.x/en/doc/memory.html @@ -0,0 +1,55 @@ + + + + + + + + + memory | arthas + + + + +
    Table of Contents

    memory

    View the JVM memory information.

    Usage

    $ memory
    +Memory                           used      total      max        usage
    +heap                             32M       256M       4096M      0.79%
    +g1_eden_space                    11M       68M        -1         16.18%
    +g1_old_gen                       17M       184M       4096M      0.43%
    +g1_survivor_space                4M        4M         -1         100.00%
    +nonheap                          35M       39M        -1         89.55%
    +codeheap_'non-nmethods'          1M        2M         5M         20.53%
    +metaspace                        26M       27M        -1         96.88%
    +codeheap_'profiled_nmethods'     4M        4M         117M       3.57%
    +compressed_class_space           2M        3M         1024M      0.29%
    +codeheap_'non-profiled_nmethods' 685K      2496K      120032K    0.57%
    +mapped                           0K        0K         -          0.00%
    +direct                           48M       48M        -          100.00%
    +
    + + + diff --git a/3.x/en/doc/monitor.html b/3.x/en/doc/monitor.html new file mode 100644 index 00000000000..5cf240b78d2 --- /dev/null +++ b/3.x/en/doc/monitor.html @@ -0,0 +1,121 @@ + + + + + + + + + monitor | arthas + + + + +
    Table of Contents

    monitor

    monitor online tutorialopen in new window

    TIP

    Monitor method invocation.

    Monitor invocation for the method matched with class-pattern and method-pattern and filter by condition-expression.

    monitor is not a command returning immediately.

    A command returning immediately is a command immediately returns with the result after the command is input, while a non-immediate returning command will keep outputting the information from the target JVM process until user presses Ctrl+C.

    On Arthas's server side, the command is running as a background job, but the weaved code will not take further effect once the job is terminated, therefore, it will not impact the performance after the job quits. Furthermore, Arthas is designed to have no side effect to the business logic.

    Items to monitor

    ItemSpecification
    timestamptimestamp
    classJava class
    methodmethod (constructor and regular methods)
    totalcalling times
    successsuccess count
    failfailure count
    rtaverage RT
    fail-ratefailure ratio

    Parameters

    Parameter [c:] stands for cycles of statistics. Its value is an integer value in seconds.

    NameSpecification
    class-patternpattern for the class name
    method-patternpattern for the method name
    condition-expressioncondition expression for filtering method calls
    [E]turn on regex matching while the default is wildcard matching
    [c:]cycle of statistics, the default value: 120s
    [b]evaluate the condition-expression before method invoke
    [m <arg>]Specify the max number of matched Classes, the default value is 50. Long format is [maxMatch <arg>].

    Usage

    $ monitor -c 5 demo.MathGame primeFactors
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 94 ms.
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:38  demo.MathGame  primeFactors  5      1        4     1.15        80.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:43  demo.MathGame  primeFactors  5      3        2     42.29       40.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:48  demo.MathGame  primeFactors  5      3        2     67.92       40.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:53  demo.MathGame  primeFactors  5      2        3     0.25        60.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:06:58  demo.MathGame  primeFactors  1      1        0     0.45        0.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2018-12-03 19:07:03  demo.MathGame  primeFactors  2      2        0     3182.72     0.00%
    +

    Specify the max number of matched Classes

    $ monitor -c 1 -m 1 demo.MathGame primeFactors
    +Press Q or Ctrl+C to abort.
    +Affect(class count:1 , method count:1) cost in 384 ms, listenerId: 6.
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2022-12-25 21:12:58  demo.MathGame  primeFactors  1      1        0     0.18        0.00%
    +
    + timestamp            class          method        total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2022-12-25 21:12:59  demo.MathGame  primeFactors  0      0        0     0.00       0.00%
    +

    Evaluate condition-express to filter method (after method call)

    monitor -c 5 demo.MathGame primeFactors "params[0] <= 2"
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 19 ms, listenerId: 5
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +-----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:36  demo.MathGame  primeFactors    5       3       2      0.09       40.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:41  demo.MathGame  primeFactors    5       2       3      0.11       60.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:46  demo.MathGame  primeFactors    5       1       4      0.06       80.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:51  demo.MathGame  primeFactors    5       1       4      0.12       80.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:56  demo.MathGame  primeFactors    5       3       2      0.15       40.00%
    +

    Evaluate condition-express to filter method (before method call)

    monitor -b -c 5 com.test.testes.MathGame primeFactors "params[0] <= 2"
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 21 ms, listenerId: 4
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:41:57  demo.MathGame  primeFactors    1       0        1      0.10      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:02  demo.MathGame  primeFactors    3       0        3      0.06      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:07  demo.MathGame  primeFactors    2       0        2      0.06      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:12  demo.MathGame  primeFactors    1       0        1      0.05      100.00%
    +
    + timestamp            class          method         total  success  fail  avg-rt(ms)  fail-rate
    +----------------------------------------------------------------------------------------------
    + 2020-09-02 09:42:17  demo.MathGame  primeFactors    2       0        2      0.10      100.00%
    +
    + + + diff --git a/3.x/en/doc/ognl.html b/3.x/en/doc/ognl.html new file mode 100644 index 00000000000..b92986dd469 --- /dev/null +++ b/3.x/en/doc/ognl.html @@ -0,0 +1,86 @@ + + + + + + + + + ognl | arthas + + + + +
    Table of Contents

    ognl

    ognl online tutorialopen in new window

    TIP

    Execute ognl expression.

    Since 3.0.5.

    Parameters

    NameSpecification
    expressexpression to be executed
    [c:]The hashcode of the ClassLoader that executes the expression, default ClassLoader is SystemClassLoader.
    [classLoaderClass:]The class name of the ClassLoader that executes the expression.
    [x]Expand level of object (1 by default).

    Usage

    Call static method:

    $ ognl '@java.lang.System@out.println("hello")'
    +null
    +

    Get static field:

    $ ognl '@demo.MathGame@random'
    +@Random[
    +    serialVersionUID=@Long[3905348978240129619],
    +    seed=@AtomicLong[125451474443703],
    +    multiplier=@Long[25214903917],
    +    addend=@Long[11],
    +    mask=@Long[281474976710655],
    +    DOUBLE_UNIT=@Double[1.1102230246251565E-16],
    +    BadBound=@String[bound must be positive],
    +    BadRange=@String[bound must be greater than origin],
    +    BadSize=@String[size must be non-negative],
    +    seedUniquifier=@AtomicLong[-3282039941672302964],
    +    nextNextGaussian=@Double[0.0],
    +    haveNextNextGaussian=@Boolean[false],
    +    serialPersistentFields=@ObjectStreamField[][isEmpty=false;size=3],
    +    unsafe=@Unsafe[sun.misc.Unsafe@28ea5898],
    +    seedOffset=@Long[24],
    +]
    +

    Specify ClassLoader by hashcode:

    $ classloader -t
    ++-BootstrapClassLoader
    ++-jdk.internal.loader.ClassLoaders$PlatformClassLoader@301ec38b
    +  +-com.taobao.arthas.agent.ArthasClassloader@472067c7
    +  +-jdk.internal.loader.ClassLoaders$AppClassLoader@4b85612c
    +    +-org.springframework.boot.loader.LaunchedURLClassLoader@7f9a81e8
    +
    +$ ognl -c 7f9a81e8 @org.springframework.boot.SpringApplication@logger
    +@Slf4jLocationAwareLog[
    +    FQCN=@String[org.apache.commons.logging.LogAdapter$Slf4jLocationAwareLog],
    +    name=@String[org.springframework.boot.SpringApplication],
    +    logger=@Logger[Logger[org.springframework.boot.SpringApplication]],
    +]
    +$
    +

    Note that the hashcode changes, you need to check the current ClassLoader information first, and extract the hashcode corresponding to the ClassLoader.

    For ClassLoader with only unique instance, it can be specified by class name, which is more convenient to use:

    $ ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader  @org.springframework.boot.SpringApplication@logger
    +@Slf4jLocationAwareLog[
    +    FQCN=@String[org.apache.commons.logging.LogAdapter$Slf4jLocationAwareLog],
    +    name=@String[org.springframework.boot.SpringApplication],
    +    logger=@Logger[Logger[org.springframework.boot.SpringApplication]],
    +]
    +

    Execute a multi-line expression, and return a list:

    $ ognl '#value1=@System@getProperty("java.home"), #value2=@System@getProperty("java.runtime.name"), {#value1, #value2}'
    +@ArrayList[
    +    @String[/opt/java/8.0.181-zulu/jre],
    +    @String[OpenJDK Runtime Environment],
    +]
    +
    + + + diff --git a/3.x/en/doc/options.html b/3.x/en/doc/options.html new file mode 100644 index 00000000000..5fbab596fcd --- /dev/null +++ b/3.x/en/doc/options.html @@ -0,0 +1,101 @@ + + + + + + + + + options | arthas + + + + +
    Table of Contents

    options

    options online tutorialopen in new window

    TIP

    Global options

    NameDefault ValueDescription
    unsafefalsewhether to enhance to system-level class. Use it with caution since JVM may hang
    dumpfalsewhether to dump enhanced class to the external files. If it's on, enhanced class will be dumped into /${application dir}/arthas-class-dump/, the specific output path will be output in the console
    batch-re-transformtruewhether to re-transform matched classes in batch
    json-formatfalsewhether to output in JSON format
    disable-sub-classfalsewhether to enable matching child classes. The default value is true. If exact match is desire, turn off this flag
    support-default-methodtruewhether to enable matching default method in interface. The default value is true. Refer to #1105open in new window
    save-resultfalsewhether to save execution result. All execution results will be saved to ~/logs/arthas-cache/result.log when it's turned on
    job-timeout1ddefault timeout for background jobs. Background job will be terminated once it's timed out (i.e. 1d, 2h, 3m, 25s)
    print-parent-fieldstrueThis option enables print files in parent class, default value true.
    verbosefalseThis option enables print verbose information
    stricttruewhether to enable strict mode

    View all options

    $ options
    + LEVEL  TYPE    NAME          VALUE   SUMMARY               DESCRIPTION
    +-------------------------------------------------------------------------------------------------------
    + 0      boolea  unsafe        false   Option to support sy  This option enables to proxy functionality
    +        n                             stem-level class       of JVM classes. Due to serious security r
    +                                                            isk a JVM crash is possibly be introduced.
    +                                                             Do not activate it unless you are able to
    +                                                             manage.
    + 1      boolea  dump          false   Option to dump the e  This option enables the enhanced classes t
    +        n                             nhanced classes       o be dumped to external file for further d
    +                                                            e-compilation and analysis.
    + 1      boolea  batch-re-tra  true    Option to support ba  This options enables to reTransform classe
    +        n       nsform                tch reTransform Clas  s with batch mode.
    +                                      s
    + 2      boolea  json-format   false   Option to support JS  This option enables to format object outpu
    +        n                             ON format of object   t with JSON when -x option selected.
    +                                      output
    + 1      boolea  disable-sub-  false   Option to control in  This option disable to include sub class w
    +        n       class                 clude sub class when  hen matching class.
    +                                       class matching
    + 1      boolea  support-defa  true    Option to control in  This option disable to include default met
    +        n       ult-method            clude default method  hod in interface when matching class.
    +                                       in interface when c
    +                                      lass matching
    + 1      boolea  save-result   false   Option to print comm  This option enables to save each command's
    +        n                             and's result to log    result to log file, which path is ${user.
    +                                      file                  home}/logs/arthas-cache/result.log.
    + 2      String  job-timeout   1d      Option to job timeou  This option setting job timeout,The unit c
    +                                      t                     an be d, h, m, s for day, hour, minute, se
    +                                                            cond. 1d is one day in default
    + 1      boolea  print-parent  true    Option to print all   This option enables print files in parent
    +        n       -fields               fileds in parent cla  class, default value true.
    +                                      ss
    + 1      boolea  verbose       false   Option to print verb  This option enables print verbose informat
    +        n                             ose information       ion, default value false.
    + 1      boolea  strict        true    Option to strict mod  By default, strict mode is true, not allow
    +        n                             e                     ed to set object properties. Want to set o
    +                                                            bject properties, execute `options strict
    +                                                            false`
    +

    Get special option value

    $ options json-format
    + LEVEL  TYPE  NAME         VALUE  SUMMARY             DESCRIPTION
    +--------------------------------------------------------------------------------------------
    + 2      bool  json-format  false  Option to support   This option enables to format object
    +        ean                       JSON format of obj  output with JSON when -x option selec
    +                                  ect output          ted.
    +

    TIP

    By default, json-format is false. When set json-format to true, commands like wathc/tt will print result with json format.

    Set special option value

    For example, to enable saving command execution result, input the command below:

    $ options save-result true
    + NAME         BEFORE-VALUE  AFTER-VALUE
    +----------------------------------------
    + save-result  false         true
    +

    Set unsafe to true to enhance the classes under the java.* package

    By default, watch/trace/tt/trace/monitor command do not support classes under java.* package. You can set unsafe to true to enhance the classes under the java.* package.

    $ options unsafe true
    + NAME    BEFORE-VALUE  AFTER-VALUE
    +-----------------------------------
    + unsafe  false         true
    +
    $ watch java.lang.invoke.Invokers callSiteForm
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 61 ms, listenerId: 1
    +

    Turn off strict mode, allow setting object properties in ognl expressions

    TIP

    since 3.6.0

    For new users, there may be misuses when writing ognl expressions.

    For example, for Student, when judging the age is equal to 18, the conditional expression may be mistakenly written as target.age=18, which actually sets the age of the current object to 18. The correct spelling is target.age==18.

    In order to prevent misuse like the above, Arthas enables strict mode by default, in ognl expressions, it is forbidden to update the property of the object or call the setter method.

    Take MathGame as an example, the following error message will appear.

    $ watch demo.MathGame primeFactors 'target' 'target.illegalArgumentCount=1'
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 206 ms, listenerId: 1
    +watch failed, condition is: target.illegalArgumentCount=1, express is: target, By default, strict mode is true, not allowed to set object properties. Want to set object properties, execute `options strict false`, visit /Users/admin/logs/arthas/arthas.log for more details.
    +

    If the user want to change the object properties in the ognl expression, you can execute options strict false to turn off the strict mode.

    • For more information, please refer to: https://github.com/alibaba/arthas/issues/2128
    + + + diff --git a/3.x/en/doc/perfcounter.html b/3.x/en/doc/perfcounter.html new file mode 100644 index 00000000000..8d761f354e2 --- /dev/null +++ b/3.x/en/doc/perfcounter.html @@ -0,0 +1,60 @@ + + + + + + + + + perfcounter | arthas + + + + +
    Table of Contents

    perfcounter

    perfcounter online tutorialopen in new window

    TIP

    Check the current JVM Perf Counter information.

    Usage

    $ perfcounter
    + java.ci.totalTime                            2325637411
    + java.cls.loadedClasses                       3403
    + java.cls.sharedLoadedClasses                 0
    + java.cls.sharedUnloadedClasses               0
    + java.cls.unloadedClasses                     0
    + java.property.java.version                   11.0.4
    + java.property.java.vm.info                   mixed mode
    + java.property.java.vm.name                   OpenJDK 64-Bit Server VM
    +...
    +

    Print more information with the -d option:

    $ perfcounter -d
    + Name                                   Variability   Units        Value
    +---------------------------------------------------------------------------------
    + java.ci.totalTime                      Monotonic     Ticks        3242526906
    + java.cls.loadedClasses                 Monotonic     Events       3404
    + java.cls.sharedLoadedClasses           Monotonic     Events       0
    + java.cls.sharedUnloadedClasses         Monotonic     Events       0
    + java.cls.unloadedClasses               Monotonic     Events       0
    +

    JVM above JDK9

    If the information is not printed, when the application starts, add the following parameters:

    --add-opens java.base/jdk.internal.perf=ALL-UNNAMED --add-exports java.base/jdk.internal.perf=ALL-UNNAMED --add-opens java.management/sun.management.counter.perf=ALL-UNNAMED --add-opens java.management/sun.management.counter=ALL-UNNAMED
    +
    + + + diff --git a/3.x/en/doc/profiler.html b/3.x/en/doc/profiler.html new file mode 100644 index 00000000000..2b76c05749e --- /dev/null +++ b/3.x/en/doc/profiler.html @@ -0,0 +1,93 @@ + + + + + + + + + profiler | arthas + + + + +
    Table of Contents

    profiler

    profiler online tutorialopen in new window

    TIP

    Generate a flame graph using async-profileropen in new window

    The profiler command supports generate flame graph for application hotspots.

    The basic usage of the profiler command is profiler action [actionArg]

    Supported Options

    NameSpecification
    actionAction to execute
    actionArgAttribute name pattern
    [i:]sampling interval in ns (default: 10'000'000, i.e. 10 ms)
    [f:]dump output to specified directory
    [d:]run profiling for specified seconds
    [e:]which event to trace (cpu, alloc, lock, cache-misses etc.), default value is cpu

    Start profiler

    $ profiler start
    +Started [cpu] profiling
    +

    TIP

    By default, the sample event is cpu. Can be specified with the --event parameter.

    Get the number of samples collected

    $ profiler getSamples
    +23
    +

    View profiler status

    $ profiler status
    +[cpu] profiling is running for 4 seconds
    +

    Can view which event and sampling time.

    Stop profiler

    Generating html format results

    By default, the result file is html format. You can also specify it with the --format parameter:

    $ profiler stop --format html
    +profiler output file: /tmp/test/arthas-output/20211207-111550.html
    +OK
    +

    Or use the file name name format in the --file parameter. For example, --file /tmp/result.html.

    View profiler results under arthas-output via browser

    By default, arthas uses port 3658, which can be opened: http://localhost:3658/arthas-output/open in new window View the arthas-output directory below Profiler results:

    Click to view specific results:

    TIP

    If using the chrome browser, may need to be refreshed multiple times.

    Profiler supported events

    Under different platforms and different OSs, the supported events are different. For example, under macos:

    $ profiler list
    +Basic events:
    +  cpu
    +  alloc
    +  lock
    +  wall
    +  itimer
    +

    Under linux

    $ profiler list
    +Basic events:
    +  cpu
    +  alloc
    +  lock
    +  wall
    +  itimer
    +Perf events:
    +  page-faults
    +  context-switches
    +  cycles
    +  instructions
    +  cache-references
    +  cache-misses
    +  branches
    +  branch-misses
    +  bus-cycles
    +  L1-dcache-load-misses
    +  LLC-load-misses
    +  dTLB-load-misses
    +  mem:breakpoint
    +  trace:tracepoint
    +

    If you encounter the permissions/configuration issues of the OS itself and then missing some events, you can refer to the async-profileropen in new window documentation.

    You can use the --event parameter to specify the event to sample, such as sampling the alloc event:

    $ profiler start --event alloc
    +

    Resume sampling

    $ profiler resume
    +Started [cpu] profiling
    +

    The difference between start and resume is: start is the new start sampling, resume will retain the data of the last stop.

    You can verify the number of samples by executing profiler getSamples.

    Use execute action to execute complex commands

    For example, start sampling:

    profiler execute 'start,framebuf=5000000'
    +

    Stop sampling and save to the specified file:

    profiler execute 'stop,file=/tmp/result.html'
    +

    Specific format reference: arguments.cppopen in new window

    View all supported actions

    $ profiler actions
    +Supported Actions: [resume, dumpCollapsed, getSamples, start, list, execute, version, stop, load, dumpFlat, actions, dumpTraces, status]
    +

    View version

    $ profiler version
    +Async-profiler 1.6 built on Sep  9 2019
    +Copyright 2019 Andrei Pangin
    +

    Configure framebuf option

    TIP

    you encounter [frame_buffer_overflow] in the generated result, you need to increase the framebuf (the default value is 1'000'000), which can be configured explicitly, such as:

    profiler start --framebuf 5000000
    +

    Configure include/exclude to filter data

    If the application is complex and generates a lot of content, and you want to focus on only part of the data, you can filter by include/exclude. such as

    profiler start --include'java/*' --include'demo/*' --exclude'*Unsafe.park*'
    +

    Both include/exclude support setting multiple values, but need to be configured at the end of the command line.

    Specify execution time

    For example, if you want the profiler to automatically end after 300 seconds, you can specify it with the -d/--duration parameter:

    profiler start --duration 300
    +

    Generate jfr format result

    Note that jfr only supports configuration at start. If it is specified at stop, it will not take effect.

    profiler start --file /tmp/test.jfr
    +

    The file parameter supports some variables:

    • Timestamp: --file /tmp/test-%t.jfr
    • Process ID: --file /tmp/test-%p.jfr

    The generated results can be viewed with tools that support the jfr format. such as:

    • JDK Mission Control: https://github.com/openjdk/jmc
    • JProfiler: https://github.com/alibaba/arthas/issues/1416

    The 'unknown' in profiler result

    • https://github.com/jvm-profiling-tools/async-profiler/discussions/409
    + + + diff --git a/3.x/en/doc/pwd.html b/3.x/en/doc/pwd.html new file mode 100644 index 00000000000..43fc376279b --- /dev/null +++ b/3.x/en/doc/pwd.html @@ -0,0 +1,42 @@ + + + + + + + + + pwd | arthas + + + + + + + + diff --git a/3.x/en/doc/quick-start.html b/3.x/en/doc/quick-start.html new file mode 100644 index 00000000000..5c4390ce5fe --- /dev/null +++ b/3.x/en/doc/quick-start.html @@ -0,0 +1,205 @@ + + + + + + + + + Quick Start | arthas + + + + +
    Table of Contents

    Quick Start

    You can practice it yourself by following the instructions below, or you can use our online tutorialsopen in new window to get started quickly.

    1. Start math-game

    curl -O https://arthas.aliyun.com/math-game.jar
    +java -jar math-game.jar
    +

    math-game is a simple program that generates a random number every second, then it finds all prime factors of that number.

    The source code of math-game: Viewopen in new window

    2. Start Arthas

    Linux/Unix/Mac

    Execute the following command in the command line:

    curl -O https://arthas.aliyun.com/arthas-boot3.jar
    +java -jar arthas-boot3.jar
    +
    • The user to run this command MUST have the same privilege as the owner of the target process, as a simple example you can try the following command if the target process is managed by user admin: sudo su admin && java -jar arthas-boot3.jar or sudo -u admin -EH java -jar arthas-boot3.jar
    • If you cannot be able to attach to the target process, please check the logs under ~/logs/arthas for troubleshooting.
    • java -jar arthas-boot3.jar -h print usage.

    Select the target Java process to attach:

    $ $ java -jar arthas-boot3.jar
    +* [1]: 35542
    +  [2]: 71560 math-game.jar
    +

    The math-game process is the second as shown above, press '2' then 'Enter'. Arthas will attach to the target process, and start to output:

    [INFO] Try to attach process 71560
    +[INFO] Attach process 71560 success.
    +[INFO] arthas-client connect 127.0.0.1 3658
    +  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
    +|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
    +`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'
    +
    +
    +wiki: https://arthas.aliyun.com/3.x/doc
    +version: 3.0.5.20181127201536
    +pid: 71560
    +time: 2018-11-28 19:16:24
    +
    +$
    +

    3. Check the Dashboard

    Type 'dashboard' and hit 'ENTER', a brief report on the current process will be shown as below, pls. Ctrl+C to stop:

    $ dashboard
    +ID     NAME                   GROUP          PRIORI STATE  %CPU    TIME   INTERRU DAEMON
    +17     pool-2-thread-1        system         5      WAITIN 67      0:0    false   false
    +27     Timer-for-arthas-dashb system         10     RUNNAB 32      0:0    false   true
    +11     AsyncAppender-Worker-a system         9      WAITIN 0       0:0    false   true
    +9      Attach Listener        system         9      RUNNAB 0       0:0    false   true
    +3      Finalizer              system         8      WAITIN 0       0:0    false   true
    +2      Reference Handler      system         10     WAITIN 0       0:0    false   true
    +4      Signal Dispatcher      system         9      RUNNAB 0       0:0    false   true
    +26     as-command-execute-dae system         10     TIMED_ 0       0:0    false   true
    +13     job-timeout            system         9      TIMED_ 0       0:0    false   true
    +1      main                   main           5      TIMED_ 0       0:0    false   false
    +14     nioEventLoopGroup-2-1  system         10     RUNNAB 0       0:0    false   false
    +18     nioEventLoopGroup-2-2  system         10     RUNNAB 0       0:0    false   false
    +23     nioEventLoopGroup-2-3  system         10     RUNNAB 0       0:0    false   false
    +15     nioEventLoopGroup-3-1  system         10     RUNNAB 0       0:0    false   false
    +Memory             used   total max    usage GC
    +heap               32M    155M  1820M  1.77% gc.ps_scavenge.count  4
    +ps_eden_space      14M    65M   672M   2.21% gc.ps_scavenge.time(m 166
    +ps_survivor_space  4M     5M    5M           s)
    +ps_old_gen         12M    85M   1365M  0.91% gc.ps_marksweep.count 0
    +nonheap            20M    23M   -1           gc.ps_marksweep.time( 0
    +code_cache         3M     5M    240M   1.32% ms )
    +Runtime
    +os.name                Mac OS X
    +os.version             10.13.4
    +java.version           1.8.0_162
    +java.home              /Library/Java/JavaVir
    +                       tualMachines/jdk1.8.0
    +                       _162.jdk/Contents/Hom
    +                       e/jre
    +

    4. Get the Main Class of the math-game process with the thread command

    thread 1 will print the stack of the thread with ID 1, which usually the main function thread.

    $ thread 1 | grep 'main('
    +    at demo.MathGame.main(MathGame.java:17)
    +

    5. Decompile Main Class with jad command

    $ jad demo.MathGame
    +
    +ClassLoader:
    ++-sun.misc.Launcher$AppClassLoader@3d4eac69
    +  +-sun.misc.Launcher$ExtClassLoader@66350f69
    +
    +Location:
    +/tmp/math-game.jar
    +
    +/*
    + * Decompiled with CFR 0_132.
    + */
    +package demo;
    +
    +import java.io.PrintStream;
    +import java.util.ArrayList;
    +import java.util.Iterator;
    +import java.util.List;
    +import java.util.Random;
    +import java.util.concurrent.TimeUnit;
    +
    +public class MathGame {
    +    private static Random random = new Random();
    +    private int illegalArgumentCount = 0;
    +
    +    public static void main(String[] args) throws InterruptedException {
    +        MathGame game = new MathGame();
    +        do {
    +            game.run();
    +            TimeUnit.SECONDS.sleep(1L);
    +        } while (true);
    +    }
    +
    +    public void run() throws InterruptedException {
    +        try {
    +            int number = random.nextInt();
    +            List<Integer> primeFactors = this.primeFactors(number);
    +            MathGame.print(number, primeFactors);
    +        }
    +        catch (Exception e) {
    +            System.out.println(String.format("illegalArgumentCount:%3d, ", this.illegalArgumentCount) + e.getMessage());
    +        }
    +    }
    +
    +    public static void print(int number, List<Integer> primeFactors) {
    +        StringBuffer sb = new StringBuffer("" + number + "=");
    +        Iterator<Integer> iterator = primeFactors.iterator();
    +        while (iterator.hasNext()) {
    +            int factor = iterator.next();
    +            sb.append(factor).append('*');
    +        }
    +        if (sb.charAt(sb.length() - 1) == '*') {
    +            sb.deleteCharAt(sb.length() - 1);
    +        }
    +        System.out.println(sb);
    +    }
    +
    +    public List<Integer> primeFactors(int number) {
    +        if (number < 2) {
    +            ++this.illegalArgumentCount;
    +            throw new IllegalArgumentException("number is: " + number + ", need >= 2");
    +        }
    +        ArrayList<Integer> result = new ArrayList<Integer>();
    +        int i = 2;
    +        while (i <= number) {
    +            if (number % i == 0) {
    +                result.add(i);
    +                number /= i;
    +                i = 2;
    +                continue;
    +            }
    +            ++i;
    +        }
    +        return result;
    +    }
    +}
    +
    +Affect(row-cnt:1) cost in 970 ms.
    +

    6. watch

    Use 'watch' to view the return object of demo.MathGame#primeFactors:

    $ watch demo.MathGame primeFactors returnObj
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 107 ms.
    +ts=2018-11-28 19:22:30; [cost=1.715367ms] result=null
    +ts=2018-11-28 19:22:31; [cost=0.185203ms] result=null
    +ts=2018-11-28 19:22:32; [cost=19.012416ms] result=@ArrayList[
    +    @Integer[5],
    +    @Integer[47],
    +    @Integer[2675531],
    +]
    +ts=2018-11-28 19:22:33; [cost=0.311395ms] result=@ArrayList[
    +    @Integer[2],
    +    @Integer[5],
    +    @Integer[317],
    +    @Integer[503],
    +    @Integer[887],
    +]
    +ts=2018-11-28 19:22:34; [cost=10.136007ms] result=@ArrayList[
    +    @Integer[2],
    +    @Integer[2],
    +    @Integer[3],
    +    @Integer[3],
    +    @Integer[31],
    +    @Integer[717593],
    +]
    +ts=2018-11-28 19:22:35; [cost=29.969732ms] result=@ArrayList[
    +    @Integer[5],
    +    @Integer[29],
    +    @Integer[7651739],
    +]
    +

    Pls. refer to Arthas advancedopen in new window for more information.

    7. Exit Arthas

    Use quit or exit to disconnect from the current process. The Arthas instance attached to the target process continues to live inside the process, and its port is standby for further connection.

    Use stop command to have Arthas completely quit from the target process.

    + + + diff --git a/3.x/en/doc/quit.html b/3.x/en/doc/quit.html new file mode 100644 index 00000000000..7d2211c08a5 --- /dev/null +++ b/3.x/en/doc/quit.html @@ -0,0 +1,41 @@ + + + + + + + + + quit | arthas + + + + + + + + diff --git a/3.x/en/doc/redefine.html b/3.x/en/doc/redefine.html new file mode 100644 index 00000000000..daad9938047 --- /dev/null +++ b/3.x/en/doc/redefine.html @@ -0,0 +1,75 @@ + + + + + + + + + redefine | arthas + + + + +
    Table of Contents

    redefine

    TIP

    Recommend to use the retransform command.

    mc-redefine online tutorialopen in new window

    TIP

    Load the external *.class files to re-define the loaded classes in JVM.

    Reference: Instrumentation#redefineClassesopen in new window

    Frequently asked questions

    TIP

    Recommend to use the retransform command.

    • The class of redefine cannot modify, add or delete the field and method of the class, including method parameters, method names and return values.

    • If mc fails, you can compile the class file in the local development environment, upload it to the target system, and use redefine to hot load the class.

    • At present, redefine conflicts with watch / trace / jad / tt commands. Reimplementing redefine function in the future will solve this problem.

    WARNING

    Notes: Re-defined classes cannot be restored. There are chances that redefining may fail due to some reasons, for example: there's new field introduced in the new version of the class, pls. refer to JDK's documentation for the limitations.

    TIP

    The reset command is not valid for classes that have been processed by redefine. If you want to reset, you need redefine the original bytecode.

    TIP

    The redefine command will conflict with the jad/watch/trace/monitor/tt commands. After executing redefine, if you execute the above mentioned command, the bytecode of the class will be reset. The reason is that in the JDK redefine and retransform are different mechanisms. When two mechanisms are both used to update the bytecode, only the last modified will take effect.

    Options

    NameSpecification
    [c:]hashcode of the class loader
    [classLoaderClass:]The class name of the ClassLoader that executes the expression.

    Usage

    redefine /tmp/Test.class
    +redefine -c 327a647b /tmp/Test.class /tmp/Test\$Inner.class
    +redefine --classLoaderClass sun.misc.Launcher$AppClassLoader /tmp/Test.class /tmp/Test\$Inner.class
    +

    Use with the jad/mc command

    jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
    +
    +mc /tmp/UserController.java -d /tmp
    +
    +redefine /tmp/com/example/demo/arthas/user/UserController.class
    +
    • Use jad command to decompile bytecode, and then you can use other editors, such as vim to modify the source code.
    • mc command to compile the modified code
    • Load new bytecode with redefine command

    Tips for uploading .class files to the server

    The mc command may fail. You can modify the code locally, compile it, and upload it to the server. Some servers do not allow direct uploading files, you can use the base64 command to bypass.

    1. Convert the .class file to base64 first, then save it as result.txt

      Base64 < Test.class > result.txt
      +
    2. Login the server, create and edit result.txt, copy the local content, paste and save

    3. Restore result.txt on the server to .class

      Base64 -d < result.txt > Test.class
      +
    4. Use the md5 command to verify that the .class files are consistent.

    Restrictions of the redefine command

    • New field/method is not allowed
    • The function that is running, no exit can not take effect, such as the new System.out.println added below, only the run() function will take effect.
    public class MathGame {
    +    public static void main(String[] args) throws InterruptedException {
    +        MathGame game = new MathGame();
    +        while (true) {
    +            game.run();
    +            TimeUnit.SECONDS.sleep(1);
    +            // This doesn't work because the code keeps running in while
    +            System.out.println("in loop");
    +        }
    +    }
    +
    +    public void run() throws InterruptedException {
    +        // This works because the run() function ends completely every time
    +        System.out.println("call run()");
    +        try {
    +            int number = random.nextInt();
    +            List<Integer> primeFactors = primeFactors(number);
    +            print(number, primeFactors);
    +
    +        } catch (Exception e) {
    +            System.out.println(String.format("illegalArgumentCount:%3d, ", illegalArgumentCount) + e.getMessage());
    +        }
    +    }
    +}
    +
    + + + diff --git a/3.x/en/doc/release-notes.html b/3.x/en/doc/release-notes.html new file mode 100644 index 00000000000..2ffe867faad --- /dev/null +++ b/3.x/en/doc/release-notes.html @@ -0,0 +1,41 @@ + + + + + + + + + Release Notes | arthas + + + + +
    Table of Contents

    Release Notes

    v3.1.1

    v3.1.0

    v3.0.5

    v3.0.4

    v2017-11-03

    • [improvement] add getstatic
    • [bug] fix Arthas class loader logs loading issues
    • [improvement] introduce OGNLopen in new window to customize classloader to invoke static methods
    • [improvement] optimise termd uppercase output performance
    • [improvement] classloader compile in class loader category by default
    • [bug] fix wc counting issue
    • [improvement] disable certain JDK classes e.g. Classloader, Method, Integer and the lik
    • [improvement] quit directly when encountering incorrect OGNLopen in new window expression
    • [bug] fix pipe issues
    • [improvement] optimize command re-direct features using asynchronous log
    • [improvement] trace can filter JDK method calls

    v2017-09-22

    • [improvement] improve the error message when starting agent and server fails
    • [bug] fix some asynchronous issues

    v2017-09-11

    • [improvement] async supported
    • [improvement] optimize jad support JDK 8 and inner class
    • [bug] fix Chinese encoding issues

    v2017-05-11

    • [improvement] tt investigating/recording level one to avoid too much performance overhead
    • [bug] fix Chinese characters can not be presented issue

    v2017-05-12

    • Arthas 3.0 release 🎊

    v2016-12-09

    • [feature] as.shopen in new window support -h to print help info
    • [bug] [#121] fix leftover temp files causing Arthas cannot start issue
    • [bug] [#123] fix attach/shutdown repeatedly causing Arthas classloader leakage issue
    • [improvement] make the help info more readable
    • [bug] [#126] fix the documents links issues
    • [bug] [#122] fix the classloader filtering out sun.reflect.DelegatingClassLoader issue
    • [bug] [#129] fix classloader presenting structure issues
    • [improvement] [#125] make the Arthas log output more readable
    • [improvement] [#96] sc and more commands are supporting format as com/taobao/xxx/TestClass
    • [bug] [#124] fix the negative values of trace
    • [improvement] [#128] the output of tt will auto-expand now
    • [bug] [#130] providing more meaningful error messages when port conflicts
    • [bug] [#98] fix Arthas starting issue: when updating/downloading failed, Arthas will fail to start
    • [bug] [#139] fix agent attaching fails under some scenarios issues
    • [improvement] [#156] delay jd-core-java initialization to avoid Arthas starting failure
    • [bug] avoid thread names duplicate issue
    • [improvement] [#150] filtering by total time cost in trace
    • [bug] fix sc NPE issue when searching SystemClassloader
    • [bug] [#180] fix attach fails issues: attaching succeed at the first time, delete the Arthas installer, re-compile and package => attaching fails

    v2016-06-07

    • [bug] fix NPE when loading spy as resource
    • [improvement] locating the blocking thread
    • [improvement] print out thread in name order
    • [improvement] specify the refreshing interval when checking topN busiest threads

    v2016-04-08

    • [feature] specify refreshing interval and execution times in dashboard
    • [feature] log the command execution result
    • [feature] speed up the booting and attaching while the first attaching is even quicker by 100% than before
    • [feature] batch supported; script supported
    • [feature] interactive mode used in Arthas
    • [feature] inheritance relation included in class searching; global option disable-sub-class can be used to turn it off
    • [feature] colorful and plain text modes both supported
    • [improvement] merge exit and quit commands
    • [improvement] help info enclosed with wiki links
    • [improvement] optimize watch using flow for better UX
    • [improvement] add examples to thread
    • [improvement] auto-completion ignores character case
    • [improvement] make the UI more beautiful/friendly
    • [bug] fix trace printing too much encountering loop issues
    • [bug] fix trace node twisting issues when method throwing exceptions
    • [bug] fix injected/enhanced BootstrapClassLoader cannot locate spy issues

    v2016-03-07

    • [feature] checking the topN thread and related stack traces
    • [bug] fix Arthas starting failure in OpenJdk issues (requiring to reinstall as.shopen in new window)
    • [improvement] optimize UX

    v2016-01-18

    • [improvement] optimise jad; dump memory byte array in real time; using jd-core-java to decompile; line number presented;
    • [bug] fix checking/re-producing issues when tt is watching thread-context related methods invoking

    v2016-01-08

    • [bug] jad NPE
    • [bug] watch/monitor NPE
    • [bug] wrong escaping issues
    • [bug] wrong statistics
    • [bug] sc checking internal structure issues

    v2015-12-29

    • Arthas 2.0 Beta 💥!
    + + + diff --git a/3.x/en/doc/reset.html b/3.x/en/doc/reset.html new file mode 100644 index 00000000000..11e356aafab --- /dev/null +++ b/3.x/en/doc/reset.html @@ -0,0 +1,76 @@ + + + + + + + + + reset | arthas + + + + +
    Table of Contents

    reset

    reset online tutorialopen in new window

    TIP

    Reset all classes that have been enhanced by Arthas. These enhanced classes will also be reset when Arthas server is stop.

    Usage

    $ reset -h
    + USAGE:
    +   reset [-h] [-E] [class-pattern]
    +
    + SUMMARY:
    +   Reset all the enhanced classes
    +
    + EXAMPLES:
    +   reset
    +   reset *List
    +   reset -E .*List
    +
    + OPTIONS:
    + -h, --help                                                         this help
    + -E, --regex                                                        Enable regular expression to match (wildcard matching by default)
    + <class-pattern>                                                    Path and classname of Pattern Matching
    +

    Reset specified class

    $ trace Test test
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 57 ms.
    +`---ts=2017-10-26 17:10:33;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@14dad5dc
    +    `---[0.590102ms] Test:test()
    +
    +`---ts=2017-10-26 17:10:34;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@14dad5dc
    +    `---[0.068692ms] Test:test()
    +
    +$ reset Test
    +Affect(class-cnt:1 , method-cnt:0) cost in 11 ms.
    +

    Reset all classes

    $ trace Test test
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 15 ms.
    +`---ts=2017-10-26 17:12:06;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@14dad5dc
    +    `---[0.128518ms] Test:test()
    +
    +$ reset
    +Affect(class-cnt:1 , method-cnt:0) cost in 9 ms.
    +
    + + + diff --git a/3.x/en/doc/retransform.html b/3.x/en/doc/retransform.html new file mode 100644 index 00000000000..b201c28e200 --- /dev/null +++ b/3.x/en/doc/retransform.html @@ -0,0 +1,90 @@ + + + + + + + + + retransform | arthas + + + + +
    Table of Contents

    retransform

    mc-retransform online tutorialopen in new window

    TIP

    Load the external *.class files to retransform the loaded classes in JVM.

    Reference: Instrumentation#retransformClassesopen in new window

    Usage

       retransform /tmp/Test.class
    +   retransform -l
    +   retransform -d 1                    # delete retransform entry
    +   retransform --deleteAll             # delete all retransform entries
    +   retransform --classPattern demo.*   # triger retransform classes
    +   retransform -c 327a647b /tmp/Test.class /tmp/Test\$Inner.class
    +   retransform --classLoaderClass 'sun.misc.Launcher$AppClassLoader' /tmp/Test.class
    +

    retransform the specified .class file

    $ retransform /tmp/MathGame.class
    +retransform success, size: 1, classes:
    +demo.MathGame
    +

    Load the specified .class file, then parse out the class name, and then retransform the corresponding class loaded in the jvm. Every time a .class file is loaded, a retransform entry is recorded.

    TIP

    If retransform is executed multiple times to load the same class file, there will be multiple retransform entries.

    View retransform entry

    $ retransform -l
    +Id              ClassName       TransformCount  LoaderHash      LoaderClassName
    +1               demo.MathGame   1               null            null
    +
    • TransformCount counts the times of attempts to return the .class file corresponding to the entry in the ClassFileTransformer#transform method, but it does not mean that the transform must be successful.

    Delete the specified retransform entry

    Need to specify id:

    retransform -d 1
    +

    Delete all retransform entries

    retransform --deleteAll
    +

    Explicitly trigger retransform

    $ retransform --classPattern demo.MathGame
    +retransform success, size: 1, classes:
    +demo.MathGame
    +

    WARNING

    Note: For the same class, when there are multiple retransform entries, if retransform is explicitly triggered, the entry added last will take effect (the one with the largest id).

    Eliminate the influence of retransform

    If you want to eliminate the impact after performing retransform on a class, you need to:

    • Delete the retransform entry corresponding to this class
    • Re-trigger retransform

    TIP

    If you do not clear all retransform entries and trigger retransform again, the retransformed classes will still take effect when arthas stop.

    Use with the jad/mc command

    jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java
    +
    +mc /tmp/UserController.java -d /tmp
    +
    +retransform /tmp/com/example/demo/arthas/user/UserController.class
    +
    • Use jad command to decompile bytecode, and then you can use other editors, such as vim to modify the source code.
    • mc command to compile the modified code
    • Load new bytecode with retransform command

    Tips for uploading .class files to the server

    The mc command may fail. You can modify the code locally, compile it, and upload it to the server. Some servers do not allow direct uploading files, you can use the base64 command to bypass.

    1. Convert the .class file to base64 first, then save it as result.txt

      Base64 < Test.class > result.txt
      +
    2. Login the server, create and edit result.txt, copy the local content, paste and save

    3. Restore result.txt on the server to .class

      Base64 -d < result.txt > Test.class
      +
    4. Use the md5 command to verify that the .class files are consistent.

    Restrictions of the retransform command

    • New field/method is not allowed
    • The function that is running, no exit can not take effect, such as the new System.out.println added below, only the run() function will take effect.
    public class MathGame {
    +    public static void main(String[] args) throws InterruptedException {
    +        MathGame game = new MathGame();
    +        while (true) {
    +            game.run();
    +            TimeUnit.SECONDS.sleep(1);
    +            // This doesn't work because the code keeps running in while
    +            System.out.println("in loop");
    +        }
    +    }
    +
    +    public void run() throws InterruptedException {
    +        // This works because the run() function ends completely every time
    +        System.out.println("call run()");
    +        try {
    +            int number = random.nextInt();
    +            List<Integer> primeFactors = primeFactors(number);
    +            print(number, primeFactors);
    +
    +        } catch (Exception e) {
    +            System.out.println(String.format("illegalArgumentCount:%3d, ", illegalArgumentCount) + e.getMessage());
    +        }
    +    }
    +}
    +
    + + + diff --git a/3.x/en/doc/save-log.html b/3.x/en/doc/save-log.html new file mode 100644 index 00000000000..04ffccea256 --- /dev/null +++ b/3.x/en/doc/save-log.html @@ -0,0 +1,46 @@ + + + + + + + + + Log command outputs | arthas + + + + +
    Table of Contents

    Log command outputs

    Log command outputs online tutorialopen in new window

    TIP

    Log command outputs for later analysis

    • By default, this behavior is turned off. To enable it, execute the command below:

      $ options save-result true
      + NAME         BEFORE-VALUE  AFTER-VALUE
      +----------------------------------------
      +save-result  false         true
      +Affect(row-cnt:1) cost in 3 ms.
      +

      If the message above is output on the console, then this behavior is enabled successfully.

    • Log file path

      The command execution result will be save in {user.home}/logs/arthas-cache/result.log. Pls. clean it up regularly to save disk space.

    Use asynchronous job to log

    Reference: async

    + + + diff --git a/3.x/en/doc/sc.html b/3.x/en/doc/sc.html new file mode 100644 index 00000000000..3ab4d114957 --- /dev/null +++ b/3.x/en/doc/sc.html @@ -0,0 +1,105 @@ + + + + + + + + + sc | arthas + + + + +
    Table of Contents

    sc

    sc online tutorialopen in new window

    TIP

    Search classes loaded by JVM.

    sc stands for search class. This command can search all possible classes loaded by JVM and show their information. The supported options are: [d][E][f] and [x:].

    Supported Options

    NameSpecification
    class-patternpattern for the class name
    method-patternpattern for the method name
    [d]print the details of the current class, including its code source, class specification, its class loader and so on.
    If a class is loaded by more than one class loader, then the class details will be printed several times
    [E]turn on regex match, the default behavior is wildcards match
    [f]print the fields info of the current class, MUST be used with -d together
    [x:]specify the depth of recursive traverse the static fields, the default value is '0' - equivalent to use toString to output
    [c:]The hash code of the special class's classLoader
    [classLoaderClass:]The class name of the ClassLoader that executes the expression.
    [n:]Maximum number of matching classes with details (100 by default)
    [cs <arg>]Specify the return value of class's ClassLoader#toString(). Long format is[classLoaderStr <arg>]

    TIP

    class-patten supports full qualified class name, e.g. com.taobao.test.AAA and com/taobao/test/AAA. It also supports the format of 'com/taobao/test/AAA', so that it is convenient to directly copy class name from the exception stack trace without replacing '/' to '.'.

    TIP

    sc turns on matching sub-class match by default, that is, sc will also search the sub classes of the target class too. If exact-match is desired, pls. use options disable-sub-class true.

    Usage

    • Wildcards match search

      $ sc demo.*
      +demo.MathGame
      +Affect(row-cnt:1) cost in 55 ms.
      +
    • View class details

      $ sc -d demo.MathGame
      +class-info        demo.MathGame
      +code-source       /private/tmp/math-game.jar
      +name              demo.MathGame
      +isInterface       false
      +isAnnotation      false
      +isEnum            false
      +isAnonymousClass  false
      +isArray           false
      +isLocalClass      false
      +isMemberClass     false
      +isPrimitive       false
      +isSynthetic       false
      +simple-name       MathGame
      +modifier          public
      +annotation
      +interfaces
      +super-class       +-java.lang.Object
      +class-loader      +-sun.misc.Launcher$AppClassLoader@3d4eac69
      +                    +-sun.misc.Launcher$ExtClassLoader@66350f69
      +classLoaderHash   3d4eac69
      +
      +Affect(row-cnt:1) cost in 875 ms.
      +
    • View class fields

      $ sc -d -f demo.MathGame
      +class-info        demo.MathGame
      +code-source       /private/tmp/math-game.jar
      +name              demo.MathGame
      +isInterface       false
      +isAnnotation      false
      +isEnum            false
      +isAnonymousClass  false
      +isArray           false
      +isLocalClass      false
      +isMemberClass     false
      +isPrimitive       false
      +isSynthetic       false
      +simple-name       MathGame
      +modifier          public
      +annotation
      +interfaces
      +super-class       +-java.lang.Object
      +class-loader      +-sun.misc.Launcher$AppClassLoader@3d4eac69
      +                    +-sun.misc.Launcher$ExtClassLoader@66350f69
      +classLoaderHash   3d4eac69
      +fields            modifierprivate,static
      +                  type    java.util.Random
      +                  name    random
      +                  value   java.util.Random@522b4
      +                          08a
      +
      +                  modifierprivate
      +                  type    int
      +                  name    illegalArgumentCount
      +
      +
      +Affect(row-cnt:1) cost in 19 ms.
      +
    • Search class by ClassLoader#toString (on the premise that a ClassLoader instance whose toString() returns apo has loaded some classes including demo.MathGame, demo.MyBar, demo.MyFoo)

      $ sc -cs apo *demo*
      +demo.MathGame
      +demo.MyBar
      +demo.MyFoo
      +Affect(row-cnt:3) cost in 56 ms.
      +
    + + + diff --git a/3.x/en/doc/session.html b/3.x/en/doc/session.html new file mode 100644 index 00000000000..f5155f38efc --- /dev/null +++ b/3.x/en/doc/session.html @@ -0,0 +1,46 @@ + + + + + + + + + session | arthas + + + + +
    Table of Contents

    session

    examines the current session,show the current binded processId and the sessionId.

    TIP

    if exits tunnel server,it will also show agentId、tunnelServerUrl、connected status.

    if exits statUrl,it will also show statUrl.

    Usage

    $ session
    +  Name        Value
    +--------------------------------------------------
    + JAVA_PID    14584
    + SESSION_ID  c2073d3b-443a-4a9b-9249-0c5d24a5756c
    +
    + + + diff --git a/3.x/en/doc/sm.html b/3.x/en/doc/sm.html new file mode 100644 index 00000000000..c838d7a8f58 --- /dev/null +++ b/3.x/en/doc/sm.html @@ -0,0 +1,97 @@ + + + + + + + + + sm | arthas + + + + +
    Table of Contents

    sm

    sm online tutorialopen in new window

    TIP

    Search method from the loaded classes.

    sm stands for search method. This command can search and show method information from all loaded classes. sm can only view the methods declared on the target class, that is, methods from its parent classes are invisible.

    Options

    NameSpecification
    class-patternpattern for class name
    method-patternpattern for method name
    [d]print the details of the method
    [E]turn on regex matching while the default mode is wildcard matching
    [c:]The hash code of the special class's classLoader
    [classLoaderClass:]The class name of the ClassLoader that executes the expression.
    [n:]Maximum number of matching classes with details (100 by default)

    Usage

    View methods of java.lang.String:

    $ sm java.lang.String
    +java.lang.String-><init>
    +java.lang.String->equals
    +java.lang.String->toString
    +java.lang.String->hashCode
    +java.lang.String->compareTo
    +java.lang.String->indexOf
    +java.lang.String->valueOf
    +java.lang.String->checkBounds
    +java.lang.String->length
    +java.lang.String->isEmpty
    +java.lang.String->charAt
    +java.lang.String->codePointAt
    +java.lang.String->codePointBefore
    +java.lang.String->codePointCount
    +java.lang.String->offsetByCodePoints
    +java.lang.String->getChars
    +java.lang.String->getBytes
    +java.lang.String->contentEquals
    +java.lang.String->nonSyncContentEquals
    +java.lang.String->equalsIgnoreCase
    +java.lang.String->compareToIgnoreCase
    +java.lang.String->regionMatches
    +java.lang.String->startsWith
    +java.lang.String->endsWith
    +java.lang.String->indexOfSupplementary
    +java.lang.String->lastIndexOf
    +java.lang.String->lastIndexOfSupplementary
    +java.lang.String->substring
    +java.lang.String->subSequence
    +java.lang.String->concat
    +java.lang.String->replace
    +java.lang.String->matches
    +java.lang.String->contains
    +java.lang.String->replaceFirst
    +java.lang.String->replaceAll
    +java.lang.String->split
    +java.lang.String->join
    +java.lang.String->toLowerCase
    +java.lang.String->toUpperCase
    +java.lang.String->trim
    +java.lang.String->toCharArray
    +java.lang.String->format
    +java.lang.String->copyValueOf
    +java.lang.String->intern
    +Affect(row-cnt:44) cost in 1342 ms.
    +

    View method java.lang.String#toString details:

    $ sm -d java.lang.String toString
    + declaring-class  java.lang.String
    + method-name      toString
    + modifier         public
    + annotation
    + parameters
    + return           java.lang.String
    + exceptions
    +
    +Affect(row-cnt:1) cost in 3 ms.
    +
    + + + diff --git a/3.x/en/doc/spring-boot-starter.html b/3.x/en/doc/spring-boot-starter.html new file mode 100644 index 00000000000..f81c592f46b --- /dev/null +++ b/3.x/en/doc/spring-boot-starter.html @@ -0,0 +1,77 @@ + + + + + + + + + Arthas Spring Boot Starter | arthas + + + + +
    Table of Contents

    Arthas Spring Boot Starter

    TIP

    Support spring boot 2

    Latest Version: Viewopen in new window

    Add maven dependency:

            <dependency>
    +            <groupId>com.taobao.arthas</groupId>
    +            <artifactId>arthas-spring-boot-starter</artifactId>
    +            <version>${arthas.version}</version>
    +        </dependency>
    +

    When the application is started, spring will start arthas and attach its own process.

    Configuration properties

    For example, by configuring the tunnel server for remote management.

    arthas.agent-id=hsehdfsfghhwertyfad
    +arthas.tunnel-server=ws://47.75.156.201:7777/ws
    +

    All supported configuration: Referenceopen in new window

    TIP

    By default, arthas-spring-boot-starter will disable the stop command.

    Reference: Arthas Properties

    View Endpoint Information

    TIP

    Need to configure spring boot to expose endpoint: Referenceopen in new window.

    Assuming the endpoint port is 8080, it can be viewed via the following url.

    http://localhost:8080/actuator/arthas

    {
    +    "arthasConfigMap": {
    +        "agent-id": "hsehdfsfghhwertyfad",
    +        "tunnel-server": "ws://47.75.156.201:7777/ws",
    +    }
    +}
    +

    Non-spring boot application usage

    Non-Spring Boot applications can be used in the following ways.

            <dependency>
    +            <groupId>com.taobao.arthas</groupId>
    +            <artifactId>arthas-agent-attach</artifactId>
    +            <version>${arthas.version}</version>
    +        </dependency>
    +        <dependency>
    +            <groupId>com.taobao.arthas</groupId>
    +            <artifactId>arthas-packaging</artifactId>
    +            <version>${arthas.version}</version>
    +        </dependency>
    +
    import com.taobao.arthas.agent.attach.ArthasAgent;
    +
    +public class ArthasAttachExample {
    +
    +	public static void main(String[] args) {
    +		ArthasAgent.attach();
    +	}
    +
    +}
    +

    You can also configure properties:

            HashMap<String, String> configMap = new HashMap<String, String>();
    +        configMap.put("arthas.appName", "demo");
    +        configMap.put("arthas.tunnelServer", "ws://127.0.0.1:7777/ws");
    +        ArthasAgent.attach(configMap);
    +

    WARNING

    Note that the configuration must be camel case, which is different from the - style of spring boot. Only the spring boot application supports both camel case and - style configuration.

    + + + diff --git a/3.x/en/doc/stack.html b/3.x/en/doc/stack.html new file mode 100644 index 00000000000..da9ce70329c --- /dev/null +++ b/3.x/en/doc/stack.html @@ -0,0 +1,72 @@ + + + + + + + + + stack | arthas + + + + +
    Table of Contents

    stack

    stack online tutorialopen in new window

    TIP

    Print out the full call stack of the current method.

    Most often we know one method gets called, but we have no idea on which code path gets executed or when the method gets called since there are so many code paths to the target method. The command stack comes to rescue in this difficult situation.

    Parameters

    NameSpecification
    class-patternpattern for the class name
    method-patternpattern for the method name
    condition-expressioncondition expression
    [E]turn on regex match, the default behavior is wildcard match
    [n:]execution times
    [m <arg>]Specify the max number of matched Classes, the default value is 50. Long format is [maxMatch <arg>].

    There's one thing worthy noting here is observation expression. The observation expression supports OGNL grammar, for example, you can come up a expression like this "{params,returnObj}". All OGNL expressions are supported as long as they are legal to the grammar.

    Thanks for advice's data structure, it is possible to observe from varieties of different angles. Inside advice parameter, all necessary information for notification can be found.

    Pls. refer to core parameters in expression for more details.

    Usage

    Start Demo

    Start math-game in Quick Start.

    stack

    $ stack demo.MathGame primeFactors
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 36 ms.
    +ts=2018-12-04 01:32:19;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +

    Specify the max number of matched Classes

    $ stack demo.MathGame primeFactors -m 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count:1 , method count:1) cost in 561 ms, listenerId: 5.
    +ts=2022-12-25 21:07:07;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@b4aac2
    +    @demo.MathGame.primeFactors()
    +        at demo.MathGame.run(MathGame.java:46)
    +        at demo.MathGame.main(MathGame.java:38)
    +

    Filtering by condition expression

    $ stack demo.MathGame primeFactors 'params[0]<0' -n 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 30 ms.
    +ts=2018-12-04 01:34:27;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +
    +ts=2018-12-04 01:34:30;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +
    +Command execution times exceed limit: 2, so command will exit. You can set it with -n option.
    +

    Filtering by cost

    $ stack demo.MathGame primeFactors '#cost>5'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 35 ms.
    +ts=2018-12-04 01:35:58;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    @demo.MathGame.run()
    +        at demo.MathGame.main(MathGame.java:16)
    +
    + + + diff --git a/3.x/en/doc/start-arthas.html b/3.x/en/doc/start-arthas.html new file mode 100644 index 00000000000..71ebd8075f2 --- /dev/null +++ b/3.x/en/doc/start-arthas.html @@ -0,0 +1,58 @@ + + + + + + + + + Start Arthas | arthas + + + + +
    Table of Contents

    Start Arthas

    Interactive Mode

    ./as3.sh
    +
    ➜  bin git:(develop) ✗ ./as3.sh
    +Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
    +  [1]: 3088 org.jetbrains.idea.maven.server.RemoteMavenServer
    +* [2]: 12872 org.apache.catalina.startup.Bootstrap
    +  [3]: 2455
    +Attaching to 12872...
    +  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
    +|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
    +`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'
    +$
    +

    Non-Interactive Mode

    Startup script is as follows:

    ./as3.sh <PID>[@IP:PORT]
    +

    Parameter Description

    • PID: Target Java process ID (Make sure that the user executing the command has sufficient permissions to operate the target Java process.)
    • IP: The address that Arthas Server listens on, the default value is 127.0.0.1. Arthas allows multiple users to access simultaneously without interfering with each other.
    • PORT: Arthas Server port,the default value is 3658

    Sample

    • If IP and PORT are not specified, then the default values are 127.0.0.1 and 3658

      ./as3.sh 12345

      Equivalent to:

      ./as3.sh 12356@127.0.0.1:3658

    Remote Diagnosis

    After starting Arthas Server on the target Java process, users can use telnet connect to the remote Arthas Server, for example:

    telnet 192.168.1.119 3658
    +

    sudo Support

    Usually online environment will only grant users privilege as low as possible, instead, all advanced operations are through sudo-list. Since as3.sh script takes into account the current effective user, it is possible to run the script in the other rule, by specifying -H option like this:

    sudo -u admin -H ./as3.sh 12345
    +

    Windows Support

    Right now as.bat script supports one parameter only, which is: pid

    as.bat <pid>
    +
    + + + diff --git a/3.x/en/doc/stop.html b/3.x/en/doc/stop.html new file mode 100644 index 00000000000..3f86d8ce21d --- /dev/null +++ b/3.x/en/doc/stop.html @@ -0,0 +1,41 @@ + + + + + + + + + stop | arthas + + + + + + + + diff --git a/3.x/en/doc/sysenv.html b/3.x/en/doc/sysenv.html new file mode 100644 index 00000000000..8e75da9904c --- /dev/null +++ b/3.x/en/doc/sysenv.html @@ -0,0 +1,92 @@ + + + + + + + + + sysenv | arthas + + + + +
    Table of Contents

    sysenv

    sysenv online tutorialopen in new window

    TIP

    View the current JVM environment variables.

    Usage

     USAGE:
    +   sysenv [-h] [env-name]
    +
    + SUMMARY:
    +   Display the system env.
    +
    + EXAMPLES:
    +   sysenv
    +   sysenv USER
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/sysenv
    +
    + OPTIONS:
    + -h, --help                                                 this help
    + <env-name>                                                 env name
    +

    View all environment variables

    $ sysenv
    + KEY                      VALUE
    +----------------------------------------------------------------------------------------------------------------------------
    + PATH                     /Users/admin/.sdkman/candidates/visualvm/current/bin:/Users/admin/.sdkman/candidates/ja
    +                          va/current/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/
    +                          MacOS
    + SDKMAN_VERSION           5.7.3+337
    + JAVA_HOME                /Users/admin/.sdkman/candidates/java/current
    + JAVA_MAIN_CLASS_65244    demo.MathGame
    + TERM                     xterm-256color
    + LANG                     zh_CN.UTF-8
    + AUTOJUMP_SOURCED         1
    + COLORTERM                truecolor
    + LOGNAME                  admin
    + XPC_SERVICE_NAME         0
    + PWD                      /Users/admin/code/ali/arthas/demo
    + TERM_PROGRAM_VERSION     3.2.5
    + _                        /Users/admin/.sdkman/candidates/java/current/bin/java
    + SHELL                    /bin/bash
    + TERM_PROGRAM             iTerm.app
    + SDKMAN_PLATFORM          Darwin
    + USER                     admin
    + ITERM_PROFILE            Default
    + TMPDIR                   /var/folders/0r/k561bkk917gg972stqclbz9h0000gn/T/
    + XPC_FLAGS                0x0
    + TERM_SESSION_ID          w0t4p0:60BC264D-9649-42AC-A7E4-AF85B69F93F8
    + __CF_USER_TEXT_ENCODING  0x1F5:0x19:0x34
    + Apple_PubSub_Socket_Ren  /private/tmp/com.apple.launchd.DwmmjSQsll/Render
    + der
    + COLORFGBG                7;0
    + HOME                     /Users/admin
    + SHLVL                    1
    + AUTOJUMP_ERROR_PATH      /Users/admin/Library/autojump/errors.log
    +

    View individual environment variables

    TIP

    Use tab for auto-completion

    $ sysenv USER
    +USER=admin
    +
    + + + diff --git a/3.x/en/doc/sysprop.html b/3.x/en/doc/sysprop.html new file mode 100644 index 00000000000..a304c6f2efd --- /dev/null +++ b/3.x/en/doc/sysprop.html @@ -0,0 +1,136 @@ + + + + + + + + + sysprop | arthas + + + + +
    Table of Contents

    sysprop

    sysprop online tutorialopen in new window

    TIP

    Examine the system properties from the target JVM

    Usage

     USAGE:
    +   sysprop [-h] [property-name] [property-value]
    +
    + SUMMARY:
    +   Display, and change all the system properties.
    +
    + EXAMPLES:
    + sysprop
    + sysprop file.encoding
    + sysprop production.mode true
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/sysprop
    +
    + OPTIONS:
    + -h, --help                                  this help
    + <property-name>                             property name
    + <property-value>                            property value
    +

    Check all properties

    $ sysprop
    + KEY                                                  VALUE
    +-------------------------------------------------------------------------------------------------------------------------------------
    + java.runtime.name                                    Java(TM) SE Runtime Environment
    + sun.boot.library.path                                /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib
    + java.vm.version                                      25.51-b03
    + user.country.format                                  CN
    + gopherProxySet                                       false
    + java.vm.vendor                                       Oracle Corporation
    + java.vendor.url                                      http://java.oracle.com/
    + path.separator                                       :
    + java.vm.name                                         Java HotSpot(TM) 64-Bit Server VM
    + file.encoding.pkg                                    sun.io
    + user.country                                         US
    + sun.java.launcher                                    SUN_STANDARD
    + sun.os.patch.level                                   unknown
    + java.vm.specification.name                           Java Virtual Machine Specification
    + user.dir                                             /private/var/tmp
    + java.runtime.version                                 1.8.0_51-b16
    + java.awt.graphicsenv                                 sun.awt.CGraphicsEnvironment
    + java.endorsed.dirs                                   /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/endors
    +                                                      ed
    + os.arch                                              x86_64
    + java.io.tmpdir                                       /var/folders/2c/tbxwzs4s4sbcvh7frbcc7n000000gn/T/
    + line.separator
    +
    + java.vm.specification.vendor                         Oracle Corporation
    + os.name                                              Mac OS X
    + sun.jnu.encoding                                     UTF-8
    + java.library.path                                    /Users/wangtao/Library/Java/Extensions:/Library/Java/Extensions:/Network/Libra
    +                                                      ry/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
    + sun.nio.ch.bugLevel
    + java.specification.name                              Java Platform API Specification
    + java.class.version                                   52.0
    + sun.management.compiler                              HotSpot 64-Bit Tiered Compilers
    + os.version                                           10.12.6
    + user.home                                            /Users/wangtao
    + user.timezone                                        Asia/Shanghai
    + java.awt.printerjob                                  sun.lwawt.macosx.CPrinterJob
    + file.encoding                                        UTF-8
    + java.specification.version                           1.8
    + user.name                                            wangtao
    + java.class.path                                      .
    + java.vm.specification.version                        1.8
    + sun.arch.data.model                                  64
    + java.home                                            /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre
    + sun.java.command                                     Test
    + java.specification.vendor                            Oracle Corporation
    + user.language                                        en
    + awt.toolkit                                          sun.lwawt.macosx.LWCToolkit
    + java.vm.info                                         mixed mode
    + java.version                                         1.8.0_51
    + java.ext.dirs                                        /Users/wangtao/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.
    +                                                      8.0_51.jdk/Contents/Home/jre/lib/ext:/Library/Java/Extensions:/Network/Library
    +                                                      /Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
    + sun.boot.class.path                                  /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/resour
    +                                                      ces.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/li
    +                                                      b/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/l
    +                                                      ib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/H
    +                                                      ome/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Content
    +                                                      s/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Conte
    +                                                      nts/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jd
    +                                                      k/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.
    +                                                      jdk/Contents/Home/jre/classes
    + java.vendor                                          Oracle Corporation
    + file.separator                                       /
    + java.vendor.url.bug                                  http://bugreport.sun.com/bugreport/
    + sun.cpu.endian                                       little
    + sun.io.unicode.encoding                              UnicodeBig
    + sun.cpu.isalist
    +

    Check One Single Property

    TIP

    Use tab for auto-completion

    $ sysprop java.version
    +java.version=1.8.0_51
    +

    Modify Single Property

    $ sysprop user.country
    +user.country=US
    +$ sysprop user.country CN
    +Successfully changed the system property.
    +user.country=CN
    +
    + + + diff --git a/3.x/en/doc/tee.html b/3.x/en/doc/tee.html new file mode 100644 index 00000000000..0c6e2746f2e --- /dev/null +++ b/3.x/en/doc/tee.html @@ -0,0 +1,58 @@ + + + + + + + + + tee | arthas + + + + +
    Table of Contents

    tee

    tee online tutorialopen in new window

    TIP

    Similar to the traditional tee command, it is used to read standard input data and output its contents into a file.

    tee will read data from standard input device, output its content to standard output device, and save it as a file.

    Usage

     USAGE:
    +   tee [-a] [-h] [file]
    +
    + SUMMARY:
    +   tee command for pipes.
    +
    + EXAMPLES:
    +  sysprop | tee /path/to/logfile | grep java
    +  sysprop | tee -a /path/to/logfile | grep java
    +
    + WIKI:
    +   https://arthas.aliyun.com/3.x/doc/tee
    +
    + OPTIONS:
    + -a, --append                              Append to file
    + -h, --help                                this help
    + <file>                                    File path
    +
    + + + diff --git a/3.x/en/doc/thread.html b/3.x/en/doc/thread.html new file mode 100644 index 00000000000..271d4bb9704 --- /dev/null +++ b/3.x/en/doc/thread.html @@ -0,0 +1,152 @@ + + + + + + + + + thread | arthas + + + + +
    Table of Contents

    thread

    thread online tutorialopen in new window

    TIP

    Check the basic info and stack trace of the target thread.

    Parameters

    NameSpecification
    idthread id in JVM
    [n:]the top n busiest threads with stack traces printed
    [b]locate the thread blocking the others
    [i <value>]specify the interval to collect data to compute CPU ratios (ms)
    [--all]Show all matching threads

    How the CPU ratios are calculated?

    The cpu ratios here is similar to the thread %CPU of the linux command top -H -p <pid>. During a sampling interval, the ratio of the incremental cpu time of each thread in the current JVM to the sampling interval time.

    Working principle description:

    • Do the first sampling, get the CPU time of all threads ( by calling java.lang.management.ThreadMXBean#getThreadCpuTime() and sun.management.HotspotThreadMBean.getInternalThreadCpuTimes() )
    • Sleep and wait for an interval (the default is 200ms, the interval can be specified by -i)
    • Do the second sampling, get the CPU time of all threads, compare the two sampling data, and calculate the incremental CPU time of each thread
    • Thread CPU usage ratio = Thread increment CPU time / Sampling interval time * 100%

    Note: this operation consumes CPU time too (getThreadCpuTime is time-consuming), therefore it is possible to observe Arthas's thread appears in the list. To avoid this, try to increase sample interval, for example: 5000 ms.

    Another way to view the thread cpu usage of the Java process, show-busy-java-threadsopen in new window can come to help.

    Usage

    List the top n busiest threads with detailed stack trace

    $ thread -n 3
    +"C1 CompilerThread0" [Internal] cpuUsage=1.63% deltaTime=3ms time=1170ms
    +
    +
    +"arthas-command-execute" Id=23 cpuUsage=0.11% deltaTime=0ms time=401ms RUNNABLE
    +    at java.management@11.0.7/sun.management.ThreadImpl.dumpThreads0(Native Method)
    +    at java.management@11.0.7/sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:466)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.processTopBusyThreads(ThreadCommand.java:199)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.process(ThreadCommand.java:122)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process(AnnotatedCommandImpl.java:82)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access$100(AnnotatedCommandImpl.java:18)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:111)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:108)
    +    at com.taobao.arthas.core.shell.system.impl.ProcessImpl$CommandProcessTask.run(ProcessImpl.java:385)
    +    at java.base@11.0.7/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    +    at java.base@11.0.7/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    +    at java.base@11.0.7/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
    +    at java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    +    at java.base@11.0.7/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    +    at java.base@11.0.7/java.lang.Thread.run(Thread.java:834)
    +
    +
    +"VM Periodic Task Thread" [Internal] cpuUsage=0.07% deltaTime=0ms time=584ms
    +
    • Without thread ID, including [Internal] means JVM internal thread, refer to the introduction of dashboard command.
    • cpuUsage is the CPU usage of the thread during the sampling interval, consistent with the data of the dashboard command.
    • deltaTime is the incremental CPU time of the thread during the sampling interval. If it is less than 1ms, it will be rounded and displayed as 0ms.
    • time The total CPU time of thread.

    Note: The thread stack is acquired at the end of the second sampling, which does not indicate that the thread is processing the same task during the sampling interval. It is recommended that the interval time should not be too long. The larger the interval time, the more inaccurate.

    You can try to specify different intervals according to the specific situation and observe the output results.

    List first page threads' info when no options provided

    By default, they are arranged in descending order of CPU increment time, and only the first page of data is displayed.

    $ thread
    +Threads Total: 33, NEW: 0, RUNNABLE: 9, BLOCKED: 0, WAITING: 3, TIMED_WAITING: 4, TERMINATED: 0, Internal threads: 17
    +ID   NAME                           GROUP          PRIORITY  STATE     %CPU      DELTA_TIME TIME      INTERRUPT DAEMON
    +-1   C2 CompilerThread0             -              -1        -         5.06      0.010      0:0.973   false     true
    +-1   C1 CompilerThread0             -              -1        -         0.95      0.001      0:0.603   false     true
    +23   arthas-command-execute         system         5         RUNNABLE  0.17      0.000      0:0.226   false     true
    +-1   VM Periodic Task Thread        -              -1        -         0.05      0.000      0:0.094   false     true
    +-1   Sweeper thread                 -              -1        -         0.04      0.000      0:0.011   false     true
    +-1   G1 Young RemSet Sampling       -              -1        -         0.02      0.000      0:0.025   false     true
    +12   Attach Listener                system         9         RUNNABLE  0.0       0.000      0:0.022   false     true
    +11   Common-Cleaner                 InnocuousThrea 8         TIMED_WAI 0.0       0.000      0:0.000   false     true
    +3    Finalizer                      system         8         WAITING   0.0       0.000      0:0.000   false     true
    +2    Reference Handler              system         10        RUNNABLE  0.0       0.000      0:0.000   false     true
    +4    Signal Dispatcher              system         9         RUNNABLE  0.0       0.000      0:0.000   false     true
    +15   arthas-NettyHttpTelnetBootstra system         5         RUNNABLE  0.0       0.000      0:0.029   false     true
    +22   arthas-NettyHttpTelnetBootstra system         5         RUNNABLE  0.0       0.000      0:0.196   false     true
    +24   arthas-NettyHttpTelnetBootstra system         5         RUNNABLE  0.0       0.000      0:0.038   false     true
    +16   arthas-NettyWebsocketTtyBootst system         5         RUNNABLE  0.0       0.000      0:0.001   false     true
    +17   arthas-NettyWebsocketTtyBootst system         5         RUNNABLE  0.0       0.000      0:0.001   false     true
    +

    thread --all, show all matching threads

    Display all matching threads. Sometimes it is necessary to obtain all the thread data of the JVM for analysis.

    thread id, show the running stack for the target thread

    $ thread 1
    +"main" Id=1 WAITING on java.util.concurrent.CountDownLatch$Sync@29fafb28
    +    at sun.misc.Unsafe.park(Native Method)
    +    -  waiting on java.util.concurrent.CountDownLatch$Sync@29fafb28
    +    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    +    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
    +    at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
    +    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
    +    at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
    +

    thread -b, locate the thread bocking the others

    In some occasions, we experience the whole application is stuck because there's one particular thread hold one lock that other threads are relying on. To diagnose such an issue, Arthas provides thread -b to find the problematic thread in one single command.

    $ thread -b
    +"http-bio-8080-exec-4" Id=27 TIMED_WAITING
    +    at java.lang.Thread.sleep(Native Method)
    +    at test.arthas.TestThreadBlocking.doGet(TestThreadBlocking.java:22)
    +    -  locked java.lang.Object@725be470 <---- but blocks 4 other threads!
    +    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    +    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    +    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    +    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    +    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    +    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    +    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    +    at test.filter.TestDurexFilter.doFilter(TestDurexFilter.java:46)
    +    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    +    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    +    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    +    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    +    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    +    at com.taobao.tomcat.valves.ContextLoadFilterValve$FilterChainAdapter.doFilter(ContextLoadFilterValve.java:191)
    +    at com.taobao.eagleeye.EagleEyeFilter.doFilter(EagleEyeFilter.java:81)
    +    at com.taobao.tomcat.valves.ContextLoadFilterValve.invoke(ContextLoadFilterValve.java:150)
    +    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    +    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    +    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    +    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:429)
    +    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085)
    +    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    +    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    +    -  locked org.apache.tomcat.util.net.SocketWrapper@7127ee12
    +    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    +    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    +    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    +    at java.lang.Thread.run(Thread.java:745)
    +
    +    Number of locked synchronizers = 1
    +    - java.util.concurrent.ThreadPoolExecutor$Worker@31a6493e
    +

    Note: By now Arthas only supports to locate the thread blocked by synchronzied, while java.util.concurrent.Lock is not supported yet.

    thread -i, specify the sampling interval

    • thread -i 1000: Count the thread cpu time of the last 1000ms.

    • thread -n 3 -i 1000: List the 3 busiest thread stacks in 1000ms

    $ thread -n 3 -i 1000
    +"as-command-execute-daemon" Id=4759 cpuUsage=23% RUNNABLE
    +    at sun.management.ThreadImpl.dumpThreads0(Native Method)
    +    at sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:440)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.processTopBusyThreads(ThreadCommand.java:133)
    +    at com.taobao.arthas.core.command.monitor200.ThreadCommand.process(ThreadCommand.java:79)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process(AnnotatedCommandImpl.java:96)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access$100(AnnotatedCommandImpl.java:27)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:125)
    +    at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:122)
    +    at com.taobao.arthas.core.shell.system.impl.ProcessImpl$CommandProcessTask.run(ProcessImpl.java:332)
    +    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    +    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    +    at java.lang.Thread.run(Thread.java:756)
    +
    +    Number of locked synchronizers = 1
    +    - java.util.concurrent.ThreadPoolExecutor$Worker@546aeec1
    +...
    +

    thread --state , view the special state theads

    [arthas@28114]$ thread --state WAITING
    +Threads Total: 16, NEW: 0, RUNNABLE: 9, BLOCKED: 0, WAITING: 3, TIMED_WAITING: 4, TERMINATED: 0
    +ID   NAME                           GROUP           PRIORITY   STATE     %CPU      DELTA_TIME TIME      INTERRUPTE DAEMON
    +3    Finalizer                      system          8          WAITING   0.0       0.000      0:0.000   false      true
    +20   arthas-UserStat                system          9          WAITING   0.0       0.000      0:0.001   false      true
    +14   arthas-timer                   system          9          WAITING   0.0       0.000      0:0.000   false      true
    +
    + + + diff --git a/3.x/en/doc/trace.html b/3.x/en/doc/trace.html new file mode 100644 index 00000000000..c982ae2a6d5 --- /dev/null +++ b/3.x/en/doc/trace.html @@ -0,0 +1,151 @@ + + + + + + + + + trace | arthas + + + + +
    Table of Contents

    trace

    trace online tutorialopen in new window

    TIP

    Trace method calling path, and output the time cost for each node in the path.

    trace can track the calling path specified by class-pattern / method-pattern, and calculate the time cost on the whole path.

    Parameters

    NameSpecification
    class-patternpattern for the class name
    method-patternpattern for the method name
    condition-expresscondition expression
    [E]enable regex match, the default behavior is wildcards match
    [n:]execution times
    #costtime cost
    [m <arg>]Specify the max number of matched Classes, the default value is 50. Long format is [maxMatch <arg>].

    There's one thing worthy noting here is condition expression. The condition expression supports OGNL grammar, for example, you can come up a expression like this "params[0]<0". All OGNL expressions are supported as long as they are legal to the grammar.

    Pls. refer to core parameters in expression for more details.

    Many times what we are interested is the exact trace result when the method call takes time over one particular period. It is possible to achieve this in Arthas, for example: trace *StringUtils isBlank '#cost>100' means trace result will only be output when the executing time exceeds 100ms.

    TIP

    watch/stack/trace, these three commands all support #cost.

    Notice

    • trace is handy to help discovering and locating the performance flaws in your system, but pls. note Arthas can only trace the first level method call each time.

    • After version 3.3.0, you can use the Dynamic Trace feature to add new matching classes/methods, see the following example.

    • Currently trace java.lang.Thread getName is not supported, please refer to issue: #1610open in new window, considering that it is not very necessary and it is difficult to repair , So it won’t be fixed for now

    Usage

    Start Demo

    Start math-game in Quick Start.

    Trace method

    $ trace demo.MathGame run
    +Press Q or Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 28 ms.
    +`---ts=2019-12-04 00:45:08;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[0.617465ms] demo.MathGame:run()
    +        `---[0.078946ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +
    +`---ts=2019-12-04 00:45:09;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[1.276874ms] demo.MathGame:run()
    +        `---[0.03752ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +

    TIP

    The #24 in the result indicates that in the run function, the primeFactors() function was called on line 24 of the source file.

    Specify the max number of matched Classes

    $ trace demo.MathGame run -m 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 412 ms, listenerId: 4
    +`---ts=2022-12-25 21:00:00;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@b4aac2
    +    `---[0.762093ms] demo.MathGame:run()
    +        `---[30.21% 0.230241ms] demo.MathGame:primeFactors() #46 [throws Exception]
    +
    +`---ts=2022-12-25 21:00:10;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@b4aac2
    +    `---[0.315298ms] demo.MathGame:run()
    +        `---[13.95% 0.043995ms] demo.MathGame:primeFactors() #46 [throws Exception]
    +

    Trace times limit

    If the method invoked many times, use -n options to specify trace times. For example, the command will exit when received a trace result.

    $ trace demo.MathGame run -n 1
    +Press Q or Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 20 ms.
    +`---ts=2019-12-04 00:45:53;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[0.549379ms] demo.MathGame:run()
    +        +---[0.059839ms] demo.MathGame:primeFactors() #24
    +        `---[0.232887ms] demo.MathGame:print() #25
    +
    +Command execution times exceed limit: 1, so command will exit. You can set it with -n option.
    +

    Include jdk method

    • --skipJDKMethod <value> skip jdk method trace, default value true.
    $ trace --skipJDKMethod false demo.MathGame run
    +Press Q or Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 60 ms.
    +`---ts=2019-12-04 00:44:41;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[1.357742ms] demo.MathGame:run()
    +        +---[0.028624ms] java.util.Random:nextInt() #23
    +        +---[0.045534ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +        +---[0.005372ms] java.lang.StringBuilder:<init>() #28
    +        +---[0.012257ms] java.lang.Integer:valueOf() #28
    +        +---[0.234537ms] java.lang.String:format() #28
    +        +---[min=0.004539ms,max=0.005778ms,total=0.010317ms,count=2] java.lang.StringBuilder:append() #28
    +        +---[0.013777ms] java.lang.Exception:getMessage() #28
    +        +---[0.004935ms] java.lang.StringBuilder:toString() #28
    +        `---[0.06941ms] java.io.PrintStream:println() #28
    +
    +`---ts=2019-12-04 00:44:42;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[3.030432ms] demo.MathGame:run()
    +        +---[0.010473ms] java.util.Random:nextInt() #23
    +        +---[0.023715ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +        +---[0.005198ms] java.lang.StringBuilder:<init>() #28
    +        +---[0.006405ms] java.lang.Integer:valueOf() #28
    +        +---[0.178583ms] java.lang.String:format() #28
    +        +---[min=0.011636ms,max=0.838077ms,total=0.849713ms,count=2] java.lang.StringBuilder:append() #28
    +        +---[0.008747ms] java.lang.Exception:getMessage() #28
    +        +---[0.019768ms] java.lang.StringBuilder:toString() #28
    +        `---[0.076457ms] java.io.PrintStream:println() #28
    +

    Filtering by cost

    $ trace demo.MathGame run '#cost > 10'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 41 ms.
    +`---ts=2018-12-04 01:12:02;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[12.033735ms] demo.MathGame:run()
    +        +---[0.006783ms] java.util.Random:nextInt()
    +        +---[11.852594ms] demo.MathGame:primeFactors()
    +        `---[0.05447ms] demo.MathGame:print()
    +

    TIP

    Only the call path which's time cost is higher than 10ms will be shown. This feature is handy to focus on what's needed to focus when troubleshoot.

    • Here Arthas provides the similar functionality JProfile and other commercial software provide. Compared to these professional softwares, Arthas doesn't deduce the time cost trace itself takes, therefore it is not as accurate as these softwares offer. More classes and methods on the calling path, more inaccurate trace output is, but it is still helpful for diagnostics where the bottleneck is.
    • "[12.033735ms]" means the method on the node takes 12.033735 ms.
    • "[min=0.005428ms,max=0.094064ms,total=0.105228ms,count=3] demo:call()" means aggregating all same method calls into one single line. The minimum time cost is 0.005428 ms, the maximum time cost is 0.094064 ms, and the total time cost for all method calls (3 times in total) to "demo:call()" is 0.105228ms. If "throws Exception" appears in this line, it means some exceptions have been thrown from this method calls.
    • The total time cost may not equal to the sum of the time costs each sub method call takes, this is because Arthas instrumented code takes time too.

    Trace multiple classes or multiple methods

    The trace command will only trace the subcalls in the method to the trace, and will not trace down multiple layers. Because traces are expensive, multi-layer traces can lead to a lot of classes and methods that ultimately have to be traced.

    You can use the regular expression to match multiple classes and methods on the path to achieve a multi-layer trace effect to some extent.

    Trace -E com.test.ClassA|org.test.ClassB method1|method2|method3
    +

    Exclude the specified class

    TIP

    The watch/trace/monitor/stack/tt commands all support the --exclude-class-pattern parameter

    Use the --exclude-class-pattern parameter to exclude the specified class, for example:

    watch javax.servlet.Filter * --exclude-class-pattern com.demo.TestFilter
    +

    Dynamic trace

    TIP

    Supported since version 3.3.0.

    Open terminal 1, trace the run method in the above demo, and you can see the printout listenerId: 1 .

    [arthas@59161]$ trace demo.MathGame run
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 112 ms, listenerId: 1
    +`---ts=2020-07-09 16:48:11;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[1.389634ms] demo.MathGame:run()
    +        `---[0.123934ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +
    +`---ts=2020-07-09 16:48:12;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[3.716391ms] demo.MathGame:run()
    +        +---[3.182813ms] demo.MathGame:primeFactors() #24
    +        `---[0.167786ms] demo.MathGame:print() #25
    +

    Now to drill down into the sub method primeFactors, you can open a new terminal 2 and use the telnet localhost 3658 connects to the arthas, then trace primeFactors with the specify listenerId.

    [arthas@59161]$ trace demo.MathGame primeFactors --listenerId 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 34 ms, listenerId: 1
    +

    At Terminal 2 prints the results, indicating that a method has been enhanced: Affect(class count: 1 , method count: 1), but no more results are printed.

    At terminal 1, you can see that the trace result has increased by one layer:

    `---ts=2020-07-09 16:49:29;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[0.492551ms] demo.MathGame:run()
    +        `---[0.113929ms] demo.MathGame:primeFactors() #24 [throws Exception]
    +            `---[0.061462ms] demo.MathGame:primeFactors()
    +                `---[0.001018ms] throw:java.lang.IllegalArgumentException() #46
    +
    +`---ts=2020-07-09 16:49:30;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@3d4eac69
    +    `---[0.409446ms] demo.MathGame:run()
    +        +---[0.232606ms] demo.MathGame:primeFactors() #24
    +        |   `---[0.1294ms] demo.MathGame:primeFactors()
    +        `---[0.084025ms] demo.MathGame:print() #25
    +

    Dynamic trace by specifying listenerId, you can go deeper and deeper. In addition, commands such as watch/tt/monitor also support similar functionality.

    Trace result time inaccuracy problem

    For example, in the following result: 0.705196 > (0.152743 + 0.145825)

    $ trace demo.MathGame run -n 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 66 ms, listenerId: 1
    +`---ts=2021-02-08 11:27:36;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@232204a1
    +    `--[0.705196ms] demo.MathGame:run()
    +        +---[0.152743ms] demo.MathGame:primeFactors() #24
    +        `--[0.145825ms] demo.MathGame:print() #25
    +

    So where is the rest of the time consumed?

    1. Methods that are not traced to. For example, methods under java.* are ignored by default. This can be printed out by adding the -skipJDKMethod false parameter.

      $ trace demo.MathGame run --skipJDKMethod false
      +Press Q or Ctrl+C to abort.
      +Affect(class count: 1 , method count: 1) cost in 35 ms, listenerId: 2
      +`---ts=2021-02-08 11:27:48;thread_name=main;id=1;is_daemon=false;priority=5;TCCL=sun.misc.Launcher$AppClassLoader@232204a1
      +    `--[0.810591ms] demo.MathGame:run()
      +        +--[0.034568ms] java.util.Random:nextInt() #23
      +        +---[0.119367ms] demo.MathGame:timeFactors() #24 [throws Exception]
      +        +---[0.017407ms] java.lang.StringBuilder:<init>() #28
      +        +--[0.127922ms] java.lang.String:format() #57
      +        +---[min=0.01419ms,max=0.020221ms,total=0.034411ms,count=2] java.lang.StringBuilder:append() #57
      +        +--[0.021911ms] java.lang.Exception:getMessage() #57
      +        +---[0.015643ms] java.lang.StringBuilder:toString() #57
      +        `--[0.086622ms] java.io.PrintStream:println() #57
      +
    2. Instruction consumption. For example, instructions such as i++, getfield, etc.

    3. Possible JVM pause during code execution, such as GC, entering synchronization blocks, etc.

    Use the -v parameter to print more information

    TIP

    The watch/trace/monitor/stack/tt commands all support the -v parameter.

    When the command is executed, there is no output result. There are two possibilities:

    1. The matched function is not executed
    2. The result of the conditional expression is false

    But the user cannot tell which situation is.

    Using the -v option, the specific value and execution result of Condition express will be printed for easy confirmation.

    + + + diff --git a/3.x/en/doc/tt.html b/3.x/en/doc/tt.html new file mode 100644 index 00000000000..81a78358f5e --- /dev/null +++ b/3.x/en/doc/tt.html @@ -0,0 +1,132 @@ + + + + + + + + + tt | arthas + + + + +
    Table of Contents

    tt

    tt online tutorialopen in new window

    Check the parameters, return values and exceptions of the methods at different times.

    watch is a powerful command but due to its feasibility and complexity, it's quite hard to locate the issue effectively.

    In such difficulties, tt comes into play.

    With the help of tt (TimeTunnel), you can check the contexts of the methods at different times in execution history.

    Precautions

    • The implementation of the tt command is to save the input parameters/return values of the function into a Map<Integer, TimeFragment>. The default size is 100.
    • After using tt related functions, you need to manually release the memory, otherwise OOM may occur for a long time. Exiting arthas will not automatically clear tt's cache map.

    Usage

    Start Demo

    Start math-game in Quick Start.

    Record method calls

    $ tt -t demo.MathGame primeFactors
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 66 ms.
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2018-12-04 11:15:38  1.096236  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1001    2018-12-04 11:15:39  0.191848  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1002    2018-12-04 11:15:40  0.069523  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1003    2018-12-04 11:15:41  0.186073  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1004    2018-12-04 11:15:42  17.76437  true    false    0x4b67cf4d     MathGame                       primeFactors
    +

    Specify the max number of matched Classes

    $ tt -t -m 1 demo.MathGame primeFactors
    +Press Q or Ctrl+C to abort.
    +Affect(class count:1 , method count:1) cost in 130 ms, listenerId: 1.
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2022-12-25 19:41:45  2.629929  true    false    0x3bf400       MathGame                       primeFactors
    + 1001    2022-12-25 19:41:55  0.146161  false   true     0x3bf400       MathGame                       primeFactors
    +
    • -t

      record the calling context of the method demo.MathGame primeFactors

    • -n 3

      limit the number of the records (avoid overflow for too many records; with -n option, Arthas can automatically stop recording once the records reach the specified limit)

    • -m 1

      limit the number of matched Classes to avoid JVM suspending when too many matched Classes. The default value is 50.

    • Property

    NameSpecification
    INDEXthe index for each call based on time
    TIMESTAMPtime to invoke the method
    COST(ms)time cost of the method call
    IS-RETwhether method exits with normal return
    IS-EXPwhether method failed with exceptions
    OBJECThashCode() of the object invoking the method
    CLASSclass name of the object invoking the method
    METHODmethod being invoked
    • Condition expression

    Tips:

    1. tt -t *Test print params.length==1 with different amounts of parameters;
    2. tt -t *Test print 'params[1] instanceof Integer' with different types of parameters;
    3. tt -t *Test print params[0].mobile=="13989838402" with specified parameter.

    Advanced:

    List all records

    $ tt -l
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2018-12-04 11:15:38  1.096236  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1001    2018-12-04 11:15:39  0.191848  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1002    2018-12-04 11:15:40  0.069523  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1003    2018-12-04 11:15:41  0.186073  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1004    2018-12-04 11:15:42  17.76437  true    false    0x4b67cf4d     MathGame                       primeFactors
    +                              9
    + 1005    2018-12-04 11:15:43  0.4776    false   true     0x4b67cf4d     MathGame                       primeFactors
    +Affect(row-cnt:6) cost in 4 ms.
    +

    Searching for records

    $ tt -s 'method.name=="primeFactors"'
    + INDEX   TIMESTAMP            COST(ms)  IS-RET  IS-EXP   OBJECT         CLASS                          METHOD
    +-------------------------------------------------------------------------------------------------------------------------------------
    + 1000    2018-12-04 11:15:38  1.096236  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1001    2018-12-04 11:15:39  0.191848  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1002    2018-12-04 11:15:40  0.069523  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1003    2018-12-04 11:15:41  0.186073  false   true     0x4b67cf4d     MathGame                       primeFactors
    + 1004    2018-12-04 11:15:42  17.76437  true    false    0x4b67cf4d     MathGame                       primeFactors
    +                              9
    + 1005    2018-12-04 11:15:43  0.4776    false   true     0x4b67cf4d     MathGame                       primeFactors
    +Affect(row-cnt:6) cost in 607 ms.
    +

    Advanced:

    Check context of the call

    Using tt -i <index> to check a specific calling details.

    $ tt -i 1003
    + INDEX            1003
    + GMT-CREATE       2018-12-04 11:15:41
    + COST(ms)         0.186073
    + OBJECT           0x4b67cf4d
    + CLASS            demo.MathGame
    + METHOD           primeFactors
    + IS-RETURN        false
    + IS-EXCEPTION     true
    + PARAMETERS[0]    @Integer[-564322413]
    + THROW-EXCEPTION  java.lang.IllegalArgumentException: number is: -564322413, need >= 2
    +                    at demo.MathGame.primeFactors(MathGame.java:46)
    +                    at demo.MathGame.run(MathGame.java:24)
    +                    at demo.MathGame.main(MathGame.java:16)
    +
    +Affect(row-cnt:1) cost in 11 ms.
    +

    Replay record

    Since Arthas stores the context of the call, you can even replay the method calling afterwards with extra option -p to replay the issue for advanced troubleshooting, option --replay-times define the replay execution times, option --replay-interval define the interval(unit in ms,with default value 1000) of replays

    $ tt -i 1004 -p
    + RE-INDEX       1004
    + GMT-REPLAY     2018-12-04 11:26:00
    + OBJECT         0x4b67cf4d
    + CLASS          demo.MathGame
    + METHOD         primeFactors
    + PARAMETERS[0]  @Integer[946738738]
    + IS-RETURN      true
    + IS-EXCEPTION   false
    + RETURN-OBJ     @ArrayList[
    +                    @Integer[2],
    +                    @Integer[11],
    +                    @Integer[17],
    +                    @Integer[2531387],
    +                ]
    +Time fragment[1004] successfully replayed.
    +Affect(row-cnt:1) cost in 14 ms.
    +

    Watch express

    -w, --watch-express watch the time fragment by ognl express.

    [arthas@10718]$ tt -t demo.MathGame run -n 5
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 56 ms, listenerId: 1
    + INDEX      TIMESTAMP                   COST(ms)     IS-RET     IS-EXP      OBJECT              CLASS                                     METHOD
    +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    + 1000       2021-01-08 21:54:17         0.901091     true       false       0x7699a589          MathGame                                  run
    +[arthas@10718]$ tt -w 'target.illegalArgumentCount'  -x 1 -i 1000
    +@Integer[60]
    +Affect(row-cnt:1) cost in 7 ms.
    +
    • Get a static field and calling a static method
    [arthas@10718]$ tt -t demo.MathGame run -n 5
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 56 ms, listenerId: 1
    + INDEX      TIMESTAMP                   COST(ms)     IS-RET     IS-EXP      OBJECT              CLASS                                     METHOD
    +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    + 1000       2021-01-08 21:54:17         0.901091     true       false       0x7699a589          MathGame                                  run
    +[arthas@10718]$ tt -w '@demo.MathGame@random.nextInt(100)'  -x 1 -i 1000
    +@Integer[46]
    +

    Note that com.taobao.arthas.core.advisor.Advice#getLoader is used here, and that it is better to use the exact classloader ognl.

    Advanced usage get spring context to call the bean methodopen in new window

    F.Y.I

    1. Loss of the ThreadLocal

      Arthas save params into an array, then invoke the method with the params again. The method execute in another thread, so the ThreadLocal lost.

    2. params may be modified

      Arthas save params into an array, they are object references. The Objects may be modified by other code.

    Delete the specified tt record by index

    tt -d 1001
    +

    Clear all tt records

    tt --delete-all
    +
    + + + diff --git a/3.x/en/doc/tunnel.html b/3.x/en/doc/tunnel.html new file mode 100644 index 00000000000..6aac8c01c6e --- /dev/null +++ b/3.x/en/doc/tunnel.html @@ -0,0 +1,87 @@ + + + + + + + + + Arthas Tunnel | arthas + + + + +
    Table of Contents

    Arthas Tunnel

    Manage/connect multiple Agents remotely via Arthas Tunnel Server/Client.

    For example, in streaming computing, Java processes can be started on different machines, and it can be difficult to use Arthas to diagnose them, because the user usually does not have access to the machine.

    In this case, Arthas Tunnel Server/Client can be used.

    Reference:

    Download and deploy arthas tunnel server

    https://github.com/alibaba/arthas/releasesopen in new window

    Arthas tunnel server is a spring boot fat jar application, start with the java -jar command:

    java -jar  arthas-tunnel-server.jar
    +

    By default, the web port of the arthas tunnel server is 8080, and the port connected by the arthas agent is 7777.

    Once started, you can go to http://127.0.0.1:8080/open in new window and connect to the registered arthas agent via agentId.

    Through Spring Boot's Endpoint, you can view the specific connection information: http://127.0.0.1:8080/actuator/arthasopen in new window, the login user name is arthas, and the password can be found in the log of arthas tunnel server, for example:

    32851 [main] INFO o.s.b.a.s.s.UserDetailsServiceAutoConfiguration
    +
    +Using generated security password: f1dca050-3777-48f4-a577-6367e55a78a2
    +

    Connecting to the tunnel server when starting arthas

    When starting arthas, you can use the --tunnel-server parameter, for example:

    as3.sh --tunnel-server 'ws://127.0.0.1:7777/ws'
    +

    You can also use the following test address (not guaranteed to be available all the time):

    as3.sh --tunnel-server 'ws://47.75.156.201:80/ws'
    +
    • You can specify the agentId by the --agent-id parameter. By default, a random ID is generated.

    After Arthas attach succeeds, the agentId will be printed, such as:

      ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
    +|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
    +`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'
    +
    +
    +wiki      https://arthas.aliyun.com/3.x/doc
    +tutorials https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html
    +version   3.1.2
    +pid       86183
    +time      2019-08-30 15:40:53
    +id        URJZ5L48RPBR2ALI5K4V
    +

    If the connection is not connected to the tunnel server at startup, you can also obtain the agentId through the session command after reconnection succeeds:

    [arthas@86183]$ session
    + Name           Value
    +-----------------------------------------------------
    + JAVA_PID       86183
    + SESSION_ID     f7273eb5-e7b0-4a00-bc5b-3fe55d741882
    + AGENT_ID       URJZ5L48RPBR2ALI5K4V
    + TUNNEL_SERVER  ws://47.75.156.201:80/ws
    +

    For the above example, go to http://47.75.156.201/arthas/?port=80open in new window in the browser and input the agentId to connect to arthas on remote machine.

    Best practices

    WARNING

    Note that the agentId must be unique, otherwise it will conflict on the tunnel server and not work properly.

    If the arthas agent is configured with appName, the generated agentId will be prefixed with appName.

    For example, if you add the startup parameter as3.sh --tunnel-server 'ws://127.0.0.1:7777/ws' --app-name demoapp, the generated agentId might be demoapp_URJZ5L48RPBR2ALI5K4V.

    Tunnel server will use _ as a delimiter to extract appName, which is convenient to manage by application.

    TIP

    Alternatively, you can configure appName in arthas.properties in the unzipped arthas directory, or in application.properties of the spring boot application.

    Tunnel Server Management Page

    TIP

    Need to configure arthas.enable-detail-pages=true in application.properties of spring boot

    Attention, opening admin pages is risky! There is no security blocking function on the management page, you must add security measures by yourself.

    Start the tunnel-server locally, then use as3.sh attach, and specify the application name --app-name test:

    $ as3.sh --tunnel-server 'ws://127.0.0.1:7777/ws' --app-name test
    +telnet connecting to arthas server... current timestamp is 1627539688
    +Trying 127.0.0.1...
    +Connected to 127.0.0.1.
    +Escape character is '^]'.
    +  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
    + /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
    +|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
    +|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
    +`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'
    +
    +
    +wiki       https://arthas.aliyun.com/3.x/doc
    +tutorials  https://arthas.aliyun.com/3.x/doc/arthas-tutorials.html
    +version    3.5.3
    +main_class demo.MathGame
    +pid        65825
    +time       2021-07-29 14:21:29
    +id         test_PE3LZO9NA9ENJYTPGL9L
    +

    Then visit tunnel-server, you can see a list of all connected applications:

    http://localhost:8080/apps.htmlopen in new window

    Then open the details, you can see a list of all connected agents:

    http://localhost:8080/agents.html?app=testopen in new window

    Security and Privilege Management

    TIP

    It is strongly recommended not to expose the tunnel server directly to the public network.

    Currently tunnel server does not have special permission management

    1. Users need to develop by themselves and authenticate the app name.
    2. If the management page is opened, security measures need to be added.

    Cluster Management

    If you want to deploy multiple tunnel servers, you can use nginx for forwarding and redis to store agent information.

    Nginx needs to configure sticky session to ensure that the user's web socket is connected to the same back-end tunnel server. The simple configuration method is to use ip_hash.

    How arthas tunnel server works

    browser <-> arthas tunnel server <-> arthas tunnel client <-> arthas agent
    +

    tunnel-server/README.mdopen in new window

    + + + diff --git a/3.x/en/doc/version.html b/3.x/en/doc/version.html new file mode 100644 index 00000000000..a21fb2d78c5 --- /dev/null +++ b/3.x/en/doc/version.html @@ -0,0 +1,43 @@ + + + + + + + + + version | arthas + + + + + + + + diff --git a/3.x/en/doc/vmoption.html b/3.x/en/doc/vmoption.html new file mode 100644 index 00000000000..cfe83bfee9b --- /dev/null +++ b/3.x/en/doc/vmoption.html @@ -0,0 +1,80 @@ + + + + + + + + + vmoption | arthas + + + + +
    Table of Contents

    vmoption

    vmoption online tutorialopen in new window

    TIP

    Display, and update the vm diagnostic options.

    Usage

    View all options

    [arthas@56963]$ vmoption
    + KEY                    VALUE                   ORIGIN                 WRITEABLE
    +---------------------------------------------------------------------------------------------
    + HeapDumpBeforeFullGC   false                   DEFAULT                true
    + HeapDumpAfterFullGC    false                   DEFAULT                true
    + HeapDumpOnOutOfMemory  false                   DEFAULT                true
    + Error
    + HeapDumpPath                                   DEFAULT                true
    + CMSAbortablePrecleanW  100                     DEFAULT                true
    + aitMillis
    + CMSWaitDuration        2000                    DEFAULT                true
    + CMSTriggerInterval     -1                      DEFAULT                true
    + PrintGC                false                   DEFAULT                true
    + PrintGCDetails         true                    MANAGEMENT             true
    + PrintGCDateStamps      false                   DEFAULT                true
    + PrintGCTimeStamps      false                   DEFAULT                true
    + PrintGCID              false                   DEFAULT                true
    + PrintClassHistogramBe  false                   DEFAULT                true
    + foreFullGC
    + PrintClassHistogramAf  false                   DEFAULT                true
    + terFullGC
    + PrintClassHistogram    false                   DEFAULT                true
    + MinHeapFreeRatio       0                       DEFAULT                true
    + MaxHeapFreeRatio       100                     DEFAULT                true
    + PrintConcurrentLocks   false                   DEFAULT                true
    +

    View individual option

    $ vmoption PrintGC
    + KEY                 VALUE                ORIGIN              WRITEABLE
    +---------------------------------------------------------------------------------
    + PrintGC             false                MANAGEMENT          true
    +

    Update individual option

    $ vmoption PrintGC true
    +Successfully updated the vm option.
    + NAME     BEFORE-VALUE  AFTER-VALUE
    +------------------------------------
    + PrintGC  false         true
    +
    $ vmoption PrintGCDetails true
    +Successfully updated the vm option.
    + NAME            BEFORE-VALUE  AFTER-VALUE
    +-------------------------------------------
    + PrintGCDetails  false         true
    +
    + + + diff --git a/3.x/en/doc/vmtool.html b/3.x/en/doc/vmtool.html new file mode 100644 index 00000000000..f28f9ce4e11 --- /dev/null +++ b/3.x/en/doc/vmtool.html @@ -0,0 +1,69 @@ + + + + + + + + + vmtool | arthas + + + + +
    Table of Contents

    vmtool

    TIP

    @since 3.5.1

    vmtool online tutorialopen in new window

    vmtool uses the JVMTI to support getInstances in jvm and forceGc.

    getInstances

    $ vmtool --action getInstances --className java.lang.String --limit 10
    +@String[][
    +    @String[com/taobao/arthas/core/shell/session/Session],
    +    @String[com.taobao.arthas.core.shell.session.Session],
    +    @String[com/taobao/arthas/core/shell/session/Session],
    +    @String[com/taobao/arthas/core/shell/session/Session],
    +    @String[com/taobao/arthas/core/shell/session/Session.class],
    +    @String[com/taobao/arthas/core/shell/session/Session.class],
    +    @String[com/taobao/arthas/core/shell/session/Session.class],
    +    @String[com/],
    +    @String[java/util/concurrent/ConcurrentHashMap$ValueIterator],
    +    @String[java/util/concurrent/locks/LockSupport],
    +]
    +

    TIP

    Through the --limit parameter, you can limit the number of return values to avoid pressure on the JVM when obtaining large data. The default value of limit is 10.

    Specify classloader name

    vmtool --action getInstances --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader --className org.springframework.context.ApplicationContext
    +

    Specify classloader hash

    The classloader that loads the class can be found through the sc command.

    $ sc -d org.springframework.context.ApplicationContext
    + class-info org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext
    + code-source file:/private/tmp/demo-arthas-spring-boot.jar!/BOOT-INF/lib/spring-boot-1.5.13.RELEASE.jar!/
    + name org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext
    +...
    + class-loader +-org.springframework.boot.loader.LaunchedURLClassLoader@19469ea2
    +                     +-sun.misc.Launcher$AppClassLoader@75b84c92
    +                       +-sun.misc.Launcher$ExtClassLoader@4f023edb
    + classLoaderHash 19469ea2
    +

    Then use the -c/--classloader parameter to specify:

    vmtool --action getInstances -c 19469ea2 --className org.springframework.context.ApplicationContext
    +

    Specify the number of expanded layers of returned results

    TIP

    The return result of the getInstances action is bound to the instances variable, which is an array.

    The expansion level of the result can be specified by the -x/--expand parameter, the default value is 1.

    vmtool --action getInstances -c 19469ea2 --className org.springframework.context.ApplicationContext -x 2
    +

    Execute expression

    TIP

    The return result of the getInstances action is bound to the instances variable, which is an array. The specified expression can be executed through the --express parameter.

    vmtool --action getInstances --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader --className org.springframework.context.ApplicationContext --express'instances[0].getBeanDefinitionNames()'
    +

    Force GC

    vmtool --action forceGc
    +
    • Use the vmoption command to dynamically turn on the PrintGC option.

    interrupt 指定线程

    The thread id is specified by the -t parameter. It can be obtained using the thread command.

    vmtool --action interruptThread -t 1
    +
    + + + diff --git a/3.x/en/doc/watch.html b/3.x/en/doc/watch.html new file mode 100644 index 00000000000..b4808de7a77 --- /dev/null +++ b/3.x/en/doc/watch.html @@ -0,0 +1,228 @@ + + + + + + + + + watch | arthas + + + + +
    Table of Contents

    watch

    watch online tutorialopen in new window

    Monitor methods in data aspect including return values, exceptions and parameters.

    With the help of OGNLopen in new window, you can easily check the details of variables when methods being invoked.

    Parameters & Options

    There are four different scenarios for watch command, which makes it rather complicated.

    NameSpecification
    class-patternpattern for the class name
    method-patternpattern for the method name
    expressionexpression to watch, default value {params, target, returnObj}
    condition-expressioncondition expression to filter
    [b]before method being invoked
    [e]when method encountering exceptions
    [s]when method exits normally
    [f]when method exits (either succeed or fail with exceptions)
    [E]turn on regex matching while the default is wildcard matching
    [x:]the depth to print the specified property with default value: 1, the max value is 4
    [m <arg>]Specify the max number of matched Classes, the default value is 50. Long format is [maxMatch <arg>].

    F.Y.I

    1. any valid OGNL expression as "{params,returnObj}" supported
    2. there are four watching points: -b, -e, -s and -f (the first three are off in default while -f on);
    3. at the watching point, Arthas will use the expression to evaluate the variables and print them out;
    4. in parameters and out parameters are different since they can be modified within the invoked methods; params stands for in parameters in -bwhile out parameters in other watching points;
    5. there are no return values and exceptions when using -b.
    6. In the result of the watch command, the location information will be printed. There are three possible values for location: AtEnter, AtExit, and AtExceptionExit. Corresponding to the method entry, the method returns normally, and the method throws an exception.

    Advanced:

    Usage

    Start Demo

    Start math-game in Quick Start.

    Check the out parameters, this and return value

    TIP

    The expression to watch, default value {params, target, returnObj}

    $ watch demo.MathGame primeFactors -x 2
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 32 ms, listenerId: 5
    +method=demo.MathGame.primeFactors location=AtExceptionExit
    +ts=2021-08-31 15:22:57; [cost=0.220625ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[-179173],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@31cefde0],
    +        illegalArgumentCount=@Integer[44],
    +    ],
    +    null,
    +]
    +method=demo.MathGame.primeFactors location=AtExit
    +ts=2021-08-31 15:22:58; [cost=1.020982ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@31cefde0],
    +        illegalArgumentCount=@Integer[44],
    +    ],
    +    @ArrayList[
    +        @Integer[2],
    +        @Integer[2],
    +        @Integer[26947],
    +    ],
    +]
    +
    • In the above result, the method is executed twice, the first result is location=AtExceptionExit, indicating that the method throws an exception, so returnObj is null
    • In the second result is location=AtExit, indicating that the method returns normally, so you can see that the result of returnObj is an ArrayList

    Specify the max number of matched Classes

    $ watch demo.MathGame primeFactors -m 1
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 302 ms, listenerId: 3
    +method=demo.MathGame.primeFactors location=AtExceptionExit
    +ts=2022-12-25 19:58:41; [cost=0.222419ms] result=@ArrayList[
    +    @Object[][isEmpty=false;size=1],
    +    @MathGame[demo.MathGame@3bf400],
    +    null,
    +]
    +method=demo.MathGame.primeFactors location=AtExceptionExit
    +ts=2022-12-25 19:58:51; [cost=0.046928ms] result=@ArrayList[
    +    @Object[][isEmpty=false;size=1],
    +    @MathGame[demo.MathGame@3bf400],
    +    null,
    +]
    +

    Check in parameters

    $ watch demo.MathGame primeFactors "{params,returnObj}" -x 2 -b
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 50 ms.
    +ts=2018-12-03 19:23:23; [cost=0.0353ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[-1077465243],
    +    ],
    +    null,
    +]
    +

    Compared to the previous check:

    • return value is null since it's -b.

    Check before and after at the same time

    $ watch demo.MathGame primeFactors "{params,target,returnObj}" -x 2 -b -s -n 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 46 ms.
    +ts=2018-12-03 19:29:54; [cost=0.01696ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@522b408a],
    +        illegalArgumentCount=@Integer[13038],
    +    ],
    +    null,
    +]
    +ts=2018-12-03 19:29:54; [cost=4.277392ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[java.util.Random@522b408a],
    +        illegalArgumentCount=@Integer[13038],
    +    ],
    +    @ArrayList[
    +        @Integer[2],
    +        @Integer[2],
    +        @Integer[2],
    +        @Integer[5],
    +        @Integer[5],
    +        @Integer[73],
    +        @Integer[241],
    +        @Integer[439],
    +    ],
    +]
    +

    F.Y.I

    • -n 2: threshold of execution times is 2.
    • the first block of output is the before watching point;
    • *the order of the output determined by the *watching* order itself (nothing to do with the order of the options -b -s).

    Use -x to check more details

    $ watch demo.MathGame primeFactors "{params,target}" -x 3
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 58 ms.
    +ts=2018-12-03 19:34:19; [cost=0.587833ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @MathGame[
    +        random=@Random[
    +            serialVersionUID=@Long[3905348978240129619],
    +            seed=@AtomicLong[3133719055989],
    +            multiplier=@Long[25214903917],
    +            addend=@Long[11],
    +            mask=@Long[281474976710655],
    +            DOUBLE_UNIT=@Double[1.1102230246251565E-16],
    +            BadBound=@String[bound must be positive],
    +            BadRange=@String[bound must be greater than origin],
    +            BadSize=@String[size must be non-negative],
    +            seedUniquifier=@AtomicLong[-3282039941672302964],
    +            nextNextGaussian=@Double[0.0],
    +            haveNextNextGaussian=@Boolean[false],
    +            serialPersistentFields=@ObjectStreamField[][isEmpty=false;size=3],
    +            unsafe=@Unsafe[sun.misc.Unsafe@2eaa1027],
    +            seedOffset=@Long[24],
    +        ],
    +        illegalArgumentCount=@Integer[13159],
    +    ],
    +]
    +
    • -x: Expand level of object (1 by default)
    • The max value of -x is 4, to prevent the expansion result taking up too much memory. Users can specify the field in the ognl expression.

    Use condition expressions to locate specific call

    $ watch demo.MathGame primeFactors "{params[0],target}" "params[0]<0"
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 68 ms.
    +ts=2018-12-03 19:36:04; [cost=0.530255ms] result=@ArrayList[
    +    @Integer[-18178089],
    +    @MathGame[demo.MathGame@41cf53f9],
    +]
    +

    Check exceptions

    $ watch demo.MathGame primeFactors "{params[0],throwExp}" -e -x 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 62 ms.
    +ts=2018-12-03 19:38:00; [cost=1.414993ms] result=@ArrayList[
    +    @Integer[-1120397038],
    +    java.lang.IllegalArgumentException: number is: -1120397038, need >= 2
    +	at demo.MathGame.primeFactors(MathGame.java:46)
    +	at demo.MathGame.run(MathGame.java:24)
    +	at demo.MathGame.main(MathGame.java:16)
    +,
    +]
    +
    • -e: Trigger when an exception is thrown
    • throwExp: the exception object

    Filter by time cost

    $ watch demo.MathGame primeFactors '{params, returnObj}' '#cost>200' -x 2
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 66 ms.
    +ts=2018-12-03 19:40:28; [cost=2112.168897ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[1],
    +    ],
    +    @ArrayList[
    +        @Integer[5],
    +        @Integer[428379493],
    +    ],
    +]
    +
    • #cost>200 (ms) filter out all invokings that take less than 200ms.

    Check the field of the target object

    • target is the this object in java.
    $ watch demo.MathGame primeFactors 'target'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 52 ms.
    +ts=2018-12-03 19:41:52; [cost=0.477882ms] result=@MathGame[
    +    random=@Random[java.util.Random@522b408a],
    +    illegalArgumentCount=@Integer[13355],
    +]
    +
    • target.field_name: the field of the current object.
    $ watch demo.MathGame primeFactors 'target.illegalArgumentCount'
    +Press Ctrl+C to abort.
    +Affect(class-cnt:1 , method-cnt:1) cost in 67 ms.
    +ts=2018-12-03 20:04:34; [cost=131.303498ms] result=@Integer[8]
    +ts=2018-12-03 20:04:35; [cost=0.961441ms] result=@Integer[8]
    +

    Get a static field and calling a static method

    watch demo.MathGame * '{params,@demo.MathGame@random.nextInt(100)}' -v -n 1 -x 2
    +[arthas@6527]$ watch demo.MathGame * '{params,@demo.MathGame@random.nextInt(100)}' -n 1 -x 2
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 5) cost in 34 ms, listenerId: 3
    +ts=2021-01-05 21:35:20; [cost=0.173966ms] result=@ArrayList[
    +    @Object[][
    +        @Integer[-138282],
    +    ],
    +    @Integer[89],
    +]
    +
    • Note that here you use Thread.currentThread().getContextClassLoader() to load, and it is better to use the exact classloader ognl.

    Exclude the specified class

    TIP

    The watch/trace/monitor/stack/tt commands all support the --exclude-class-pattern parameter

    Use the --exclude-class-pattern parameter to exclude the specified class, for example:

    watch javax.servlet.Filter * --exclude-class-pattern com.demo.TestFilter
    +

    Does not match subclass

    By default, the watch/trace/monitor/stack/tt commands will match subclass. If you don't want to match, you can turn it off.

    options disable-sub-class true
    +

    Use the -v parameter to print more information

    The watch/trace/monitor/stack/tt commands all support the -v parameter.

    When the command is executed, there is no output result. There are two possibilities:

    1. The matched function is not executed
    2. The result of the conditional expression is false

    But the user cannot tell which situation is.

    Using the -v option, the specific value and execution result of Condition express will be printed for easy confirmation.

    such as:

    $ watch -v -x 2 demo.MathGame print 'params' 'params[0] > 100000'
    +Press Q or Ctrl+C to abort.
    +Affect(class count: 1 , method count: 1) cost in 29 ms, listenerId: 11
    +Condition express: params[0] > 100000 , result: false
    +Condition express: params[0] > 100000 , result: false
    +Condition express: params[0] > 100000 , result: true
    +ts=2020-12-02 22:38:56; [cost=0.060843ms] result=@Object[][
    +    @Integer[1],
    +    @ArrayList[
    +        @Integer[200033],
    +    ],
    +]
    +Condition express: params[0] > 100000 , result: true
    +ts=2020-12-02 22:38:57; [cost=0.052877ms] result=@Object[][
    +    @Integer[1],
    +    @ArrayList[
    +        @Integer[29],
    +        @Integer[4243],
    +    ],
    +]
    +
    + + + diff --git a/3.x/en/doc/web-console.html b/3.x/en/doc/web-console.html new file mode 100644 index 00000000000..c9a5061251f --- /dev/null +++ b/3.x/en/doc/web-console.html @@ -0,0 +1,41 @@ + + + + + + + + + Web Console | arthas + + + + +
    Table of Contents

    Web Console

    Web Console online tutorialopen in new window

    Connect arthas through the browser

    Arthas supports the Web Console. After attach success, the user can access: http://127.0.0.1:8563/open in new window.

    The user can fill in the IP and connect the remote arthas on other machines.

    WARNING

    By default, arthas only listens to 127.0.0.1, so if you want to connect from a remote, you can use the --target-ip parameter to specify the IP. See the help description for -h for more information.

    If you have suggestions for the Web Console, please leave a message here: https://github.com/alibaba/arthas/issues/15open in new window

    TIP

    Since 3.5.4, you can right-click to copy and paste in the Web Console.

    scrollback URL parameters

    TIP

    Since 3.5.5

    By default, the number of rows that the Web Console supports to roll back upwards is 1000. It can be specified with scrollback in the URL. for example

    http://127.0.0.1:8563/?scrollback=3000open in new window

    Connect remote arthas through arthas tunnel server

    Reference: Arthas Tunnel

    + + + diff --git a/3.x/en/index.html b/3.x/en/index.html new file mode 100644 index 00000000000..128c1600441 --- /dev/null +++ b/3.x/en/index.html @@ -0,0 +1,56 @@ + + + + + + + + + Home | arthas + + + + +
    🖥

    Dashboard

    View the operating status of the system in real time

    🔬

    Parameters/Return values/Exceptions

    View method parameters, return values and exceptions

    🔩

    Online hotswap

    jad/sc/redefine online hotswap

    🩺

    Class conflict

    Resolve the class conflict problem in seconds, locate the class loading path

    ⚡️

    Flame Graph

    Quickly locate application hotspots and generate flame graphs

    📡

    WebConsole

    Online diagnosis

    Users

    Providing your info on Wanted: who's using arthas to help improving arthas better

    + + + diff --git a/3.x/images/alibabacloud_hotreload.png b/3.x/images/alibabacloud_hotreload.png new file mode 100644 index 0000000000000000000000000000000000000000..4fd8630a61c3e6f8ae33f5e154f36c1c54e57167 GIT binary patch literal 204025 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

    NjwK_we@2bZYEhdHOuCGHZknXYrhmF7 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 literal 0 HcmV?d00001 diff --git a/3.x/images/arthas-output-svg.jpg b/3.x/images/arthas-output-svg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9afbd1654ffb4c60dde12cb7d352b19eba4b78fb GIT binary patch literal 319943 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

    Lob4eP_Q#MGd(-Cfo$@4C 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⁢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 z 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 I=()!IAL52*#{d8T literal 0 HcmV?d00001 diff --git a/3.x/images/arthas-output.jpg b/3.x/images/arthas-output.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fbb87a066a51c6fc0bd9dd7d0f15fd78ce9c86cf GIT binary patch literal 59086 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 z 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ùz_y%376th3`u4#Z4??*>`7jx2_{UeSOA=*3Lcil0Wi zM|pG2-dQZj9~ptMe@iw;TqPuGXRO0h#k}LZok|0HpGh}n7uHC2kM*eOO%@G7;*eH( zgy>gZYkIH0%#=rQILj^!we%PIuiJRZc8$U6SIV;}Fepc9K=weEf}rN8SQnANxfDFg zIyQFRuD0rIW{%dFXY9p0c9tUx_cmF5rlSauud;84Kj)!x>}k){hM+NcXk{T4PVLr> zzg7Y_Pv2F0e4K-h%$a2dTuyv#{?3A)PyUSsr9O1z$wAfWcXt+leWL+!n3BXwpF4IN zn}D$JsbOZWerqhoZ}x^=&Qx(!RP>gj2?X98CF&n>FV{`b{V2_2VK*4o(A-3edkcK0 zc^rI5Zpf|*5HIZ9@M9}XFM~!6{5p>8Xkx89`VPdCNJAG=u+#Z#Ad(k49~1cnBTB3n zdj1Ir%yJ-X()_9Y8CPXICwt3?l>z?aa>K(WftKsm&p4A0AG%~Lb|9x82ys#uO8_zQ z8C6Crpctu{fO_`ejoPhD+I(V%ox;wla^s3cs#Y8$T6F4E(6u0O_4tz+iKWR>b-&WU){-^W<8)=^lk;sm1?HRj77{4!VUkAB7%gTuPJ?YH zqK<35)gZbSRhKe2?p-JOPbj*`>|6apjro<@h5B@~7qb10jnod#iuFuj zUNddQh|SMOF6Yo(1R=mlk^~n`sZ3zh2NdZm#N@BJ)JlQ>ti@ zuZi0?)|2kGa~l7ddY7>t7s#m}q16LakEuX9uoN%?!_&nBC#h{Et{IwyZ5+{K`lf~#b$c?xkRJ(+ltH=}8yPx@4 z$)KiS5u}WAl9rUdh}15;Jgs&}dfr=GnbDKQBITNE8mV5;DxBt2JupWxS&@VC6l{*r z>*}?}_!CZgE1{Q`Yt2$m>PIj1wGq@KOqmXUobM~L0;ZIepfo-V?L+}aw?5 zmDx{>?_!3@ro^nok+fA_FT7>5;nnEZc9=C2gE1!=Z)y|T_g8x^m&xW?8ATS+z@4K; z#kd!VeJp&Y#ZjL19+*O(m)=G?1 z1AZ(U!5bqP@b56BguNMReWrn1Od*wU#P90O%NZ6swRNh)t}}}-U{x7g5lgd7H0|@$ zAt*DSkqNKqu)0xp)~VnaF*QBy)0s+5X^>w$-Vzz;L;7msP`X+!@(D%$&`m^<0DI)0 z<)$~NuRcwu(g!)gOyh0fENOM_+-0`+;onaYJXPYhuAYONVzYlEOiSk82=XO)yhMX2 zWp3g$bQefgGy197=*)e1Oy5?JUE}6F-w$V@E~bc?4<<($6}_*98@IC>Fc)yh`M6ZY z??Q{1S=m59^KCze-3Nx?qvX`oDu?d`t*!;&ZQxSMW0!~tgl_8|Fd)nW*te8!65IIl zYpngxN|w{z`m2Yw?O>pwegjF~>71U9oZrfW>Z%bTmqs1%f$GB>{eGwK%++@hbONu6 z*@BN6w0ACe0g2p9t_kqi1!CK7jV_mZ8>&HaAj2;;wIQ3vRZoybZHs>MAfHXU;MZf( z!xzXSC4g1ULb$CqQ6?r1t@<5GWQL(HpLAVmkrIf7{L<~sBQxt>c7n|j_a4{b9swLu zwWXr-IhW=po>5J-qKg#R&Xv7m+-3K?U-ONskt~W!6z3@sKap|6NAz}5@l4~$aHcnx zm6~64ZeOAKpx-s8uG`dhEW!r2P?kfe!m)O5v$ZFQXyGHnz>AC-2suEIH6P%BPz~Ms zjZkI7i`_9;XG;Hxhj?1?)`n07)Mkg6J+D+ylTx)65Eo+XTZNxVlD{~5UV>@9303Ei zvLUo^DFwl?^&S&kB4m)rEaGs4RNx&*lE%qK&w_Lh!oZsLLBeHSf;5?AQxTx8 z!xu@Ee(PLp<=?3b70X%X_Z!E0k5*vMf)}sr!S&)vx3{1KX*M@-9X9dknc5YdY^B24 zyo|ZJ;|@;jeI2_jwTs^7kOL32m8ZpYUiwcIikH<2FG*3quSCPIu;crgNmp)?P8dki zFF_gD&KjH+{VK2VbXVlcK8$QCtNdSX)u{{AeIv_{4jn&&D;NU?CkTRrtE#?}Gqp3z zHxlqcT6kj_d23j?(bT*LFR9<*f+zM0tqIc6Z2(c6^a41#`Q|hJ zz$dj@k8Y`@jW%tv0woTmxOaU#&dXYUFH|L}V-*s?f zke7D}QpAC-c$?(25fZ>#qS7S9U8T2j^LgygSdeycw}Wqs%b$39s>QgK`M;2~+&3}f zA?AOPv?YgVmi!*7v#$@^#&P*#38jwtP$`BH(x*quqh&pLS25DNfel>9%aX^QNCDjq zCnDy{El5){VF z?4-*9b)+07rJi=XNM|a9NG$A1eG9w!Jy2l{O@sXtYTp&1YE||JK6{TFT{6WsQOI4E zH2bZ#4%pxuk~OSHPMux*4?OEWu9FEX{r%jC3B=)O%d#s;B+wK zlN8s_XGIB+=OsG+(nhgLudjQWZ$FB`rUjN{6immTXb%bi*Jt{$*UtV**eqng@{3NEXW(x(v!)LoAw zcoYeJcSFwkYhtDj&I9Cfqwf;e;G6S0Uuj$L+&RtFMTk3wufDULb6dOfJ*1V9#`(sq zoSp}{e)Zvmw=(XM_oako^|pYs%*Q6rUWy3uGhr<3VKEdjy1NPK@)b@<8D%%c{Q3js zrSB9fuP5e@t=&yt{~h9ma_z1@^s8uA9jI=v^Xh&9DFo@f8dJR@DQ$L%6r;)dl!(*9 z5}6m)l%WFw6J%jilWTXoCoN==w^L+j{+umygsJFkHx0UCkp^`-EIupyu)7mfOvKtX z05yE4vM@T!P^>D{-SC29L}r|k{2j}&I}ytDq*-4RAITy6B;R0t|KLv_Y|Yja2N284B3f z8DvNI;d{jkdnMz;VW~umDoh70cH1ADt-ZvbdTu8@l)ZaCaSrpQ8m<}O2kN$VL>z%S z(-H~9UdJ@dVB8eBms)H9mMc)0oU3#~qWITvIQ{k@6>(`4kPh%tu~_A*M`3TN*V!}X zGZc0SHyNd_7WtVW@4G4!ayjqj@pDyv7P+fM$E?tjsqL6aFF1pfQbB4G$-hKqr;!ad z4?aZ)$B+TiDen|U<4$oCepPSTdViT~{2Y+r5%3d_P<*GTv~q*zg+u*S>U`$$wyXts zgXF;CmnloB9Z=Zr)jRaK?pRqPr3OCt75%GiA@jBN&J;&Luw2z>E>H3snf+DAa{jjI zpmR@uZiGp(hEnS!)qSjl|4@LkdzQu-c{Ibrdl{24)U0D}Rc$90S>q}bokPhB!?|%l z;s|Y2Huho3f6)V3^;KSd{yVz|&M*Kv$TxSWYWNPLP4doU+5RTA<6LSwVeuMPR)Yhx~$vS^H3vDv07pdPjHyw zT)+2X=MQjqT7%he^~n|emYIDa5hPZ za5SR$2xc+dHg|8A7)V!TGF9CT}NQAJwd);>#n#OE^CZEJ%Wql` z6q`C(3ArTcVS1Evk=cO!=4_mmU&pX~FF|)6pnnkN-lkkztw*x3<@x0904CIR6VlxC z!zq(Lldy${@#A<;+v28tM2#TqNR~UZ&$kz<;T*I-hu$4dnKiz!TMU~`4|RhzWT!b4 znC%MIJb^_hJ6C21W$rxhcAf{X1sh<$Qdn!gV=N>S*&{ypJjSE0sr)(oio~@tMt`B5 z2sgau+iRD%pX=00_>^gWO55Q-l0m2Y1=RG@^^bTpquDbDIAl`<;>v;z4HQN%k9N{F zRif`-ncp3~Rnq7Jec!}6#Nmh9NqFq3%9p2a+$@<}tK^}zu>OR-kiFJK35Kzh@(R(T z*8z2}mA1zHBLr{=GT@$H`d@^fq921O-z>|>?T&Uym^ z#q%NDCE9cX_fm{JqGlVv7^1A;2}8S^16c=(D^MZlrZEIYkB;gki+P`prCdGM_+=L( zc8C6~V%BP`^!I0I3U6Fugx_4g`8+|-w65PEAd54@2>$`!J&ldUOnuVPU~JZo*aPL2 zwb^l!uq|`#As|%R?VU#Ig1M_i*%9K1vv19@gihyEgj`(apDdw6t>P3nLs)R&5c9OD zhCv_uC~YaTTo_Fguq|30M8^bf10A<#rg1ecplCk*o5K z64}-aT?H)zvYcslbSzArS^POV`pTZFhcx8R)C2UTrolFqLcX=YK%Fx5AgmRWD^`Gb+BI2)dqNZP7a74}dN{h6l5UhVpQ&LPZ|V ztQquA9N6)aOBf{bN^d=#3Q>mBXZ#?+E36{@nNUq=K9@bJb8t>$a zJ06Gb&aJ*m)fOjO2_U=L7Ei7g?h6)jO`Qv&8z#O zqpl2!+7cAYJ7^c1ZwMKVy~8t-#>@fR6u16*hILT)ZY(Cu5#MSf`}lCbu`z@QJOh&@ zI|FJ4V%Mcq2rZ8e9x_p5g*0d_FICYh&qcDD%DaERoe1RhGyu*IIi{UV?5mVb8@cja zQ8$%)v+eeU#L@fRNpDpCl=l6Tru~C6wSb;#sSe%jZl`nqQV8X{<3~YyCl3>!Rb7SV zWle5aLH6KI6+Z#7{MCdT5r2bK|Kryd7vCmC(YQ6_7$LxRt4m*@5cEC{0F{fA~Ayvwl z_PcQ0j6hp7p7uuG-}e32uQ{6(cc4ww(|;QL{$RAfDFLZ@U&V}nnk4_Ro1kz}AX6S5 z_}upVzNgFy^j4Gq=N;jk{BJsP*9r*!vmj&lza|Gj88+QXr7tDNy;T1>82`8*sUPUU zi2GoEfo*^93Pu2|f4lxdX5U*V_?{x4zs-{t^tT)L*RNX?BPn_2+(Y}_!T+U>P~0N4 zCfIKs`oRtT^LQcL)3NTyU?D7tvbbmgkudcWJ>ShTJxYZ@&tkH_|xD*Oj8rI%H8s^%2lIeMWen))&Wr-cHaGP}`%|V283) z@_E(&(%2$&QzBhEX759L9WJ;%)b0Ly@2!Xv#p2Wdc4V`s%d^tzd-n@*74H^g>-;;OEP8D{B!TcJQh~1r&F5t-s%$ZC|02IwwmT|W9}cV z2TvA@TSau<-+OD7^0-YQ-sah=Cx$@U!5h-<-N8o<&PTr{wXI+T=g52Y5F9ngG$;lA zC~(HS2t`JoG8EtQOcWm}{%k=?PY`K3W%=UP-nTKE+Fut}mLs=!hjWuc_Ov{O3DtiwACZ;!*&lC%8?%gl$E}rqn zJ}9}e^MBjv?_CLsenh{@RB&(a#cU8 z=YMHSzxr=&|NXfC+BRrQPLtngpQ(>&_QaWa+cerj{f3;$OPP?lU!7fk_~S z;ReUvSM&d0+pp#NyoQ4NoD%;@Fn-cx^7ebMpFN7Qw>HV#`z@vz54OJkms8%%vHq;L z&!J z?)E?R`n2SzOL13C+%32hT!RF6hv4q+?(P!Y-DwE!?sj|cefIm^G46ZD z`0m-~7mU^2vscxus#*0s&+4BFa^lDccnDx%V91gZB40s&(7?bTdf{L|R|rsuEWyA? zz$8Tkm0iG3)?r;R=T~4a-mTmyBBq2GXYxaeL!dwVTpix7AUcVjsCB5Ft5jj}V7IfM zgzB7-!ucVDl8S~>v(;k?xyiG)@c^$g*Hgy6JH^SuMPFs@!}IX`*c;>OT1Jjbah)tX zY_0UifTjk3BPjSlU}l5;$Nx@ILR&E;mB~7VXXO6ptNfq)0E@s4dHC`VZs_l&0IOKl z4eOOPrvJpczZdfv-?dlt{YQ@a*HUJA5bUzED`tyJ^#9cLf365F@`CgaxA2d3vXK#& z9CU2@)(sc`8$r-=BXO|v2hO_c^6 zn<7usCYt~AMgOVYQ+v=>nrY{xJQDvnnE<|bbo%}SXt{Up56eIPaeVkTGU)$k(YEf0 zIwAgV>_mkRJu7Sdx>F`$(LYahfEG@5i}pn0hWK67e<86>Rl5t1PaDrqIR6`#w)<3! z-$xVX{};^U!LDAm3jbs=IGCmL&)sIW4Z)r?IzP}hbf);v3iqE`|BAo_srbxycf$3L zy$0YxgENN7b+V0L7X6PSH@hDJQ*ALjcfc2~2+=LfngV};2#OW#+b4FB;J{pA5q0+i z=4T0CCo(jPy5(+?T&ExH%ZmT`w?V@hC8?0s)kC=D2JPk) z(o-$>^EPoy3RLio5zOZA@G@vZH1~SGmHns158%7NxM_R%Ku?GIh&5l)#d0Fph9mJa zviqQt2Cl*Ubi)q}(@gfym`z<7ZT!#OhH0h(fkb4X5*!v`4Irt?#iOge!lUk=$IJ#u zV^jwQ1vS>Q*YN#^d-BJ}Rsyg z7+n7wKcNKxR8-icMn)7>tkneMidaG_)C2w%A-<5G(9qHShC*y_F^KW~hlWBRYgSe3 zP%{VXQ-%A3{&Wd|2Yd5T<`p(;pXK)1mj16z-_%E_54cV~sg*jRWvEKZX{99CRhcfX z74P0c3e>eRugvd$!y9&K{y|a3W zQSwQzmEv^t>V-706K%tRt1&;o#0V7Tq4=hKUdc&bAY7MfrZVs31(}u*pYU%g%Vsyi z4i5G=8zS+0?&_m8{J-up`w*gp=BI?5jF}s>wV5=?svQ5}%0F8YKpQ&9s?)8#N0|!f z{eQWxLU2<*eek831(sr-4crw$3PV8?7sHlMO<_|X@t0@<8BHa%KFe>iUR#ezIj_a8 z`rnM7mr}Q!32{K4LPnH1NeZ$QL$zqukEW=%aF3{D31yUEz|Q;MD>YygeJP^_))*_H zRPoESVn_&_xVjm&kqDohBXsTEi3*}P60U+XMbf`IsJl3yjzXA(gflDO$H0CI#+onF z2OIP6vbV2u;n-^QlZKjWpWsUcd9x5ge+K?xPdyiS=H!DwK5y3Ld2a!%n9sg3>_Ccp z4j8m%S9cG8RLqGmUELL=&>6jySOMSHit_}k!Q!(I64FS*#rZy4BEJ6Qn^V5wy?Es- zIuV4ATcucvTPhN=a4#DC?Uwc#pG8n#s_`sq*H@7wWku`~2;E0$w`^NbzD_o4A=G>L zDx@K280JlVVkW@9YlZzlI8A|jAI?**fk!;DnPXySMDcI(fpZgrxwireRkB(k_(5Gn zOoZTq-8T5|H?w|5Bf^GxjCrrxHpq)ZCUOt}+=GF`8u!Dt=1X7y36xK)t^2NU6oi_>U;gUz<7D9@$H*f4$Qu z3LxY`(CTqJBmi z?ByhSH!uCmUY{f%-tyS=B|&<+%a^P(mF$SFEms+Qf$kHcKXbDl5fq<uk#7*>!P$ z?k;Fr+u@}=1k*{PsjT#!EqHePTotN1>Q1rx2^=q-8gyptu+V0yq=Zja+PLr5>3-G8 z!}jjt)9OHxlr_4DX2b+4Wye6Ei;x2;QoNQj=Z7kev711}cR^?5-^E%sAPl>>)JZQt zDr8f(0NXQriSu9K1LoVTeh*hS@O}s$+A!QNmgPz`ONq+JBl>3~ol5xZvw%&Su1v#b z>ip>$Uv>&KZ=cFhR+VM4xmLyX^(t^gduV9Q5T8p8HvYD^RF$*Gv8qWLg|e`+ zwR@J=gk5F?1ritV?KUHiCO=^9cS#eHQp?_dce7@f5Ci^A-v~&G`-$n;qyMVloAM;w zBd@j+4OG-idMS;q;rm~#Z-;92{_^MslnXy3$jR={b9G&RT~dWYnRAtin8k`7+j5}t z0cAU)dJrARyHMeirI*XMi|pGhSxTxUs^^#OPjsWkpfl_OV!)ZEXzg_!!E3aY!kVF| z?(8cAsEqvY=Z$8)&+HE!Mso6e(WbbFziVH27r-U?c?(UPr(JFE`r~^RJj1^ts-7Jb z2w?3Dvn%`!R*Ziw+D&hpJz;p`)*a!PqsbT8911}%(fv@4m!;z^8|QenJ>xhezPbg9 z>U|q`2GCc$Abtc=6qR+_WWQT`CatihjXUE4L5JhtRpUP&Lajx*O$@;l@wwtpVE&E4 z|GOLh_p3(;OWHEXs%nAK|NHCzzphS+L0Pp{HpNs{^lS-VDsM?i4#F<9e@$a7NInI+!Z{xqwZBGEvoRzF0&^; zX$1Y_n8~(=4`|h9FiTyqa4Tr@Nwv^_rX>`0ci^-HqsR1tI^gsTF(cuU6`uTnXY~oT zNsD%95aW=nBvYiN8gHlsO3Knl7~Q9t>E50O`+!>AKhP?*a3q0?aHyh0>{|q32dN<% zFpMaUUjnYp;M^=H0jHo;QWh@K@6H-<3)Y*rmQlB02WX|kjRA}2@mZ77*Gh?WeC&?2 z$cDk2vGV!FFF6!d&#&-2$9+(2->R@#O_o=Pj!!35(`PPDl8NIg2+K{p7~9c7lF4~40Cq|W>M-WVM6?DH|za}JJt zh)l%=IFLM3U&^o}7Z-ys;2b1pfuGbv$~mW_8VEUvh=4c3;O)*hF0mrdGvLgWja&%Z zF*I`VfeWVw!How=Xcf~Ms#2)Rh#1-1{^J0zclHf3P}hu)s)H$}UWjRu7MD#ZGUq0N zcTq+sl4pw1h1@xXvM61P5vT1w0J|0GKX-v}8L{vwmmQ+@e$x2G#3=muVZiwA*BB*+16p^*b-d=kCzXGKU-^uiSZ;k0NkkI9 zlgc)#iu_HW1HJQcIc`S<8qGEKoYTU`PlnJqFt()ljtPI)GU)`!^%Kj!*~bD_IXcRs zh{`~s!(|V$L1>mWK}MqShfuJvsFb80h1pQYrSF+icBB1&0ihVhtZpHXlSRx_P7bHa zlUGTJ?6vAv1m{fms=YTmGe!p}XEOSV0URHDj?-DS*w!(q$r&@3VeoekYiX%)1N26}yKgOS|wX*w7NthopoU-e?Gkhf=g30xV zlF2iN;E0%iYYSNc?AR4_cNmQ6ZLAiT)JnAc{@DM|xW3YfjZi8@R1XsDEM8WbVAOfE zSVVcp$floX9Gjcw*Bs3=)$+c}`Xh2{x1tQQQQWdyT%DQ;pF4tIy|8-OWER3l*DtIX z2$$w8irq#A(g1uRsTCA;Bg@OjAe+U{j`R_iPMt7uaEMP#Y~Nuev$M0o>5PHE`ZYgdy{vjNoj8G2-8n(t^l0^FJ>m>~&@?|qaQm+gM z``vwNAqW|Yc%Gxn5#V7-4Z)Kji%THV+0G&*qU9xt6k^NrTD65mWKORJJiJx#c@;SZ zoUTg!e)8HeTy21Ijj2I<3-tlIe9=-qQ-TU>jO;nKf*d2Zezv&Bg%J!JDvxMcH4&E0 zmB~mz?AC$@UV@njz^MriWqEuK14!~Ka2I8@ZZ_^_gE%f;{GD~Bp&s=o(` zy_Fp!3Ehz*d9Q{{D!K|(_iQ<-W& zW~RwBE2G4VF(@ElGYJ2CK)e0_n{ev(#jakQ)4$%USZa5~|7~Cxvrs`dGt*l7xMwA; z>&5SMvKFz9iyIR0Q?x3RZz|87LqtS`)s4fRKcmx=>g~mn%wXH#i`9@mITaOKE7AA= zFE3y=3Gv?kDnLy`uL2dt_dfw9U0`z!}eL9&=}b#+z4!-ANSqH&bceP(Wcuu(x* zB|w-zDPgXG>vXmjLD=Rb7#XFlb~2yG^ZWO2l&@jUtBK^%X=%aqt1~eP9k3ZZ1-at) ztPZCu&^aD&xfFzyjk{ooNOH2j@-U)=LS%&_W&`Q?ABmt7=3$$$)(D|f)ku`pdOnS7 zng3WY`Bf6X2fpjdt?lHji`SqHibS7@SGFZOpIjtDtp2lX0{Eel&(n&nYQh?yl)+*G z;w3_Ue%PE<;8F32q(bT60vj3eZHFN2rvMlyL|T}KAxeZSPE|z(1)!Yam1T7A8R%R7 zjI^f6>~Jx#BQJ?u2j5Wz7dW4u{-iw-#x~CY{{}zJnlA>5;00(~!MUVT;BvQ~WEBeFy+cZFixqeA*Di?jdhZjNHY4b3uh4DCCv50^K zc5?`vz&(d66ue`mV@z``J&8NR2OA;4(U<58*pvaEWkh6hpw{kKC>EXVX}#rf{s+6Twj?6CNg6EQdG8i^N4)UT$Q8TBdgJ1hK>^~oeD4qDZhxm9Ac8!*X3x0brVz67#|FiGLMt|D%QvEMO z1qHo4 zhf!J3%cIiTei*0W0mZPYWyU z1-yG6Z$i8rIksUdiJhBM9(w{RS*-5y0?jLb)QX$(`tQ=IvX|Ik$nkn~s^G>psM|^@$~2qVM7NeN+#;&bX+oLodZ?vMj*SfuCN6)sc@MIP z-^@wHyZ8LD-H>Cgx%!lq_!>%O%3qYaUM7yp`}(U-(D_?mSpBz+zqJ5*_;&Z6vnr1d z%`WY?M~J$sZ;keBM6SJ_Z+i{B`?6B@wFoXBr@9#BvOGrkJvS;AYhZ|&!J>F=qZT*b zeoR6xHJjHh)(*6%@S2lWw!Zx4PSf`2XN^xtn%B?;`b7cV%O)US>}BOA9F0rQpY%L$ z+3UZbJ_*)ghzIKm}NeQINa+O2&*r@`~Llr>ckZWt5US!<8&v?mD z-nM;zvm9&KPy;4Mv|M+ojBf$C-XceQH5%=%vB%tYk+GEbo?nutAzHd@=XaAXG^@aS z7qMwz!ND?|u6VkB~ifJ;O8oAj#p+J|lb_nr*>ZSajEq=8_XaOvTb)lvo1@YByrO2IaHd*<=4`9Q z!BkJs1E-`Ylrop&OD)cl0u<)Tx?>q9JrBHy@;#n!kRt& zh6i^L)BQ;ecXP$dTz94b-AMezdF zl~t5_>DBRYWxnhwAONcB-UCA&00GPYe8OU6Y7ET)MZ(A-|7x{T|G_lF5gT--FKT&t zSKS~RgolQ%0Nd7VZngZ;Q(NOgL$3KZ+%=@Tc^$f#dT|~o52(Uf?g)PSNa{O zgz8N-6QgF?sC;+iUK*Xft<4iJR9W6X1H(E8f5;2yo{zts@NqTY-nAWhyoDo-($O;Q z*D=P_ao{uo-7u^gpX$bJfHfHRycci?2#681b7i;pL5m2Te+=KYKF}*OEh8Ii+8(E_ zn-xm?a>*Ve`HTGxIy=FQ;chgI`CY@7{(`6ur)7CiTO(65CJpKY~@8~bq zox{d0*{=@nu7Ik)n+*pWE#n)G7Yyf1=STE+hCY1cGHBL|DlN5`m8<+>YoQLP{DQmB z1RW@fY@<)3sAJ91L{C%U{wfU<$$HdirE02LYcMoftLNP}nC0Q?z2-t6$$u2Wz3Znz z;(z<``Ez5s0N&~dvtdU~`Io9UzknU?vh&+G{i8YKP0B1JlK%bzljozhHyoMQw~-;| zooTAfFZbW#X|9o2E!*$!pO)fSK0%(%ah$F-;J?32daE$aBqYgQYR#>PcR|l}7qU?= zE0_9p?0G&DMiTPCEXsDEUtT)09DzoU#lt9@4*M|*TNy8-&0I+gx!yTChD-c%Y^&$S z@6y39L$`wPwynp&CRgMUqxx^&o~ZoKSC$gha-OrH31xPVY#f`JJT`+{!4bt(#fz<3 z-Wn(^iDoiC_UYl=s;M6%KLWpy`KKwO>Y;}FXhV8!pE~2Or9efGL_vk<*d4xk64mq! z)L%o`XB`x%Z7})Yeed+r?Dh>>#a9U)vc3K6>G>KN2Iv2BBO5v>`8s1ezvX}NYliK? zSWT{b+spO1&c3<-T0Cr7#YPmN_xm89jpO^VCbAizak~9Bt<_cq|Y|%qgz%-uD$EF^#scA zw_fy^%9X2c_f{eiK0^Df1t)e3b5S{cygzev#vic+Ygjcn8TOlCY;;mg zOof7gAxTP*h9mP>W`HyaqqT#;HW6GC>!wubV7`Cql)}p^G+XU7P`4eqQU}=g_?%{2 z?m<|2;y7hV?jLQ+=*X-)j39qgSoe`y52a!gD`08AdruP@-$}R*OK4W==mo$Sgsq7{ zKZmkpkS&e^Wp(A#I!84v>e!oi4MweQCyA1n+Sw6pTt)3tp2#mlv$Uobj429wc&0utYi zLcWvKZK;f(&W6XftOQK9KNq3*%jHK_7c_F0lQEV_5la*j1k@z370)yw;R-6KXVoOD z4#Po|ms+cor{OV&DC+w226lO58XB5phY|AIWr8pEP-0O;>%3S^eVW(|>YE%c5}j(n zQAEg>r^|IkN#Rf!ov#a8)HkkX@(9pBtTeAoN6Yd&K=a~XjBXiPw4zM}u{UxezF!nS zKjiWI(x#1LnjR&`DtVerwGtDqv0ufgW@XE}?yya7LotYPwT$yiP0G$0E!t3^aw*P< zxW2x|r~PW`>FGT?;c-^L-6P!LcGqoQB-gv6M44?kh*|Y?)_xC;6~EoU6v9yld>*26 zp{8X+{5A}KaCF;zUr2BaY=4j zp2_m=@th@Q0Y0Za-h@@z_0czR9B$!w-`e4V&~jf$3jOq=p|Y-$g3K}_6O$4vo7l_K zB)!CEOSd$Qh4>#(-WfI%*BN`P zdVko~>AKGzKPhH6J~DXkzeXKFp+*RteUylvGRDzUpi+7&%JPP8fx#LxdX*V!?~*)v zTGY9RX=gWCr%Zm@V|+kqdVTI1R|RI_b8NjGMzLvmB734PQ~*J4HXDn{v+HRw-3p(j zDw9zN`UyqJd$WXuiRprhZd87MPn%*`5%)s>Iv50Mx;cRm&_sYb|Kl}u6K+DFDH+~De|Y%uPX8NILBsq5`2B|gn8LytC~OMB4vegjv@{WrX&DQ zx##F;v?puCiq9T6>}}WFC!iA4c0 z(zcfQ`D^@vr;7czIk}l0jFkFI9b#J3AuVJ~d7L1B1oI56E8~7H`jn9jGrkEVD?BAL zL|Ayj4Ao?(aR>QA%+=L)EaykCE4rcg3IutI5%I~P@hk{jG;Zk4K%)YsA#UIelyU>`j7dN(# zNh*;We6GhpJtztJ}{R~zxF+bi_U&$fF;o+fr=h`!Pv}94bUksUeDdO%zYFKFK z+_}$unQBSDQybxV=QB!W`&B7-7o&?+xqbTI=%c>;6YaYKmHE8RDh;Z%qow5BfqG8!)DM@GDN!I<>rX!8x4vRj}SoEB6 zpNa^JOrSsUJaKap6V#IBdCFx@)`5MKqc)Y#+JNh8bSe;o0cNUSw)Med=J@I_B zZ0(oVYlZX0qZ*L4B$XEzcZ5a9^O53+vgNX~rivNi&`%VYmL`cd!4f499uR=C$BcXG z@YXB(07PUgGiJ`+OREF+5jL$`C7PR=JV)w0*iICg)F_gPZ$_?u7m|?)Z?QT`Ncvr3 zs;7_#7!ewVV|9LmcmdKlvcyk%oeTdklBaRsZcr? zRjex8xlRoyr(Sy$wM-13bFmvL*_8MRFya_vI`{R#~RFYkSon`Ytv*oabp~(Xl1K zhWyU4(`4cIo(eD%_tp5Hc7FWeY0+ihj)9GiO}Ao*!yPtY*gqHBOD)Ru)HO!AqTRXP zBj(T!i<2kVZ%`&mPdfHQ=j1$|=NNxtW@f%TgC$-}gWqp9jI8_-Ay;WBDRw5n{!-%i zJ^XICp^>pOGnhq=XWsICfx~x&s)sZ7%W;MC21gb6D3Bh=puOWLJE560#xZygc)ITH zi%L@&wR1UmYXf10Wi2u$;M zk-%{=Eyh=FO$>Khà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

    izpcB4FPPr2&Jh}&vRlLWr*Rf#^R+;1?ggJ4R z^|o@i^~~BDjV96OEbX6D1GRjQSO2Kl-M9w8r&0l8 zJSkjDQC3!GeYgqhgyRGH5T*!{P5_jqjFMMAb9%aqvO%=_9!N3j!Ia&9gE+W}zdEpw zz7U1m120TtVZ3uBDn>QrFz3}!o*2!eTz}ME4g$3BlpVEN+eq2Ao9k&Hhd?^g`$Go~ z#Y|iMo)RQBlcip%8M@8vlfFo%wY_1rr;}}fi&Ku?6ya_@tBFgHSKm{5bWIfmZS)Es zsCCl0ajPn;y=7QV$PI?ip`mzMS2A8NrAMh+A$**$ZP7s|kiVw&w?HAg^D<>sO z7>*(uR#%KEZCv)a22i0{9tLE2r&f4dDZ5IuY>r2*)MtqtZbTZ0O zx&?0Q)72^ta@m#Vd(?VUS81KRiopM?Wai^H+5;5dCWfeZ&fA9}7@iKhU(C#7`y&AM zg?O(USr?dye9I}VSFGQhq9Hw0JVaXdM8qrjxTCq*Rf_Y*fTPut){Pvb1>;Ztf+NzD~d;mfG68y2rCht|;HjdP|D>IweqJz@f_i1@*Ju z$^A(iuP1YRHv+YK1s#UI1B5v+X)tRmQYh*Wfpe)Jttafg@HP4CQoo9S-k27*c*696 z`6o*!VXiq&s-X{(jG=bcz9(z2M@kK{tDlvyd+3FjYi%3flVNw}*CE5vjLnT4FU;mx z1o4H6tW(f4S>`&L8C#s>ITDx;WaE?;|9Xq1BFC`zZ0?xnMjM>0gwm=i%2>G8a~5rn zhb!?tShDq+n8$nx;rS|>K=h-{4ptb`c)R_YsSp={_AJ6hz~H9#LAD zdhM-Q=aWXmAB~W`T7qOUreqw4t4AJLphp`*ga^o^1Q9YqzrM2HCc8xTj?bhJvAb_0 zizlNTfC4v>&_jTh^NiR1>#;+pxr7>MH+%+E6&GGFEzP3gPzWCh@kHbV__nV5eKk&M zj##_*H#9H3^V>R6Gm46VY323eu?=Q_meWZdxZS{?bvuUv_SQ}!m}_Zt;D-Ug8ctYK z>riIzZVt9yTx|KVn8dtjjTg5f!lS$o$A=WS&&ZsU%X2cpqq9%?{Q39u21oQmIM7FM z4@^XUSc`_PR^1xBzMDBxp!by{>4UaNYv49E*7aTOLHlv$RZPUD-4ypbr@-~&KpB!c zRQAO=0Y%q^(;nK~rvZ89H>#465E|ckwrqE`(+^tV2VzMI5zO+tgO`i{%Z_V+c zV2qJS;JRJMG%r%>_U*pY-#=2}h@3T?p3X@07P8m9aG2t!$G#RnPS3AWj1qSFr1e%=^Rvf|1JB>$}gq#BGVt4y(V2Vk{=rLc8Z;Q&?(m>T2}6J9=OT6FU6? z##$1yqCBp;A)^6QOVsbssMWnUG7xm@{?HIs8Sf*4J5d`VJ*?-R=Q;^Wm8OSq(5p_4 zQz0ztVu_rj_*KL@3AxgDN}=DeA?5vE>A|zp2gs^DiP(-_E8{~MdN~L2p^B7g^@ss! zEF~oE_v{7F;T3ZyE8h{7@s&}2rVP)ckDI2y^D}+~SXarjT5s#bB91{ACtf3_f`7c%LaW)jsV5BRFqV0#S9Nl%3+H>zz?Gn)34p z6lr~Jr;SIspRmlJD6Ht(es{`FHn?{tEI!CPVl)zE6&Dv5j@7TzcE2U>CeA9i&sZ#; zWtrUn@$FM%Q~?XXjaeIj>ilRwGd<4Xa3~z3A732(B)|0NJy@g>nTl(--N#Rwzcbk2 zePP-kYUnGW<-7lGOOKva!F=h!X@U@z3~2GE5#=O}oS%`Q7yyv>kTWUxBgu1NBF^#j zIXmpy#4*LSv~rCEx$|}A?+t^+xpr}tt*XqCQA}E+b|4GQDK2MeJzIU6aD`1a?dz#I z9FvjTe?Y!2<9?k$cu8r!kJ1KjZfSi@-RjBLz;NHy6Q^74jCn2l3N5UU-7%s@OON8i zw05Bt*BZ6bP5Z?gxM)VexxT+v<=ZJeK=BZayZ5_V$5q`0S*|^F8jk5Ro^MYI?z4Tmh# z?te)_AdGw|^^ILQBcJq^xXHq{c@+=)Cqb!DPi&9oJ7e8lOF!#(H_^3I?S6t=uiEh- z)M&j~7r0K(k2sXSJK6tgL-b(M%e9TgwkTfoU{;iG>xkdM$zERQ4i8s;JzVeKuGA% zvxJTWP)E=4l0nU}qm%+mP*C7UFS59uO45iwOZ1(OQ@Qwlv5TRa*IiUA*>+L;#h0ELwQl#NdMZFQaR3la@ z>#XnUk3v1Oi^j{KF&Z?ddgchP@erAPZGNTsRvjsKV;q4>)`Z;8S@ZZS3m`oloj3pz zr-6)z+mKfJ^A-MzQ2ed%NOMR@|U8huLqUt ze&d@{janNHJ|#)3TO$g^tt0)MR?PWndfue`S~hhYP1b8+Y{}E&F^g>Xqf?=nt%UiG zotTccO!Rtqzy2ksg(G4nGqrP(63fzn-<61e#GCKnb-mdy9pouAX@$e0&Y>|Y{e^>q zB$g}jB}f=uUFcapS7K1m{D&&fExr7Em->80G+PLQ+UW<(CP~Hb*k@1(pKzU zaykp}AxCssasXvsjRp!PsojU41=W%B^(Nk!-hTZMmkt%~5`$z;#}BxTaq->s^=09W zjY))-d1%P9-P~N;+4^B<9Ta4qO^=!X}`>qL$L5DuFt zATRy&^;nokjbWA5f&+OnHJ?VR;!cDDUZ@R5hbc!Y>2p$whVT4br6tCMLXL-rP}Gv_ zDv%h2yl#%RgR_!ff}6cQdAmzm3%&ATKD?(E(}**kP7??{{b3x({~!Pa6m1c{@F!`wb;H;^>mSZ$9rSa6ciI2rm|gOBRQjgWzdarRs$UgHs= z)uKg;CBrC*sz>!o9Ug!(ZY+@Usz|#QC%$A)-5PMPT+CPy8Y&@05VA`73D#i>E5G}Y zF&>@EV9c@YgJx4Bx zc!l`m={ANzn^SBYVI0qYm?QJ9Qn$}*H+mCrNLLwfxoW_@JV=7xtH~bSBa^`P@yJeB zrF%neguO)%zwCmGqv6fYBa?rn9>sgmfO~V+W7_@e@BYRI!tS#=2;+2ni{75ToNVuZ zRqUvZPjBl!D-nNQkHK>rfZ=ulh4GUpfEGCA~K zu-ap#mCY=8_!Y&ZclqOfJQIHkWk$G998@V#fp-F7H1IZg0`COp3oUMM;FoVMzk{t` zPr;uGSWSD!pf@ADaf=D$C5PlZ&Hs~G{_hQSrP|#;Az z+Hc-_`p4>MSO8cf0k2P}mdX{aZcPF0n$ zc{3>hQ~evp)oXTG{fF4EXT!YJAaW@FDayoss{P$}K$Gmyk<7o^mknLlvgSB?^Z5VF zrZvX&$3m`UK&NPa9{W1i(&TCp$xA;ARTmSmZ1a?MA6uBBm{LMoE?`SJdh@{N+DVmj zchSH0pvQFo-*M%&giBkL{g!)l1I)t|F2pqE=oi&Yb)@>Z-etjzpM?#C=cc?W*Xhnj zO@bLu;X1tKMNazLGrX0kHe`_bbfwusw~ly1c*!(OVnvxz!yK??q&&RFX8?kOZG zcp-95<&owL9oGgETvHb4mhnuL< zmlbtevjkRhX$ZxgMeDSDf!-YHypBF1n)I?{c%;!g5kvRtFh-#t&OfMLU^>=53HbZ= z_}w9%=yT>*?@zSEu;K>Xto+$V9l2hIHf;#|$js_qv7TVBfLzmkm0rvy|`j*AF5B^g|YzeN`Mk zggzAck2+r1zvbjy(3x$@FAw~oti)w|Dd+$-S1jpn(4V{SZsl%2Zg44AUB~EAE$^(u z&^Bekr^fpp>=3;7Ti>&%zwJC0L-xWaP7lWUIFcl!E7TZ^7pLQ6WL+lWiPe%jkrT_F za^*su(XBFOk>ISxnbp~%`*%`nDBjrPUXD{YGzLoTg%^DTd4q$B^@=%PuRE_|4&MyBm> zbp=F6kG{#n=Q^Y;3pi{Exl;Rj(1Y2GUtk2{eR^=H?+&`}R|CiWp3VMYk7@GczdArr zn$(H%WRrqV9UjH{(5Uw>l65Rfd7BqG!~6scP$TCWni$AG&^X=E`zmq2AAS7W=3n|{ zA4cf|GmCV{QbJOa&aS)a4nGgyZ$Vt5Z&>yZpGH@@>SmMrce?YQQaM6hEl`%?u?=q? zOzOyMS_&0>^hw=M5vFt&40;SBI8mc!6{ZxDy$*_he_Myj?^Ff3vRL=KDGH{6y-A*R zSB^8WFYun$9KZUcHf zm1&A|17%t!p5LEklGH@zPxdczaw_p?U6)Eyp4H-+=18#~&Zgk@nlOjnWRh!}HsqTI z>-9$avf+sPiMtTL7>iZqwNf#2R(+|PO>nv)HWpZXwKp@mpsq3$?<3Ny=%n~-PY#~& zd6Q(X#fiuldSLPu6koLadbU{v($F7zz_gJ-Oixd*$a*KPscCAKI=i^!f-az6UtfRs z)~(lWU_r{@ONP_b!sqDTMyO&ExL`Bd_+oBb)D8KEL&etG!U6(#InN)-hZ2i=k&>3J z#fPOGc=E;j8-Tuz27g(i0}L*mwS4eE4_Iv;5>`qV&e`rgER}g94&K(%2&c2Q%fMB4 zG<8dx|1iy7OAS-BnIFasAoVkh3=C|52pQf@ri~LLeX2}xews&seHeYEtEsCO0d*9# zWisfkYoyC2CW%O*8xiCz4)-b&R^@iDXSa&6VX2*Uu2DtjZ4PRo_p*&V_DRXC4o^dW zXd(_tb05$eRY^hvXl!U|Z7m)49NlaCCHDN?`}f~rP~h72LSodc#D3sHno~7N7m#i) zBz+9P)hIfA!R}xo`=`MnT83uA%wQonDFQPq$L$3=62--bkI-pU4-qi!4`ts zj&kPr63jt6r1UlLn|kr%4?z=+3Rk!f((#`2AcxU4js{Oy=s+Om?%V zX2-0{3*8#&o1dwt-5dxakS)4&Ni=b$L*Tf=LlHM)9a2?Q+jxXI5?k%phVSQRQX1Ax zmS+^w=?gQ|XSz;PjylE+g(-wsDU-@1-t*sfPHE4+Ep@;B&EIt7x0gB$+1L-1erY_` z?)c`sV@frDN7^xsoENT#6ugVuR9j<{zvHF?UXnic7g>g(IBBVF9=xJH9sC|~(5uio zw{PE`=x4|;oge{ZSzYQYPEBS6`TaipUY%PQfgmzp6=7T^TP5bF1J*uq(a(M{Dyl9y z{rzcCrlpsCMVKn>Q?%bne$oO26qUOLJeW12aqP+^THcONL}Py(IMdjaEwhx8pom<5 zJIw%z*Anr=f^EYipkV{d8SZXbKB_H{Z;Lm@e=5MbNL7tT=hRGNkG|(OeD0EnO0eoz zE1ql)qCS`ZZniSlH{PI?=`;CED`gpva4_rZB?iU@bJ}&3v%PKqFj;{}x9%_w7i@)dDL==C&D_bP9SV)x1j#iws6oW{VR zrs@~?Boiz1c2S3hhzm_77fnsDlbES6pB9s9U5sZ~jH1^vttMMWiY_rbvp~Ki$=A#D z*SY~vnJnRp-5@vD2%7JSbaAL73!p(Xn=%%-Y2cm>|1p%IZe#Od zW8M)J4%%2}JSoSqnsPNp&h5jHM{_5+N~N%{@WF7k*X=R~V;>s0SPMfQ#KuGgpZLWK z_WfgTHSWVzlyDf7sS+)TMxd~=2RbV6*FM*z*VJ6D;+<#y_+D!Pq2AU45Lq-Kmmy&( z&$rEuG+0qIv;+ew4{Dz7bRG#5xDK#!4AL|adyiaLHR>H?PfBnaZ1>5g+Cx2G0P$uu z+VbJUCa^;dCuX3ranDcDSs7ysQ0X-hfWD8j%4TV(C<0;HJuG753pu9&YR#PFtmhCK zxa#%Wx8GC*W3W)ZkfkU34kG-jyN2NfA3t^K)a!UscSw4IvNzWCs0l`T&vmp3CVsV} z9RBGbI!S^o9m0=HVu|h(2a-w%ih;fSNuREkzjJ4GTVMsfvPGGh*WBm(Pp$i0=0<8t zNJzwwvO3!!pyCvq`jC1Kbts4$R)rurr~N#1kEmCg3mU>uJ{=BtZ`@L)34Lh4-JXbL z#ibE)rt(Y6GBh{2){|~>fj)*kvXkhRMm|UF)A^3Aq8Xa>1x+?LQ>(e@=ge1TFf;W& zElZ6-MDG4bZYQht1G93&b8knbobekmxh+p*2|1VXwFMYyDL&Y=&9U=AdxUP2|Y5<`l9 zTXwJ&TM}J_^zSN-DiK1Lus&;y4o2O&NzaAqRryN;6bZl0`aT8Xoit7~&ag#q|2XpC zJn>fG!8V)OdfHh&TvP?wpDFx@Nj3gM4N{tl7%Yiui{d7Gq1QRkRGVUQ!9D7UP9k?Y zulO(`U6fi`x#82UaJtE#7+C)8@;~VnbxJ+K{#KSp3prj4O4Apb#XYdrejwZ+6}{aF zyYH@yJUQnvP_U%RA>0Bm>!8%M8agT=!QPs;XsUwbSKdrwZ&=#mOMlUayx8en%pY8V zPHjBGE9aUoR{i7hEO^MJh^s8kzU5I4OAi~uTPYp{agrKut3avaxP*3t*sxxe`+Om2 zr-zF}eT)j;4)MP*0h4MITKCSK2UJ5cGSjwxe*nqd+#b(-vIfOw+g#b{qWQs!t_lHg z@F`i`Xj+N$`1Q%y^kmxL_V1DBWm`q~{Z{Yav7aibw#q0>LMuJ|`5-O9s=Q<@?J#Jy zDyngMZ}*NOaRb1EVTZJGY^mh^Nd6r*XyYn(_sz+d*xsgbPE}ixs;mWisbQs~^*%k> zIF1ocL_>3sTN+i^1XUJYaI%Tk9)wHXe=0E~S6`K;7z`bMo|`&E<@bOm*h0TBt6WV^ zckIYvb$su(I4r(1$rJOlZ&0S?;5m|9G-Uf_q$aBfJ>$eDq;t1cklZ8wJN{ORYpl#qA;33F%AXVr!(-I|RIX_k>n_%G+gdy`O%3M1DJ6?bg_W#ItVu3oVFdUR$T z?D=MhSe&u#&3O%A_WI%THe>atY8|fdDz1Ke@_5;UJe;fM`X(}x>xbuY@?f!bcrZUg z@gBFjy81ZFK7__a^8~7ioT;Dng8>CSkh(c#SH7C7453!P@903j7He#5bcXcz*9>cU z0L3B2u(%hHJlxBkZ_To5NsVCAowLgI-?F0##x>?f@jNa!V!Tag0P33d$h7eG_4U0; zOmrZa;QTPYkfzwwW>n>#dm~0dW&56k`+j()kZ%-IZE`5#XNE~Qg=$9CsXvGThgBoi zJlc!!n(VG{E*+O^v$mifr znhZ^QV(`^7{PVv|?H)hAR-$>-8MTxbC_FA|fIqpf#9^qidZrL6&2@FYrlzLCaOatx zZ0_PDH8r(MVO~g9awFo86IVY2r*f1w&d}t|m_vzbh*W~PZ$TNUX9SECB3FOh?|2%k zq<;VY{p2AXGa?KrU0!j4ioH_4Jo>%A#CAY!uZoJwiY%qlw8*k85*k`yLx$M9H!GLj zOp>n9kKT@ok+f{;%{9ED!|pB8@4kP2ZI|4~gKQ#3lN6N5ncMZl4Sw^@Y3F~g^`RN%=Ndh_Bx2p7`PJkSz7 z96(vev>-i*)~#sT;C6Di{2MoQ#`S{JyjA!a}x~ecwpR3x6x(3-7sQu z>{p5NW2Fb1Un8x#^amnL2I$8U)_y45$zbD=`Nrd(G&^@Axdt#*{YiFf=it+b={-v8 zru+zSc~uZ*gudNE&eQ!R*%!fTynXZLzJ`Zz<%@Tm!pMiSsERI z39t$&tM-q>MRt7>9Wjqm^i%8wZY80u_FPVIso5#;RL%}j3)s*-VPwRt4~wia4vk`Q zgKx@*+vGSx6(`q+d(KT)ofQ{vlbS4oshc8X=_uy=I1QhTeZFpZwEG-$R`m#iF&{mD zja(%w-s@J)aL5WJ*DAlTL=yu{m?jfg{JQdXMZ_Ou8VnngHU^G9LN}9)i>+?;B`}9Z z#}_$gjQM7wt6U0}1Wd>}9!#OsIX52f^V`vIieZTH*W@pj`0@?682}9-_}HZ7$H$u@ z_0w;}jLdlucIvdYwqD3EJRs<;#f~o8wGCr zrCC#_dQMFY=)B3x8?>)zQ^aKTWTKB)&SJ1zzK=s*0f;jh^APztn^XFw;&q-|OC^t- z>zOIHUbLwr0S?Sg16A}9b)HHZudO_bmv0oq>Q`bi-K6}{J8h5I-dx4y5jPyz-*%kb z-13B;1(?M^=FPACe&+&J<4A`d`yGLJ&E9d5>@mXnz@ zDn!D9)d7ep-Tq>e+2g zBrjRfKxGTh($09vAjHzS=eq##*R_QM9SOh<*%4o z3;dCUzBd}|#)JuX6{b3c(G0SuAnQcABi5%Qt3<&L#W>R9{xu+Ehty?zC!1%fz9Mv}z2~_M(XGo8Y?zsF0{I+z zT}A%adDstx|H%Y@E4Tx#iDP3A1Vuy+Xng2k@!JL9#cEJ==h>UWo2K#7wE zK~ZU4URYclhiF|mH1vMj(&!pshid@y66DPBp%I|)$PCD>fEA$rWc%JZq^_}BM8Zj@ zsrF;6*mJzM!5JZ;HRJ7K&B# z6Lv+bGW(V6Y_;xoT10sG3BVSm99JOoEFy5Ishc1Nxrw*1oS+f3LUZ?lW!DW=UbnYJ zXr1i4&i&RIeFL)ubQBoQ^7!Ip`|9S)LizaIkIeRTjUyHCh2tQ6l$q;r)Ubp~FD9L8FMzoLZ@0zgSI3+e zzevkdFNfRx#Hz@b=h?oro7t;|%Rz}Xi*@ORVUMUJzx75w@;N-ui4vP0=g?_|ZY1dx zA5}ekk&Rz*4jZi9dl2#H+v6hMoO~#QvLMvV*Rr}(HE0f>K0F`fx0MfE@%5q%-)v)b zJ!eSZy)7^V1Zp=}-VquHwP|2yRC*`Kj^lM4T2gT<{kvJktnD|Ixd&Z(Bl;ZA84wYo zNgr{of;oV~2aWraMok7iJf0L(qpJPT4eK6%Mo~sDyc}1U=%Fu+kh!SQ`@bWn#)-Ec z+6C@!GpS~GyYaJKG4~6SP#KFLcvATiT(oYq=tNDXbFNPWch~uhm6(D zd~wx{MopIYJ9FY!5!OxKZBjeV2nsebNQQ*UXt&Q4o6WD8-P)}D5NB&j*O9%D^JrOP z4Q0w?(7GGj+Qhp;r*(7aYmmGdcgekZ#DHK#$Pv&=rCT`fqD}0# zc{hx@;eg!SOg~cD7Oc=+3AdxQqRNBJHXE-r@719R4oLx4dMSo#D%IO;xMbW5E9)hw z$M3Q%g=CpdWI723;FkW3JILdMBk(W7{x zU_XsCPJapdv1Gck7r!?!k3(^JP<+gh{IL|zH7Gxf=IkCOQP2d7-%r8D=`Gms&M#Wz z@i+Sn7k@Xw_b2HQv*GWm*O6ds-NmEWE6oF(dlDYT`QR}p{z0$VWOmeZkKIsZ538~0 z=;>K;a&q<|)`yI|5OPH~W5Oai*I_|JF&H|NzJqqV-oJm}3+?}22&hRPAfEZrWqIS% zlN|#I=O$y8fg|PcDR}Ea!aSkR0zKIh!%-|Mz7DD-|19_z3l-@;SHi3llrCL(*m6)E z&r4c>VSpWWssnz|32N*cvNHJBsZb7X#6h-~xaIV#DGd-=2)SSd&AyK^aqjP^VbE#0 z!NGenMCl(D;*~dhoH)!4q*3#TTprxSzO4Oc99k~zZ5K%NOlev3A50yRb{bK3kxg1| ziV#jv)QUd)X)?O+jCkLv-pQI^!G8C_oyu(&7lV5WE!1rxsk>6^NJ>3C8xRN~qHIYM z7vrK(0$mOuV=jmUhcv5vCt@tO&j(D0S#xGQ0pK}aAmkm&v$<=!hhr%wSIpa>B6$PU&u6`&!T)im5i{tY^ z1?RX8PFl(K(n!R_zR(FeM;NF-D1o{Ye!(Gm09s6lXg!9*xly&Z)OS%R)tG`9x8rp# zBIGNQY~m>JueLDd>u0HYDMKC{>Lz)qUf4lG*op$#q1G5~e8GR*_%&KhkW5Y}lg|~u zcl;YuVE=`$|G;bj@!_VM`O*HZDJM0Kc1{QVDGKPDRm#;sFJQH^LbLi^f?{H9cQGvt zHeR`FZHWr+larMoyC>r1nkDU#k@XLlsG0;Pc zh=lJ_N5omBK#IZ>n#9nY|5}i0T%r+op%5giN1BT{nrUSIHnBOvD*{SD`3S;q=#A%) z2Xppq8E-RD^!zkZuaCkrOKWc?HV;yNFcWSMFX|3clq<>O%jY9U3lvRFaFgcq;A8aY z@r=4T$aK9%D7ckzaQM1vT*pD%;w+k z#4CC2ROTdbkkPK7%6*3FHU{wNwIg=z^vrJ09?fpvZ^~P1_E~jjzP2M`jX~E12x!x@ zOL$E@I6dpn$0t70+TUf~+D7sTsT|tF_3QpI{9xO6y;8cf#Zm4`p4a9cS^vz5A&sj> z+S}yZW=@*=Ql1rCb<~{xT3{ZaplztJd~fjAan^sfv3*#j;+@J_-%bCF{r%|8n9Urg zZ@eNh8B|SfG2DjpbWe5^#$G@2MuMEq)sVyEJQ?tn5yHtuyT>Oc`U5XRsRIG@j9k}E zn-664FnA1i9aJmiew}&$ryz94$3Jc2OPpaWvhL5{HU|o`;yz6{s3Fes(Qn=ykInoD ze;gs+{y|5$FaQ3P_D~*~M@nMl-!{XUz1}Xz^Go@O|MBh*Zf;Q;>rD<;I?ur}ZtVJt z)ncWr_dj|dx1|H>p&H+=%vw#b^6!Dix&W6*hXKQ%ESPvoP*APZkthcHgr0~P6klTz z2X#L`zj4>l?BoCW_WtsJDTVC6w>{;sTh$?vfAa4A>wQ$x;e6q~J!R~J+`aXXUrbT_ zAAZE~-Ej7>f1LkyX8v#PTV~0`K$A({UFo0p^%!Fkj_ zvuRjPF7$u(&#b{qif~lk`-_pC|8eAgzN8O1zwJ~$H&~gIBXUUEAs*?}~c- z%m396=ezaxXqVj=t7Y(*Uc>H%uTNNuU)}?^IB)(<=h0hmbvlbIwWizOJvngTz~`mu zu2a&|Wu2-ZNuP$iZmftY*64!cuu&HMRvd&*8bRr_fTsT@DoR&$J+*<`=#jrdB!HWn zFN1!(bEsSPXpq4=v$O?hbP9mO&w!%n*#-aT@J1YKul90LS6&UQ z`34b(;ucUSAKyRloDzxw*k!;XUDvN)Z^?D;MKCvt&OiG0aTm@J<3lYytr>4+4+KO= zRJ4Rv1f6LYIiNqg4OqyQ^|6Tw1F*n8wEKDWB?1061a03bn9~5G3-H*&(lS6n3{4_H zpoG-LJ+B26^ga3Y*w|P;ZM3Hxc)TS@fuFtjZoC79;xMfD)1y-s))s7x3Wm|}ee|K( z_X0M2!hm2-o8R+hAC%X3Nf=g5rvD(1);!zYjBzYjUk$5Zr8eMU#y&x2`^#+f#ymif& zKFcKIW5~rqMC{RGmq|_PP2Z*&ASs;AMkd2(h@Y$*5mDw~q2E7s-s_xL$R-UbK}VqF zn%DTnlf=av#(U_UPb(jB(Z^@}5;vMnR;Qwm>t9}O6y~SOXd&pX@)d$N`OjM~vJ6t| zF^3@MdS+-HkIUbcl>VIt_2J{bfRoS`4J|N+ZNBhoBIX=HW`(BvipNa zVdm;>clRBiiveuB5X{gD=pfbx{lXar1g&QG=j(5Uy)#vU%Be?dTn6l4^cG@qgpozVN?! zZr}VK<=ewMmfndSCY{r`Dg)t-T-dl&W7Ajo-je^&?2hKxeUE^d%j`TfzRZdk_QEDm zGh_EYi@Q-`#_@IgHO@|Vqy|_bh0*+^QI>s>RBUSC&L32qbGpA3QZTsyMC-cmrV;XN zmJw@X9E(GkWk{Xsyo^xe%bMDH9HR?{Sh18>CUk>Mcm@os$|(XL-m8ai_95w@O#Id? zGKg~9nTndRQjM||^H+J^(qZ@RLjOMLgu6vXdl;EbGQMdfu&fYMD0HfJ`|4V;h zV3i8yK~c2D&WzyTi~)px#xXN$ctHQBjtrs%5O~xx{1~*80us*5Ui> z4|@B{SbNE)ye5392A1KU8ygE~cI)?h)?dyaob6pqmDag*s_3u?{M+b{b zpdsalXAjb|caFmV-r>`;tYsNiypB6ua6%{iGph>}KvoWIgSjc8di)Un5iM2i)4p_4GJcPftk5|BO+R(x@}Ji`Y{+*Iyz$;=>sdrl|d}gE$^?`25S&N)khx zjgAL9{hzV&|8I0~6|dC2QyDom>{V;yS@Y-2D#7Xv2D~YhGE37pLF=L5JlQVcc z?766Ft4L2!B6OYHopAoM?^)i=FA4GQEtqIT4 z9bSh5U*bA9F1qf|gv5MPaTN@#N@T>cGn#qwMdSn3EiVhAP0vqzLQjc*AWVOu*u96J z;u<)yh2gn^A6fwuKmJjtzUClaD3!+n?3Co$d-OdSn#nFFFs3Z6e@~hH09QT&hOoo6 zGxGD#-s7EDmqD^+gr0s9qhjf}$e+>L`Y@7}b8T^AuKSms@WR$iyU4h0UOv%Ddv702 z#QM9+HN9aeKbWLkU&?}zLN9E$ zu(mGrXG(aGj0Su_z*P)@^x}!63xnn#1T7LST_;yGL<9<|+-5dOoTXnYKJxp zG{5rx&@^Ue8G@zS;g*d#=dhJTb8pRjZw3t>x}0IG{?edQQOQ)%w8`dWe6!OKYy@c? zUow__@Ohu*2BR?vR!GLVv=D1h^05$%1p8L{Zm7>9{&=X& z|BZ)!bJ_gp%+}+QabVFs;G!$Z=-q@VpZYsR;G~agYaw0@V|>b7E=o%iI@zb_1J|{* z%7B^7bqhmic{5VVv9&Ag%}|ivQcmDC($6Fv3kBVM_%OX~d2kehaj)9WbuqTEU;HM8 zgMat2+YMu?0Y^^De$CCVPm5NBKY>TWarT{3_@3T8W82u$whoseLhk~Qe&o#5+zpak z?4EmE7;%#M`GOqwKxRr&?wxcMDgGb$Djd|$6}5$~2Nj;Cl6PpYAqU3Yl0uHYH(yBv zL0FIVoKh=HNn7zSUb1SGZP}Kn`6g)E!`;19i+BDBVbmL-TFdxcNoaHM7aq^04%OzR zT4F7R_sin=a`_;=qwtXS$(`P@PY<`I1YTtjc9-z}d{orj*4r82vQn*l2i2-cg#$Ne z<4LQBZA5so*HKTM*((D6?Zx_=e|X2}C*l=h8pBHN(~<9qSAwK~5LUWQo3Y8xVv)2a zpqAE-lM@q7Fb5WIZcsi~*qjC%NmsBCE|>;=?*JFqdUr=iO3HCoQp5!Vu^M&qFs8YC zcX4WQ@g2w+9c2|$t3Hw4++uG*v}}a5Qj3^R!rQlFb{;d`je=FIjW|)P1rvonR0l8c zMF#^eiV~p_0#AKdmbD!Om~fDrBPyPgy37q!xfN8~_Lji%kIS(AdQMvf55(^tIa?Q< z*j5l*eqYsof&Nz(U}QjH1-$(0tV1@eliCb^Jj+D_KQW(o$&0093x7G;$tbqzX_}q| zB|V`K_30vaB@r2lQV=g)9x{uB*l!cCj+3z4qmZSGJ#0%9C3(EXb}cL{+;Fp;C#7u8W;r4 zBZbC0P~l=(u{IIcY}+c!7ZT>;{BzK3&Tsl1d{ZfDxLfvHx%S z*27CJl5I~noZ1=|p&&<9BsMBZO75Gs+Xlc_k+bQd_!o}2Y7;&3dn!nnW1j>Ot zop7jqb4fPMZ-b(mVFHBg&)!7@qMydm`m z^J)JxZ^AwfP1@GnlxYSDBUjA0a_f9Rm4>KltWui8L)p<_$tFx_@3|nqxAQ3E;-(6} zx_MNK9n5u8(*q$3GZb6g+SIh5_OWwErbGk(^o|Y6OzLS35yR4!Ku*!E*Y^h#mgxf_ zr3mjtec)NVONle*il$^41a=tmqO)r8xZe&d!`RQMjo}YFEalouFg#K6o34iE460p* zqg+^O*JoB~4!e1DH_QpzMb>Bazyn<9;z0HVCXCA<%AkPEg5e%*s!twaYu* zA>|ViKf6O+Znt}$4=PP@oz{V=2C#22Vh+h5&4`+s8VURmA;XByI5?i@tQGk02>#zp zp1eT)td28@On`AJh0qpR&TCqFdJ~N4o~9B}IOB0pv0OhWLTFR7&o~n@2tL{%mLW^G z*y}}}+QG*23T!^P_WN2ZZu9**u+2rBwJxO_1Td>Oc!ZH4)v3YOI}1S6mu6Lbj)J}> zTLOZN;11!;ApOC~SY%Er_vf~@C|1@H3_WYK~yE3i#9jVZOeMW3WIRbq4>Rm^`4ht?Sedw*V^nR z4K6og>)gwzQLucXkRhF&x2Jn^pk%BH*s;o>#fs$MHwz4Z!VX&MMaIi zOhXlPi=H|23KDbIV3uL-VYds^*+0%7%G1ifO0Jw0n{0=8>i4&!#;`X6)(r#1n<~mZ z0z1P?M-7rjmzG=`o0|6Xitqk=5_pdqyi01Goo`MlDCmcNzV_O{y7A51wqT$HWf}@j-ji+`Ack8+^OvC3WGH)n{|NGv2yyfy#KXu zhwW@UR%ChCsaL^Ar1NfEsWcyNis;NUmZwFZ=Kr}!K@Xkc!P*nzF3}Bpy3RnXwiARe z*@7|gtG$Y} z)4zp0_M6I6I}m&39WMX;1?VMB_C~XDU;V(`oxjkeAQ;MNHXY{o4QJCM)G;Po1RGOO zuOW8UYIn6dZ;rup(evg^Z?3I?_*4-V#>$e;O)2u0i5ZloaBJ|zgR_C`gFxl=R+-T~ z8N0(2*E6+O#68c6X|SDd)P|t>f*PL$VE{%wFgO^>a~}em@H6~yU%uxPST`|Pcuv#n z&MgkRFNGdt6YXFt-aM`3t4uPJ(bh+Yvm!t4$t@+Q$K0N&lO2i70=mDgI<2An^uFoN z%v&e+zt}8P@HYl0!T1u|ZMAUI{cfz3!&@=Y(3ZE}eI+MPol=u3$P^NbJ@fxC_uhe2 z_x=C)mAFcaNK!;Hva^z{kWJZ}?9s9_4wq6w$R0Vy$tE%)geF;sW6yMD99x-jjNkKh z-Jf;e-~02qudC1JkKcb?({bMK*X#9sJ*KX*l%F`0d9Z0{8_9R+`l`+^0>phoXUBm!k+KiON>l+Yu78u;tg3z@gr5>5DMi`sG`?k z6H&_)ZcJQ$ZCnpAHT5=6!#=?v1qi(OrKf9FrVBRoF<*{O-Q&2V5UKdohHe32d1T>d z%t`JQLQGHjH(RHCrIXoBnRhEdTgnT;N+n*itumW61*{2hkyQmN&zzdm*XO&dtF=~k zn>uL@(e2!>Qltg=K1e#RdT4iXOuN>vK)4vZn zZN`96a!CkB)}2^+Mg$=IN4MCi&1){8?2C#04%h4^=G`AkZvFPp=ffF<8#E0&BE#Ed zcm0w8yw_qX%P3=Xz{2W#0Jo?Oc~Ds?W%cE{m$lZ ztHY8#m+ilIDAFDs7XGzrHpvxciMgP|zCIF1VK}>;8L+!!OH;b?-v4EXQKd2tJWM*OW<3|J z#(xxJHxgF2?^f-q{?HO6_q#D4Fw_j%nJU9scPZLmCXlLOboQ+QSZ@g|4=Pu#JgnV* zI=a>1A2AnxeuuM{G*K5MGlmG(d9#_~vb_&fE513Ig7_VONGRE1b%U5zQ^O8NRka_S z%4;&%n+>hK<3-~D5cj|xMR>vi%tE+I5as_S95(Ithw#{|ihr|a`P11*kp#D1^UaIl zJC$E{%+To70{LE(7VLBL4t^_MV_;x&witu&x?&VF7-5up_bVmCg&T>rc>z2~#ms2+ z*VrGqIQomMXBB7qirKM}Jy0GaWh}A7VFCw1TzPq>MO{x(GA(t8VZC3Ox#^9jx9{GU z`q`%XZ4KBNmAXgH4d}4#JD3!b+q_R;Z>~PsCR5qu86*T~qNU`tV6!BP@@K<*c@rqa z9HI5}Lfgg{>BP^u*Pe|-EtUHbXR8k&xpZv*@r-$S_VJbE4-g7R&q+|`*@cM3ClD3e zCQ}UisgU1~JH+?a*gag(XR~6x2C*LR9Ze2y3cmJlEfmfpHwKA~k001RJY8e`S?cZD zPC|{7+uTlKQcQV-e|NF9hrs6BSN<2DhiKU$QKPBPbk35G3PA@pKCf}2PP1%5}et@0P5;;+KQDrXWT>lNjNpn z+JBN*#zSKC%#D5AQ>`Z@bgrc_x*Epu&{3!hBEk6v>= zb)Y9@RV9uh(2Ei|ds%wEIwc)7l|r^B;-+4pvWgN;1M^lt3L?8dJ3JYU~K2 zebhyfm3SBiXZ(e~cnQm|maCmJ?wm1rnWa_C;kv2Cg-j5*%IJxT zbEWim7EgB_;k7joNy^4RM<@DYsJFf8U;!gOMF{DmV7=- zcr?f-&D*11L~tG)b;mUhbh8~<$5Bc_JrqBrN2ZK@e6_OC7j!x zmnGTB)jvqCR~AuQ3kTv>CSFE<@5@xy(Ck!P)bd{MNXc;)@Kg7dkkL@+8h>Z0=1uAI z7H=*4*GAG1-j3G;M>{8iesxtXZV>vit_0>@rB4w|4@$S|WhqE|we+8SvhJ+w$-{DM zJhkbU)kwDaRB>~k?UI4XJUQ;;=q|5GC6oHfnGRWUr&uJ>xm3T?Goa$Ge_XihE!wr8 zFb~zdL|r|ffQgwOxHnuT`f7G+-&XQCPFMo$NFA6@sTf83+Wqzi*ri=SawbEp5fi!e zhK-u;*s+VkYp-SIXp(nI53vL)HwM`z?lH_t z*F*T^1WZn1HztZauH?XF=c7v906=@g?p+!asX25jsSfH>hb$)e;8Nj1Gjq8I?vcqK zvdfq^8n3=^cC=EwsD@jyNAovm-I64|irNdWOZy}_g%XQO`9O)`VJ(_3R*~9j{r| zxYly9OQEq9gik&4EO{s{gQI}lSmgT^d%k`c6d*iVd*%JKasu#h{Z0H5@2^5m1a|Hj zv(Ua8yUh6n0}K1DS72P`NIsP zo58038xx)s8t1x*1+4T~(JL`7DI?4vN0|BJQU)a1?D3jOqF%w{w+1cP8x?bo<`$6=@N&n50&}aa1o?jkZbNK1 z>(LH!oQ{uZluT{%C$8F4LphVJpSj8=9ZEHNG|Kae#zMzGYtskjvr*q9JGvaAmsO)~ z@xKyMJ-W&w`fgKK>7Pio{uDbO$U^4fl%raft)%SfncSTp$C}5bvd7t&)ygOy^mvAz z^Ze1Tx2(kPzEB7aQ`_6SK5A6snJ;oP`pkgQOSZFTjkI;h+68E4J+_KlF2JO(v4`eS z{v_sE-_J-FLAXYFF1<RaJQh5=~gjhzqe3JnPNb zeEZ&MvcPKVB3($(WSSiaQAoae%pqh|B5=@#89s<~;G5fz^2Lt$JpM`fm0Z@rsaE-9 zDRTeylXCX~+y+8;e2a!%ufQ&)9_yLd+3*38sk zG}esgswiRB0jC|)FukU(Br!z5n<+*MeB3iz2KVOt9Jw!I*H#&Mo?ZUQ=f+Y*_R=Y< zKSW-Fbk)b_%Rung!9Dd2G11X%?26-$T6JqI(7xmI{2OiDRP1CG)0$-FOxb=a359RuaEt3eh# zDp9#N>xZxH{k4_)XO~6pxjh=EeU`C@OK)tLr>XsuH~B-3W^VYrJiw9NDu|}lX-H$Z8w}j;Xe5%*q9V5And$8WhF~P2r zbKlDM+Wm^N3_p$0&Cbl?P>Hz$sZNO>3+3OY_eaVdKKe~Vu<*=%yTqSdJb(Mox{tvc zbZW-hrTlOHH=^30&^+lq#31t5=A^&-nQ|IObDxmo{$3Mlu5*Kd^XLAja))Wpz2p`5 z>yMTXR-I?&o2?5qFVrp}W%N}RTKI=j?RHkGPH8GqrOlrC?YA_!{83NS3(Vf*M;U}{ z9*wL)mM%Y7s=_uTV8)MD6R6dVjtOWA1anM0s;q;=I~unkk*m@agO#@hkcx1hn03P; zBZ!D;-K(Ld76Vk7Dr7OSLCSy(h-2Vp@7q5=v+-Y4mW*rO3!wn6ojog$pbbz8J^|HL z5{N}WbXYAQ&+vCI#-G}t_ka}r9A8Q1H_MQ@(SZJ<=e8pT1T~dB_6HBxU0=LVP~Gvx z%!m2b;7A`<;bmPS=VlAc1tuN8f3`bsEY_M!3NqiKlV^r78gEWW-Mz!x=6Xx?SjRvy zy5SIPnATmv0>>cfStu6Ho%E{pO115c^*@}eoaNuD;OTV z9Q(l^c3(c^2?HwTZrq!6@3rA^K4UiE)_7u8z9BcXe1}GIE z(UCoLWwuvz2n@bk2>_H6W+_ZS3klyTpKWwRdEMzSo9|YpGeRKh6biYU z&Ad9>mjJMoX%P@*-jIpgdaL*E7Qvr9f2c28&Q{!C+KA;7@_Nf()7$PFs(^mq7rQUE z?BC09UA)s@=dT_8>0vm@mK1S$z~EcUoHE@AXHhVy=sCZQrZoKUwEQn=fm4V0%y}iO zVImAgrI@QY@xk1OWYA0O5*^Ij5)Fx-{bgHI>i<? z9YHt|jVN+HHxs`$mRgdVn|sb-RStx%j^3(a$OGX92>4YQ$|`6E!V-&tLZm3v z(}j20y$mRgBCS^|PIw)BIVSGC8Fv!UB^nZaZ8!x{!f7cGyQD2Pjfrr}?@p#5m3}dj z07l|w7?iUz#{&Y$UqeVbPB?g)R|71*u24bPBn$S`{XQysKXKMNWy`6AuV@16i*ft@byD|0Ux#;mTU0*A~Z?FYFyUlO7E>$q%M&ZTTVZP?xCPrt7(L|LN-Z(|@AYmW%N`!dx-;fl1>tp>(03 zP%$Rqz(KXSv}RSC{K679Gji%5X>zV$uCWDGiZQGB(>tleT~W(Fi|_F-PV zYsqfU;J+~wbkZPqd9@$p5!1Tpo~o1m-&iaD#Cq3LW7!a^-v}3R>{Ng}k@+;(c2Fnd zd?pS6>&x(3a)KZeM>2Wo#11y(3aqX>I0`A4rlIGAM;v5&*b5p%j*gD5kXp1)x_$Qz zKw?}#^hCo;t`CA&mgKq2n{c_hjMNyAkQfV@>?6A(6-QrC=ogtf7K`riSB*ytaVMC0 zCNXLG$kBG+!Z}VbKn{!MR5aN{_JKUs+#ho)40;fkZAbda037O97}gP zz$O6xHV8-eH>$XiBzzAz>V6gZYWbLbVAP&Z3Q&IlhVUxjJ!~N@%`Tzc=iegNKqOTX z02-x5H>s4v8q}MB1|3W{iUtRxDWB1k6_NaUl%V z$LQ&Y%4%9cI-P^T(kap=ix5I60xijqtVpZ#X+vR>ky85xfKIlMVfj|Gl9uSylRv>I zHUUnQCMd6+fS4I>p<~rXV)Zw@XILzFPt`1{0tz zN`Q98D{BiQ&V3M<8jpG_WLC#Yeh2bzbr$L!X{lD=U!fWI~?ptLuKVbQfJ=X2lCVv{{wz-ifcOR4JVtoV#3 z>Eo|Y7^E*iuFxmojrdVj2k5Mo^`9G0==wr*V#?2Hp8lArbB)RN&_06XBEyAqA_H%D zlW%;Pz^SO%q3A=dUrp(c9U~uZ*CdDW*7odFp%Ki5v>I!IE&ry2&}21*(Y5VN+A6$Q zmCF&BlglMlAlo#gMRxM?C7;($(o`Ju{$ zql8zYq?bi_)$w{*OJTmpaj@HM7?e~VJa`bhZO+*(emLxr!I*0$Lt$aawN1ZSB&UF5 z_HBMC^Z)Z<{_LhtW5{AjcC9gjDGMB5muj|w91{OqI7%%yNC_JpXF!AD)x1N2ot^*- z%i3t$1u~>JP z>T}r3qEoh7c)r3iN6xj+T#P@Dc#$95pD35Py#*B5IH2XL)2==~)rfgRMjHEF7y*c} zwcM!5R8t28Wlun8{K$N$7MZO!(th(8;l z9938-;@JNsfl}IY*OYC86gu(cEe&J=tnT2-9|5Gv^Q0TO812moY)sf`C3L+QQX$`= zlvub1tK`b&+PsNf?{N)or;+NHHBN>TkWteDt~acQ-ykxo^$7DnRjSlga#fqSs4g}-81$iXaIeJj9}`W$vT%5P)GoH zn%ozcxSSu$!XYC=x_r~2v=b>`b>Z8SNCm1e!BMg!0_bC1h@4503+{(|<)4^q|L$Lr z3qR`M?S4}{%Yb&es~{w$v!+CP0nm2a-V~;2VS9wO-(GZHEf`#?(MeV35?DI^$^oam7&9J80HJ4xBSA_KG~gQYxMt6Dp6V-5N*@EFurm=hhMv&RE z$na#Y^zZpDDKRm$$1Fi;?uotHB=1wo(T4@G2aeJ?@HoZ}RRPKcr(jSLNTPky07K>r z*z8~;IC!@^%w_s6=&$I%Fs_?^-?mcBv zhtv0=|1$?P{O`qMo;+ds_;I)CygRov%B5MnW>S(L9Zj#DIo$T}2TCj& zke!g!J~q|^fBAif6%xb`rGqY=-wK5@KZ=XahaF+!KlWUbz<%b8zEc)QbJEM0%q!t{ zL&C$Od_1Dr=UdrSR98&H#uccd&=*CC&Z2SIhgYM6w~9l$ONs_@1)s=GR5-NPacNyT zUm&=la*C5i(V%6?LXd}MTR$^Wxz!ooW0WpvFurDb|F197U&#E)D8H9zm)YIJzIvA9 zZZWIr9ugK-VsKL8thgo(?N^1!0)xl|C;Kh?U4_U$o@W!?#qXn+IlbzJnf}!)^FPfF zfoXBS)shh)-E0CXEbef~SibpX8irrY4WoFN{S8ncMT-5ud@KK_AF+oVC(lv`oH;>0rO-hoC7)FZuS)NS#jXv;{$5-r|&j@{Pux57A*cf`Ff?!ef)V~Ngz6SP~hMV zjFuYDlV|^#mk1q8ffP=}6zjrykG9ZoojVtmRvOACu=wg29mKnYObqeA zx#p^!l9|n+ygKt8M{@ZtD8qNETT=d{SU&&DcJ=5FANrq=R;PpZl2c#2N&Xe4zbpXp za@v9t_y6n%%L$dM^=aySX0lhjUN67>iF-+8G)+`%tDjNX!lSJhXSE_u^Tql-Ka>Fq z&!@dF=f~MWwd3J5($tK6^X!(z(nkID=~g$v+~7-^dD5%f)U>D0es?LMVP>`t5HV6|%%W7S*1Ggd zU|Isud9uaCwi`c5ljUD!k<2l?fJw9Er0OYT5C{oz*|TV86mMg9IwsAZJ9=yD8;$RQ zFx81qQI`jvCJ9tkHMZ2YrZm6 zck&O|EVLxFPtHY&&PMFm+oszrlC!qZ__C+V2OqSVtw`DBAbU`;`2>#{t@GRPTQJ|a zHKL_mHk-1xb|LW>)m=ypNboW}!ps$G-KeTyz;@teN-il#;`AWw<9U2?WQ4qJzZ3A| ze`>}&Mj0Dx7;SNt^Zg8@6k4T33DrzYuD~J$v3;;7HAb$4$^V*jnHfj_}A_QJV-((QsKKb?V z$&?RVZnJ3xav)N5pY7E^^a+R>qvPWA&V&X9kxxV7E@nQM+5a3=H_*)}33S#$SPDN1 zMTAzJ;1R7GHwxWnx>ZoRy3y;qC57g-5_2-Fm`j;{aA#yUt9CC5u5=)<4nP<}X7EYZ z0Kg0@${MbMau|eCS3MVo8J1QT9!4#>tQ!q%H#c0jU9^bn^P1|ogw)|kk^;iXvvVfc z&~~0Vl^t$wncjw3ZKt$=!^r^+i6MM^vBU{ShxheG= zRMU*^{1Q1S!|;*vsS1HXt)C2=ju=Yg}UDi5l$Ar7Z}C|N2#1MK!c6=9YVM9#=^8Q!goQ`$8Tn z$E7F!?wU#w#|PZHt7cNT_Osma+5aIkCkHH-`3!Z-j%22?09n=4T;3McB&eRjgV zhYRBki(Qb&hU}bwdQVR8pcGt^gdnhw)BDY=fATNx04q1c4S&XCFi%ZGGy2XeG&dG3 z-kD{k3$7m21I)3dwzjB)j<+dy_y{+_a=J4M&#gb$h63VkUMy8h#ibf#roeYRvEg$1 zFMh{*ETW>9@V89O_@_;^{C(wxn;hb}DITyxEEp>VMV9O9@elmJP;(J~yfXBiIHPe| zRWmdu{At-ZHc9qVr|rJ+Ml)FFdW?A{1S+!q3UYF8zqy~GZPPd(_AK${iv>)A&CwDA zMM9kM%2$}leyzDM?gr%P>+SdRkRcbs;c=BZ*J+Pg?W9(~W=xD!WO18DBKcf=7w;H{#A!C8aIo^sjh;w(TDO2NmKj+vTaUKq~+!&v(KUaTM3 z$Ni#%5ou3gJC130|47eQoqWw(u1zn0q&K$!C=1Bbb8O#+4PwaiXA~DmgOMJ%E1Ah!A7-{n6LOBtbu^~&sYi_{t z-A91Wv?7y)!e9p7D96n>NT9D=j!YZfS*u)v?QTST@pDLQWKDbXf)eYIw&shRZVxgnk5ose z7R_WW#upXlEGnGip~gD3^JwFvLW!1>DSr+9|Kd*nC@d^0D9A9+LcqxQrFxW|hO_ds zviy)D^<(twX^K)fg4`}~mz_OpO;x^T{d5eo=XmpEfPKr(UJ9Tyx!KwEMKr?%&)yk4 zpzBV7`{6)Mun9qVEt(aH(!Le7JuZzOKdOL{TG8O?A9q=@E9aI8%)1ug27uw_CLxYP z#3j(xhmuj!Q{DX|j|R&W+>?_sQ|IPxprl_#+R1WL2zS}D2as!G%2Pq>hp=Mel9fd; zo9+a18ouNp_u1!_67$<$5CFV)H~&S1sHeu#lcG@M^(C3sd(7$+#@RHe2?)zajFaD> z!X}Hh3=olP9qx4OyW?l1zbDjhDW>{wI{NCR!@;iLbJBK`1hYm8UDTGA(-ttwN=W!X zifzzJC&wvo{D{mDYK#ki-#koGFfE|8*j#W%Aly6S@L63y^QiM-x>8D3yeoe#_)V_- zfCFpzj@I=0yug#KEgBFdB#Lyy45UC9$MyFo=B5}s=HXkS3+GsUHTNAkuBz`@a_sod zV!#{bI9ltD{VZS3eqp2T$-O4;)LZCS+-+&>Py!|jiI(Y z>0tL2AX!_0Ewb}lJ$HAuT_OK;aJ5>Z1(F1iZ^Bbwmr#wgKq!V23aVXaR_}qvg;2!P zmG=mYqoF$v=Cr{yw6vJyMAFubL47o`Hl>WQ_)xfeq+5QhWxWQOQDhfj`*6m(A=7!; zZO?K%8#N%M9+zkzwTjY>zyvc;r8`O&Zni4~?T?&+xv)F#g zG_2@?Z8Jog-1Ka@adtu{d#tPcGOeTs1-F@?GHnx>Lm7M3S8MzMZe0^avlU<>yoIv` zGv0ch=GQfFWa0AR!~^ba?0;=$Oz|YE=8jZ(A@2U_D$Up3n$4^3lT;ywtecV}U&pdM zt#mJ4&#PVPa9sbANKGc|6$mC!X9!!=e>DL_I>CbE>km4G(=Tcuwdbz6_2z-Q8M6w& zV9tK>T8F?OzOG$h#h=3rGWzhe67*R0eu_HVVtTuwp_k;XRDetdDd!++$M_BLmX%Uv z;N(fwQ^n32yo;mtvX-5e+}{7L1sGkJMN#69y+MtV+J{=JG@pVPtNp@)3{MSn^RT=l zC?ihV4~q@okxz0N1?@V11KbO7;uZtmL2eje`uLXT+@C&qLVZUnqg6Wg!taj-hAZs& zGa541>cNmn@}BBP)qf}yI2o26Fb|e^FFTH<`r1zF(cu?Lru{EMb{=12PT#0vDrbAlU(3$_r#|RF9ob)D z@aAjd?C=YOx198>-i3ehSpm5bXm#*ZMe-xyC$j5cwu(F@hBt;Odz-*~^QpEuS(G`T z>7z-LYo1_P?%mp0=F|A*k^or{vjD@F!f~5216%mU;{uenFRN^jVqk&kK@@=pgryiG z15#XC+M;Q(WIcFVF`Hi~F0NYqb|;PSvd?^Wxm5!f7$6IfpJvT7rO00&AC$HaH6I(* zO1F;br*`^!#nrX6Dx3+~!@1l9Fr35eDc{LY+NW86{?ED`h1Gg@wRlzHhA7Ga(xFPeFcSWtY zekx!2ZBa9)m>Feqvku8$6`Z|sv0~GVDVFZ(;-C|C5w#3a_;3OA^ z#I^Y`SP70m)j-_lMPi#K5H6^nfLATxHotbQj|a@+Vd8CTA~Y~O#E3fgD#IHs%@h6< zJarOZ4guaglY$CL*0#OS6XISM)wCt|x>YlOA*T`*I)FV(aWou8o@Nk{X@vkTgP-+< zi}M7dl24;_pYjjn5rG$%cu0r%HMJdio2g`eq`U1XEF>=OTbH)D`#S{)ebk2aWJpnK z->0|On32o>bfA9@Sk&c=gnO4w_mJUCm3_!93| zpCCS+4<*@&DVVhZ&o)#k7)-_Ni9LL?k~`JFmPqGlfA(6`-3xuCia(*K2%MsQ6q$Xd zCV;vQAk?%BXPT=Ju*@bXNXP>(TMHH=EerN)V!tyH^6#UcJh4pc%!G`x_`9Od_*E%H zyd8kGL^`_x;ST1G^_dBVEc#N zYURxz>zL9=(H(?v0Ke)ME#;w}oW34rvGq>Vq2_BS&)jtsLkZ-a?!pt$;dmxNkX#C+ zQF>k`LVStBY%@)ZGE;>X+rMLz?6Yg z)XG{~eYRdH?a=qms{@~5yt`&7s3z@?{Rg~5S8t^Oq;qEwlC_p)=G#I**s|HpEOoa- z23jx1x{IM)K!nOy5_HlzX?KWfq}`8Qc~(d1>FwcKf#*DOt8Qb`HLb+lz8N;Dy%l|K z*;Aq!_?q(a?z$T=TAi`5-mHV^5F{16ZYFA^!5XjPRq(fpdw?%>Wv((a^MfPpOoX}h z!p(}P6(qqEjs;<|F&O_`7WzPP;S5R*{07WWo#OTlxFO}XmXVx3e~`RpRb)@m+%cbL zogV86$eiJ(4GwI$`s~W#G$M2?k2{Wg)Nal+&ZZcQK!jWCvll3u%+|){hhJ+GG+!AC z)UHH}+BP3+uPfN}ejq7OT(#M!*D$a`=Op!X?S@uuy^9oWD&_yhp&*-fqGPmp5wc=Y zb?vH*k#ZevZPsd`xZ}HbT`jEfjwZE}3b8OGnt|$2(LlEP$Ja23x^6Nz zn}#aNJGY8?Ug_F~WNN`1J)aQ|neZTd9WQ&=0UIA`)4{8XAsVjPF>VOOT@3?}qbX^2 zrl~-ov$0@Tr;1-p%mDR_9U@3swJ$Rs#mKP!b*NE1+YKXC8YM=OAA?<_D7u-^~4ukLFjl4+Q=q?CZ2jfH&Ib%P?) z=>ZNJ8IXzGp(%&he>PAW3b+-+z~8@$@->GL)d;&aW>C@9T!zV)5gH%qJumA3zWD*D znkG|FNZT4;d6%P}b4~jw^KQMYU~(dZ>NTxpv+c_I?KYK@2R&~>x7~{_TRfB0-52WE zyxe@EUX*u|U|i+%M`ZzN84YE-9*lpw#^k>M4|4ANw-)zo zN+aQW0PwMp$-MJx2ljvX_^}E0KkWD!jfhk58PF+ueYFDM*Q%NPf;ne+${fkRjq_LI zLbxFROQeR=7DSzkgH60X%Sac3(zx1POx@ZeW)*noafo)}7C*x}Xkl7J(Gid>b3BGx7*;2P zpj8mkUSBG%MV-0eUdMavgtv_bLS!%6D=<{M7bai9d8J6SZ8&zr6L^KnJxIe+hu7X2cXCcyCa0A8`QM8;l{MOJG?YC5K90fuyh=A!4g3M0<~| z#H6L&c9eSR20_df<@i{r4k4yE(%vW->%_Ux7n+?TPU5l753f7cLzPjnds@b@n6}J= z2M_Q+fLJ!Mn_F03P^kBmb}VQ3BK6q@<)?ID-q}lBX76Qk;gv;ap)k$;BomO=n6>hn}RMps>>4 z1AZPXN_le^#Uc3%#9|1bSVmv7i5#Gf@h-4i9b%F|BkN?hUa`5^EhvsA{eU|ul1WJt z-R=%w+h7#hXrb0s5xT5j8kBa>R$Dbe!52SBb4rUP z;mJcRRHHfNczeK38LEB4EqCg1mEYDuvSy1is1Wf@r8mEu0XY3txEBx$IdC^o$2&of z?;L^a8_JW0+c5U6^Nsm|vPSU>lE?vXz(;u15hq1P7fyhsIG7UvNomONR9noG>A-9Z zlitMK5S{<-l;kRscEMF#(Lkxw6_BC9A-HCH!yi(%;Tbjo9DS2{A4zEx!Sx32wwZwU zT-2}tFw~{^@pwuu4y*iQ3*}(Iw>)^Zn+^pp&lgH92g`0dQFqJ!AHX4DIIs)0+gA-7(ejG-bYvXNP!W0?MSW&OB}64 zDZ>WU$-?##b0akd(51$WD!hc-rMeh?hk&bF#UI9X@6Jt0X0(qKOpQK)f9Q=pV3;#H zy_q`W*XHXv{^_Xi>KU^KH(;vUQyf0NoZtGIb%JsF?veeCls|LUcK^3KbwTB*oQmyqHCgu|WWX}1Mz4QelXMWj^ow92I zHpPlr(fiG22#B^fg(z;%G;Xf|KpONxyW%E2;6X?*1ClDkHLa}XEsTEmWNw=oeX6}2 zK{6icYn3+RVlylR(noqHfkL{sC;auMFASN5Fuo5B1nw|_?$ZQ}ZA-5qzC*c3@f|0+ z2>N;s9_|6&5lu{(s&QN!Xx zXU%$)4EA)=1#E>CHDvIJL6h!h^Xp%Maawo86X+PnRgzWxcSV7f#yeCZVDP#CQ3{@}Ts;9V$D8(K^?Vpk^# zFCr7z{h}b+=31UkIQKV?q`Kk7*PJc{HlTL2n()4Lg>+|b?c#!Ipgr5nKk|00N|>8% zPbWJUQFedG1J%rDTHDWKsMU$8u5j7VKl}AT-we z3hgWR;pN%qIZf?ESTW-48zA zI8amK8IXTnU%xWjrzH}oY;6#e1|4IV%Z=1?c2VC53b|;9MFH-ks3!NJ)ZOp0YO1Q?E-y1-vY0$u_e_i zN`(oJH{L(9UHqrBGuJ0Dl!N-C{&vT!y+8BJ{*xL?;RRc-X1vt;&)m5Gg9H3R4sK?5 zvL{s(|Eo{KsRr)g81{C|Ps&gJHo;%qgM=Et*xdSSY`{NoXK$KlSOTYPn%pe@SC2~b zH;~kD{*q+!pI`Y;{OL|9Imm{LmWJv7<17CefP|I>^dyvWlgIxWH2)7D`2T0G42uKV zHMp9?wr>8}pL7#)vEMhHJo~?UpMMEFaNxtfng#H7$D?)}4S-9}96l+szgH^Lt#a5k z3^k|GoFb(SX8~;IJ(UrRS~bs@X`Kc4p*N+&(pMk`IMw2LqhN0flHLHlpbB&)%*`Uh zFyz%8uA$;TXTbu7ZmW?D46RBmruVka# zl1{?<1B{b>hO;9yUhah;>Fg`6LB2FGob zc(ZM0Q;|b<3}1D#I>MvR1Ku%#i2m1*Y2#VTQ5X)`CNOlqoA|x&3IDf=3kmL#nR5Nfe zY`_fYdf$RHUv5-{h9HvVt@KOx;Q;)&oKmv{sh(y@!lm7(acE<}< zI^3B3z6G{>J&?>3?0+!oPkIhO@8_}*4s}N|LY#p)7eG;Kj$Ke7_egpjRF*1$Xkj+J zm>ssJyyk$}wuN%(CCEJP7o52DjC9fjyb&wKo)K!QstRNJ)(W(RuT#C)h_<)3`mH0I z0EhBRjTFxr0xoxmr^O7SvX|hcuGSJKRnv@s+()s|UO!8ia}~P{HV(Vd_uU(}&oTwW zr!8+h+3cHP-Gs*@2-2s>NiS(#jbvW!o(Cz^;yXI=z{E@HoBK?&BVZAkByz(2#irMX z!N81}sXcNTQ~$?u1mro1A53RFz)nKG!jS>u3bxC)4}>o2CT4Ln!1?m)X#Lc&k-~yV zKs5y^Sunj+Lc#7W)Xj8K#_yH=Q@Or)gMjI*1Y_`F3bErb30}AHzOsv5Z*8F(gQKwd zhG;|^W95wj?a9}9Qy?1?z0rT(?ZlEN+`;wX-FBmL6WE2B&{=*#=hSClh-5I}ml7MF z1u+Ju$RpAgYM(V_f$)m&Bf{0G7m^B1vLhj_QKB!tva8g#MX0Z)@u)*REOp!J-oVssaaD;!sdIA1`mYIpFPS-=|W5 z7Q0;iS){qSxzvB7#bR@Xw#j=sQ3OAt*eCW zy8K{y7x+WkonJ;OH~tPKK4gc_T5bdKE!}7UPm;)3hyusgq{G6(q@U*13mz#yOx$*@ z7v2%;?iX4|ts}dR#8(I^wI3{##_S$nzTsW*_tewR{gtlSAsah8V*mxpR>WpEO>S+2 z2Q`iqWeG_#8*h|Z@~bU#n~9$J>t+C~I>S2m{PNVI$eAXbgKFf?`@?vue#j7T=$jv{ z9~CKEY5c*XU-$xmI^KCAgb|m+PHQ_&HL3ynwD2ru4Kic`+kThiR^78U0c{EO&~mP} zIKPwVztXsATr5z&W&lAPX)>^qoy0`vhcQ!iHB&C>-xJCAZR7TLb6mv$NIzdPeWG?D z&%<|Zt^_J^X+1|LQwJ-LgX`mbP_$fT`^Q*R^3=Mm^!UVe%^_=%^{$(2X*C@Dj-?4h zjoYmvghrk{HbDQ&Sof0i&o?p!1L;vg>Zu!PlCZPd+?Nhmpr$O~RT2PHtXe{57sqOw&g>Chy263F1ba9VAB#y(evmD~g6vH8xgd-W} zFfaQ%xhDH++SLm!CajeJ7R^KL6(G4f4GMXt#@bgE#CsF-*g4^8om)tk2NZP ze{GR`VqDWk*rm{|5RxO^icy~t*xM^G!zIs0-vWf;F<903R%Vy)ADdBrwqGTPelHs} zg`r}I+yQ|nn)Cu1rh*@_7sq8~H7w6h0IRjM63{25x7YzGsaxu1Tq+$20N(#=$i`E_`eZlo`W zR>xiMR1DiuRkA1*)BP8YcX4zG_qZr6RXzRgD?NllSt)Jp>Z*Gbjt59Czh3bJblMN^ zOct4374w*k{f2^*d2(z{ll*gI+4+y1|E>jixx^60unzw2F?C01DNenqZZa}c;}9J& zta8mbhd6w5@4S-4kyRPUA9tM;gc0INLq=Z`;H>1*>swHRH$A)y3YnFvU9iN>ygoHJ z1-{00@x_J4T8pT4wXyDF8vbtU#FxcQk=f;NiVm-tW3H|*Z;{&Eh*h-z2X!jcQopW< z{a&3e_lk%5V`u?FWRY^})vJD@j;<~nO1CJm-KYT^O9*gLbf1H~nb5To-}PHbpfoat zto;cuxr5|5g)a~e84F!N63>{R(WlIUPLh(6(z6n3jbug)3iLHlf@aPFl;6bzk~Jb8 z5s!sC8iTOiW9eZ)H(MZ?;COEbpPC!pJ^HRm*rVQ_`c?c?9}in ztjP~FL2}pkvBnlaZN^0Er*L5@+jl%KV-q68`S>(Y@5exGL{ltyaFa%U8-j5`&B_Xg z*+Hod!0Uhh+*b|b9Qo@7qR$`P1|X0cR#sLw?$s<*s{vbM$giY0DiGd<&Z%vPLPzQ) zvd?OZ1TcG$wt%xk8~>gmSF)cO!!;lOrbR}8+)+M&2jYMHxSJNq!D|Z8{h7#Iw2xDT z-v+*x6#N~?W%~JN;7&!=h)AdmDrjdHi2AaX&r^_+QI<-=iSQw?nA_=IFes znrvVe-uU;;-KX9`OvPg+NqxK4#51>RSL28MN%PUEsi)t?Mcozx2^WcU*|!cdNZ-}H zg`r^HdBwMNb`v1SrfCaWMjjp3)nOPVZ15@K_^bRib3*pADOfmPCEGN3FVbC~Q?N1z z4ButpgeqARY(w^yedGKZR>|kD-*dy1@76wAA&ElbDmvN5vI3k%r@3Rb;k2QRSNBF` zCbyF2kyVrJ0uU$9TfMpeXV1+)|EFI*9Q;soJ5N@oPmdR!iGw}WOY*QcjA%5E^pR%- z0G22-56}-7Je6S?D;TH{=xC9cEbRg#3w0YAWZ_o{Z`~ZK5GU!CJS*^?K41X{%AIOd z$$;P$@tyhG0SMi~yS!l1SP(9#P4pa0iwE+ycnL7cx4H%!6(IJtqR|5V@U31cj(O_-6Gn2oze&=vs=2w{g`*{v+md!e88@u~0D4gH* z{3$x;O$hBbqd?``B=G5n7Wro|o2i^jK`w8QtERd&0mqXCEk@w_(jfGNyDL6Eb^G-- zn7^?X=FoSIjLxV=t%*tkh1=*)$AVT3DQy8#wj1RHoQRkTfF)`QeK9OJ6-jF0K_NO< z^&`28)2_A$e0#gkvums|awz0zhB@)pI*h%a0I9S$a9nDDGlCmJNY{t}-FoUXcX}cw z&En*eebFwT)_r; zjFL=vjY>0z6P5J| z16EbSe4pbebdKe>o^^!$N)!oQWbx8T?^DQQTM67xZ4|6LPf}BhjL1{d%F9JsVv(Y) z!o`9FAL;3&KJd74$;mU`8o(&%85_@(V1#6>P{uy=9Tpp=K3`{L zZH@Irm5cT@V9UR#FxKUXNv8QNh1fG^NO5*G!j%4g#v0sbliECzl0$%n z9hlyPj)>7ZO(NPfX2ED*@%8K1LNpgF$h;(g=J)=ZHz49Q#qhV&=kJLhI(4Bnsqvt| z>n~lA8+E9-K?{?<<9>R9IO)DMiXzqf-446g_SO^^&$)?>t@~8KSx}p`nw^{BzrGoH z6L!{Ym8v1o?Z#DoUZHRDPLgTUA6cIp7<;TWLblCxzHe#`<#C8^ddZKfxM}XnB!PH* z$_-!ca{KJj;DsIc0O0EE_V>aC1Y5FExhxyeO%ipRR44B2ARWfRCWFS~dF!BiD0Y7c zA%Z(Xr_tW&RtK$Rws?}H%iOluA$rrlSoFd2&)ZtaKK{1D;RhN)eFzH5sxRw}+&NzJ zI#NL>@DtYk{PlN1>9UNeqR#QlXRT=-?VpniG$U;0tFpM>>%FaH@e0nv3l6ObV)R{E z2GJ_%&Wj-8a!aa37m`ob9X64GfBvf8oCsuOS0x7r#mW1<1{Yk;LIa3qbLXka$;o(? z1wqP-8En*Wt?A%Aqg31@pu7zuuZ+(y>`K2acP>xFT}`VY)k(;1PrWo}zxwVev{{gZ znTuu0HPh1igu}*P4{tk5-RytymH{GdAx8c?<9$*!%t_*Xet@6a4i=l$^oq;6Pjv_p zM=*L9j*MWEwgHkHJZC_1%i~RO%=_8|&-5ln~;qaa#D{jg3=U zhkkZ&{QLh-fgjBz{owGp%o7wXh&?1k%eA^B>)KD&okBHj_IX z?OEqp8s6)n4?-}47ECl+F)+=T7gf)2qwsdE+P+J0yJov^p?4=&13(RAj)Dm0fQxO# zufB$+w_BXL;$-gP;)39Al6TUcEjX1Dps6DH{cl6E+tXV3D!ARM!JFDnMCuKEB%^re zKyj;P`o%)^w4FZvk0g(+A1>1{WlL?0$DmBDQIrvG`{dRH2N~ zr$MSz%mQ$)sn$Z)Jhx}fpL6ujT*)ZfveJ)%VfQ;jAKc(ms)9;&Oikz9YJE>vS4SSl zn8Tzh(4}c`uG7u9{5i>Zy)MaD5y}q)${_n+3DJyeL{Jh`G(<2tA3kyZ4IoZNZ(I`n zhk2-bptZ-61P9=tTUP*RHw?1P*oaxyYRbwlF5DWP8rJb@HsSizs$wuruw8n`wTVxj z-L8xam*3r4d4=Pl_FkQ^uupw}m+c@;m28!|2q-Q+jGoN%Hy_cod&BYY{dMSW4UElaN``CJ+BXyjyzA7H+KIJfdS1o&L+@r zD)5^WGCA%aM(9ouK#w@WFf!xrLzP4O1kD?sZ(`iCRT_Tg~H8@3C;7dmOpVHj8KF5^TP)YQm>hb%GlgBlBfW8?nS z+8VT4$WA^x$}M9yj}RGp&B|i8gxEyF`pI0Ei(E5%z7FXvwk`Azo`qcDW}U)8!1z9! z>psgPa0t0%tb427oyE334J6COa&zQTqlu=#erw{{avYU6CH<(DjZ5$E437W^O|)ZR zP%PlE=ZEL%^S4~wUVLhXH(jVUdS`W(YyE6}(}ZD?&YE)4$-()fZbP%+?LbqvFEUL9 z;|7k6j>9dRYlDPn#`pfy*5Tj!a_jbKJx8fGvo_?0y}t4B@$F^A&FjHYu&>T_0*T28 zM`V<1YO{C3OUSG5$9R&|5zlTZ4!yVVc^cp(iB23phy?TugN`5#Bd)_U`)9x|qd+$# z2CL3+4YPC^;7b8T^%tQ&lU^OKG`mh6h_J&1CbZtDE=D#TQ1w1drwK`|g3+G(BftHG zF$uBuvwkKkw?Lz}HEW3{B-(Zgn){FRJA83y)-loO>+b#y(@|b+!n%#Ns1z`> zv$KmfqED=LPY~-8r=6X>uPWyB>Y}x^wPwdHeqKfOTBp)?%7#WT$N9dPR=6ta4o95n zmQZ#l=dFrkN7uL$mJubTr85UAoptPznq@xB2Mb?`3M;6GEsEHcQKIpK^hWteyT$H@P*+xWM>e0hi+1)B9rtq&kNRvk5lzSZ~bPlpIosQP!E z)lfr3{WO+KCajVXcU;>PpB{Y^|6st!>Z`o6ezz5&+Y+%OA8@9M5>1?c0$UQVbL!No zr$U3I3Kuh^moMTTfVzpe^(z4b;?|a;nf6NLICcaPcD-Mrn^kT$j(*rVo6oB1>cn-F zR#&sD01cUiDPVk`^9bR2s*agapK}ToT|0jqfTY*5`3*&FyS+QIU%U`D&BuhdWd!T{ z>)HJC!B$9QZp1XWqL2&=v7JsRTq-gF;JR(6+aByPeffbM5$TTeFO2Q(XrBIruDETd z6PhdWG98@fAyiyS`Do|;&9>ihHgin|NHf=`Iu$jR@hAbjZ2eS)YF(>0bm8!kgJ*Z= zZ%`QS7lhc)>8A^sR%#_(n5b7CNkK2+(%CGbl(9FFW`Q!cdOj64ZAWQNWf`SO3mrm+ z^bQsu`2A@W9VVD{@(Yc34me4jIB}xI(1un~M578`v|;<}YU~>$;9Gzvy$JAR_3gLR zFN5(ACVl6VL3i#S7@h`QnK#|S!0>bom#^G@krjl!V7p|oyz}K4vO-t#Eg1}+Jc3q0 zIDO4(YWNG|u@lQ^+Q4xZ(TO%PX6}gWNNRL2_Qskg% zH&U@U7Fc|SfCZySNCymY06uHtFrSPf(V5jYI%IY->FCI4j0n@-*~KCwJ7$ruMSXgS z6f?5bMj=@e!15{c)67&YVgN&gKQ3Y-&~X{>dq7>F30rV3f>_bv)2Y`ESXZ@KwBZI- z0(pmBmyOa;&^%RM!nt&(NsAR-3OU-aU}0tmRPB%HwmovcEAWG+Md-@(2r<#OZ^gbuWGGvuW*aH;;r>N4XE7g?4{O8HHPnA zT$$oJhEe%s!5ol2{sa!FkMO`HJW>cG-qe@93!hgzL!vT_SfF(e4=G{3>b?jlke>bU zr8#qRSNk{NXp_9%FR$VTZ6vEODZu4sATUoqq2V5`Kq~&7qZ_9fB1-yxV9ki0Mndft zinEzV-pqZnmoXtsr4v6nionL`lEtd?liY}6ZC{edWrbR&Aw=@uwerTGZWUtgLK@eQ z5A!+1{6n5^Skddp_oa1ml{#NF!fUC)8SL@|P1x z6FL}})u9yVTbK!paWFUf-~skJ;SD%@Ia3rmmJJIFwE+~wj!=tvC$1Uy+*!hu!uaJc z-#Z3eXtV$?6{Xj(b*bc1mh7Qx=`O8|A|^T9YrHb}F{FtISY@wv2cxclb{Tbb^`}D0 z;$OU!^^D3M@6mX=1B{aF9$mI*g_rX=Cp1Pr>$&wm(Y9XG@Q&;;)oS8qkcFxB6LLWp z&!w!V7|7+5!rZDpkMpAErVTU$hjyuItoT5G8ria&dYc7!YO#KYQ9qz8dFsos+Ipw> zs&kX^$|yjC*nTd?pqYoConKjJvT|tlO>qYH8E`9WjgL4ZNh>H2U(~+Fatvg4ll7Na zE)8wv2;Y;-B^cMitq=68DEVyBN1fMc_LHpqdplNf1KDWb78etl9R*QrED1+sMI5e^Tx};_H;$zC1eh$T7hF%CTGS%b0nTJrC$tNulkd*=sskWyjSW z1bK9YSyaBRNmG5wGAtgq(>UH z0jl;rTR=}~?}1S-AqwkqbNiy*udZ|L*YU=+O~i5UirJ#`5!n5e>8erO z9=PafnAHj`aF?xs!*`7v7H6Z{*G7@!z1>Y#abs1o#<5K#{!0=yl^8&vQT&M*m-Ssl z;Tu*BwAA=49P6mnAhx@i&vjJErZ^RIVCY8ZhTFB7kZSg~6u2_47XIw>8e5T-uAd6? z&W`s~1O|%WHVwW1^@g!Q{kxOJ-1ct-oNAqjx=bnHp}f`gfV)L{qmmxeU8|ijp$bhR z_O1lwr7vjDQg9r?4l4{WORTJ{ID1LrEs?f#!9T<}Zw6x~J*O>%B~T+tz%!vB#O~XO{{Lkz zeu6Op_zX+aj{3F#<$HfU-~De;4^iiU4Kj5#zrQ54`#(O)lL7iWYd7D$^tTW&C!+!C zshw`v!M~J9{AZ2Hw)T+}(>|uEKmKt`dO+T%0N{%HlE`;yDd+o7NZAP{R!`28oWb9w zA@EPQf1-0?cmU*;%tsZ&%D?q^y*MHK<9$|ODR}xnpCKzV-t^tl_|l-i1ty~>jvd1@ zLX>9d|0gK{;!QtLe!#aBM#Z0>%n*fR$9AH2{h$BI|K_gzPY24=lz7w35zK~5@lN>j zlUYyV*q!i-+W9vg%Xf6O#G4k76f9j5y7G?~BIS)^cavU*|8L!ZLl79xG=_`o1h zzjW!+!F-WI-cJx^xX&yoM{FZpq6oP6B5iSjY9?Y97E*l-Pmctk`OV%S991kvjm{^KMtJd zT6)usk9u7jlGG|F^EQ3ItQZ_K36P4R>?gDZHCZ>+%%H741HJ1|J18xp-|gQW!6QaE z{rK5cy8c*Udp$8B;S9Kr>`;H`wSPH+nPHFTYL@3I9S<^nu;ITGz9}A@#nXf_iCKGg z%AWV57TEOfCze4P0jJwg1kj8=MG;Ui(@-8WuSb*t9;62_VO#?%> z?ca%A!-5CIMoCBs{QNqh&Thul;Ua+vEz^uW7H#*}Vdk$7)4v=AdiltxH7AR9t|w~` z-sNmdoXr5J?5OM}vb@p&Q07B-$uZHS!U@PkB&T7XArH{Y>pb>0W(xx!@^Ca^Lv4#Q zC+F%~P#G@KPOkS#B%t^2%-pb39>Z8K5aMs^vNjdgVAohaQYL^I&+TEXfO()*ag-tr zWJ?rnovJ{Wte@=@9vv=XheN1lD4p;RUl$J)7AARt05Qp8I4nVp1~Py^(XkVbztYUX z>@)ph1Ma6C^r#&+=Yxa%^#Nq{Hmd*2dQF-oFOf z#ryrL7uWY)FMXlE-m@g@$Q9~&If2q06)Sx?Px%EgJowdi)46Da9~GlCnIF7R%UqFj z;-!u%gF^%B_YSP@U$Ixv(@6D`4$WZ|VLMm3DENuT54OeQD7wuII8FCxe+rQuQ@3am z2>kAQx)t;ctWv-H`+wnlBn5!39GlmvVr+Kx>HDwDafzmssd{Tc&jC zW8+F;#=F-f&E7L-qzO8WzU%IQyTZk!l$5H@RA|mHQIBO~XL)E>>J-oRi#9(ULnJ?#G(cuk-DAWHg>>pzzaB*=dD>EW(Ys8`T@!nitoW#AcOp;aAeP8G_PH7ywuzo z+}sO}%+#DVG1XlaLxp(Z;lp1m0(p5Qu=a?BZb-C%>-6V3D1>KNY}l|N7VyfP7sYra zMl@B&4^*2hr^MYP{3*y9{E7q6Y+6`88Fp+TCt&p^KGszwzwBW6!9Z%g_xDTxVp^Q< zte&18NUutVde4-+^P0Zry!Y^Y6X{7s15j#~SHULe0y06N8t*Dxbw7oNEFDJd_VcZ* zCZ7(MF4k4UB!o!_X2#tkzyqeo$f?XErIpuU=JX2g@tZLX3*V?A0XLk)*6AAesSH?6 z&#{T^6}30L3J!33TD_9kVZtZ5b+VjTX1&JFyC+c3Jm)>>+h`(TTUx zulG2;d#sb%bSIq9hLSFJpZBc*j!bschXcE@WJmevGy>-E45zWRW%g5Xgevb{HDcDr zC_m#%k|jU8AB1fd!$nao12<$VTEz)aL&7CdxK-f(U|PUcsXS-U5O-DWxA-rf?@2{K)JIK@1@1HYJ_z>8Zy) z=5s)*>p{z`Ms-==W`s+>6@;$mZCruda8D#t+`=FM(3%ybdcM`bK;9B+H2OWUr~06* za;BPiz(1Z#aD4^ay**^?(HIzwwB%0RrSO|Y)c|Q2c3@LLYF6BQnqe7vpn<)wXHpk} znXWB>$dM#XfO*l!TBhsy>y7eck0EWUIiDw|QUOMk8Iwi05x0RfFz!3-P-pVS8DYoq zMQ^YLbH`EJ?%xj79@;1*ARv&}>-F#7??0X?mpKL?2? zHTz_u>RRa7Y4`?Zg7e=^+Ow@K(|w^G%ANg~bvV0aUkJhMF`CaFv`nY4x7K;gwo}vH+d#c?_d6gy0^6%D z7}zP?-m~W00x0o-JslJyVOPR86kU56E2Y@Xs;B(%wOQr4jn$v;5s;}>}Ha;+L18j|Pp_!+bK z*dP~14`dnBFBp3m;zIHeQBEIZYklkyTldexmjioF->^WZTO0QSo<5jKTy`-5EH^rbM zZ112WND+&pl_VX9yq%J=hFEXc_>H}Dtiw3)ls5ch=n26=Fuo*CfPnoPni6}7$9<~i zf!fVr^IcY%=WGX{SGG3rqOEK{o}sO-p5ES5_jhc@3aKd0+DbqYaPeXBDP^&d%;7oM zywIcIuyAyT-GR}3xe^xs>CZHK4!Ms*FY7=jDnGg8iasO1_5{CX7d7itJa%-_lvSsY%Kkxd#|CdD>I;(S@rWsX2+yv0p zexmlYMv6J%yWI85o z`K{g`w7%pA=Dbjv3&(3$Ju$eM5Vzp2ozFXNTzB_x6bAotHGbn* z)s#(l&h#G4!hG8BKd(d5R~79IGL*Z$$5GQPr^Auk3VG;4-K&X#dToUuPG#1+lnpml zZ?gUpJ| zJk>IL^XQMLqIK@dp5?p3X~nlK>CNSy;GVvL{A?l5{_!G>uPk*7a3FnDBwHHw=&m-$9=z@`&%W}e>}-1Ar6 zGLwWCqCWCy7r24z(6MX+L__&10PU}VaoA0)nk5`jYgW!2c94rbKV9uq#E1|6100L&?t}MtuYya^%W~lFx{EUU2Ia0{;3( z5kheEHCzxQs#1rMg%3zy(QTs|`6+V6XI&*E(Qe`H-$pyhVHaHw&mLdB;j(P3oNwWb z^IGD9sWszPbud3Do82hV{Rrt_%uC0y^`Ippc^8~gWqTVM8oY1|Qfue3g()8klSV91 zJT- z&qwLI!=)MkyhTO3w_1Ys?yairSy+?j80$83VsF_TfTWCq+}C#f*njqF9Y=pM?)%>0kG}w0=Z?_%p{-WEMoq?K`f$>)& zM;MGXfj{wBF&`Q}84KHM?~wVresmAn!3`?b)v1gdnrQTN2}sba719@G&;U?76%YrS+s>k? ztW@JW8b7RBuQ{?H{2AX6WG;r>*RHTKKNM>RNG&u{L-e=xzG5cnSrKIy0Qd@Zd24Y)}}a-E7o+ssUJ zF^iILmzNFHU~Z$BKSDsGTh*KNJmzicWI2rcdcr_4=ZNQ%C8(cWDC^dvF|3L6=ir1$ zAgT4LGY9)ltLMM2qMW^W8SKHHKtEiK;)n-jxoH5aSeTm9_o#Uzsi}$_6yZ&sU?R~n z)zD)$8F}#Waiv&pB`uVAk+aRIbG^s>P8Q*)HY>7EAU|@&cpSTOd@->&B>U)do^QWr z(|VhK6ZGU{U;pOhjTVDfXOpv4Qo`Wf+gf1W+-@)o07~_fd1W;fN_`)S5BVgqLZHGZ zE{8Rrvx+0eb)l%E2MSDOno!D{qIxVIfrsaCp<&&btS8lX8eM^mD7JyZ&@G@MZUVC^ zE&^Y^Te33GaJj??LFL9L^kAmQ3U#7CP1bAuS{GR4zu~Y>p1@F`6Oe6zVWsn`*+JfF z+S(!O%T@%U;!sthjEL9J%*|BNPN*i2F|`wf!Vkx+NZDZRn8-uREU_!{#>VpMdL@Me z@{8ey=QXqvxe7g(NFw!Qt+x9oM0F_r5r0p>9Rj|Bb?dCRbZuj9OK(3(= z^lW}zdEvaG==3agQBvOWkn(5Q)IR6Rp+Xn|?t%g*6Cs*e8EG5AH&v&ea$V)x;ZGm0 z4W(>1n2bhfIzoU7_2Kg_J5~p9Zg~5{MjL}3|DZ=W-MbE~ zSpzP`dLX|x@^$sRmEN=g`Uch$zY(q295@OJzT6N`BzJ2iGZ3>9qTS=@OJi2DgdL0Q zmLtA?i;Kz%Hh==!UnSf!ZfguFhlvUzw|Qyq;TUBLr-BN=CTRhD@H6l*WV6C1O7YTp z2}wx`loGABD?t~FfyS)uT5LhiWhXdbY(;vO;7hEH4|CM&N06~);iil}(ZVfYG5Cr{YJ_~8=&M|V<|=C3AG!>#&63Ov2X zLDf6pmVsb&Q#Ph+0`j}_KnZvaNEOKjI4X{cQ21tcjaBg0JPAFbf1)XMxMb}a0zN-h zXt*B!dHkWa<%ftl!5YAoYNV6z`(+0yG^pOA&TKE9mKoDcGe2i(CKEQMd6%L9%%;8H z9Zlx~jbwU3bU)qOsRxVdVea_YH5K9bHcAdL%e;ZORuWuf_YLL9aHNQ;6**=;q!y*W zndbC~E+491N(Xs;9crj(rW2+UyN>)Ub;!!Dx6;f$#n!s#E7X{RI@`Lhpx}vxJ$kZZ zq0^^MN(Kw?ca3DhV`nuqa!$F-4JdoGy*t{P^&$r|Nn!1As9jLV0Zy3Eg;qHaCdQZZ z8qcG~y<``q#v*wo3{WZK8cjbXfs{G*o<4L~*4dTN4U|WBs3%mMotP^@ z+E`pa|C%(LFhLgg@gSM)61MsIo&_N*8H))+ls&+&{z$ryJA-!z^6KecLyaK+<#ODZ zNcFBo7s`#>e}6*vd->>k?)Nd>-LF4D3XJ>BBJKEs0gHlsad5$S2v1&rR7{;h@=4WJ zgO!mOLV7_RlD%wf2=q0xt3bK=KGWO~r+U|UokdfUno6Q$A0*LtDTxlmJiq$oLnBXF z-e}G{?=fF ztQg`Y?Mb>;06oqV$;?dJ$ujir5r%!uq{0y{^~)h^g8%AvusNKPkax<->P@Vdp=)v`WN@1I&q3~#3! zF<2Q@9&-z_V_rcejM@rZ{kS+JYI=6I5G>Cn^?~YMi}qv_;jsG(b`;u$O4=O^j0cE0 z({l=Yh*!`r@WYs3U<@rvm~wU#wb;4l!*}0p3zj|kld63`15wRE2YR=`brtcw0;XqM z;P4_1638py9e-~C;*`Re)yWrgOH;S{c|R2X;N93;wt^J>P?QU`%?~6UlF(bEiz8P* zzkgfovDj_j>v+9TfpZe@?5fUs_3h(VQ-hN2 zkbpR3#fV}JVnxS%i*q<4T#w4`(`qlQdCJf6b?VE)j&*!OTJ@3((;wf04R!>ym;)4& zAT3ya3C}dMP^$8KsPO2FEiRTBS`MV;#^+q1J7>4aA*F?mFVPtC`mzT@H9a}iXLCOl z&8DvveA79+HX*W?->uf)l#yKRN4x3UZ#Zxg||AGe)<^)>h~#`yG)CZ zgexB%RCwiBm>3@meDmIcRqB25>BzWPjaEE&=}M)$#l-HQp&|3Cyu5s#(l1gQ>9B^` zq!On z*=KYT#(knI=;usU%uEb0Vo;eR>57|0|EXYHsnKH9Qlh$p3Ty9om^SkO+Bc!Aq%4AD8a}1o}FWWF7In+sN+5GLF|BugfUUP=ET)qwu_1kBv_{_DOtey$K z?0xfOX+KWieGqUwUfH1~eKXXGy{qUhY2wD&FP0kS>{#LpKTNLfk`g@1D7FLYbH z*G`|ayt9O!6whBu7e7Ddo4IjmZ_kr%?HN|C_oveiF5zwy2X6W0FTecdo4=IHw|w)L z!~SyEUs~2)&iTtZf4SgWO2NHc@GV#S%hmpJtG9%4!E&p&-0JBY8*Z&_l#@6=$ literal 0 HcmV?d00001 diff --git a/3.x/images/arthas-web-ui.png b/3.x/images/arthas-web-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..f5fb25c35d4cdf236c889bb40cd55f9e24d46070 GIT binary patch literal 249971 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

    Kl3u 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%0AuCBCJS%~!*tdXoO}Cy7msXdL0|A5Ltp|N% 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
    iR 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%0A1)ovIm{J17T)#?2YtM|6Wu{w+US~5hGWAy8LVtR zxWdGTr+prJk*n@}eX4CN$!-c+VM6!qqdAt0don|!IdYvd!TQh63gMETk(oHKW1H#} zDUnE7j{Wm^fM~Hm#zqo1SE-KO*%z0kiRq&f&79Q=E*%Hd)3#uu^XUs?fvHt5R&aUa z-WME0L*9-e(DBoxV=|x&?RsQ{r#EH#O*NKe>D`@NZs+8{K3Eu-pr=x}+TUDzPZuxP zMG}uEIYd}`gYnRW=BKsQy4m1!)S&=9LPCX4Lwr)4N5lL_bFI4Cxy=46PRVd`F%&JP zjm@|`YJIj@92{9c)(`V?Szh0Omggs08?&IUT6e=Q;uUoxwH%gj9A5~2ZdR|?>%oM5 zf-^nVa|E!GTb!j0VQzP#ax7B-j^!v6j)lIe{lQM<(x+K_Hau!Uj7OF5M& zjY;1aHVFl(DQ8b?>E+ov2@&6ElO&P|u2j#4?F+{F{($0hF%`ozGLTa=#dEk}YcX;z zk31>AqqaMB`5z-v(9(mTdjKz$Miw3u#y>Y?aR%P)G^I1c0TzGhcnI)+Fm4M z7<_;HV2c%+N^_X@>sjW*?SbLgj15*P{dIz#<2vgDUH2my4#fhSBCr0;;e2QGO|LSG zn~5vBMZh-fBhAaeabnpM^=9PAd{|~IIWhvA#$hAZC^JOW5{ce?wkLXIqdhc9T$@B!R;+UA1d_RDF`PALs3%RXbAilyxnFU_0!o0x`X zn|V1>-?X8F%Sg8TGXz(hLVw}%Q|bZVnB`cSw`4X>adR^t_0@iocodACN9F`X z_1ZQ@Zw6n*G*`O$K3gu`FH%!Xp%4#~2ryqFViRceh(uj%Y3D|c!D1ROr;)qPrYsx7 z`STYyvbeDHSl6~0X)<^f%Z0Qv{V5#I04oj~IS+$>ZzW4?vHxCds&|WWIFk%zUCnC~ zj6Mujbe)xj#hSyxKY)LQ{RsU>%}c=i|VVlyvWpmQe) x;=EAMQS5w)mz!<<6~)+ssQ{Q*X^0wEqDt$u|8k3`@h;$FYGh@Ix^&~o{{g?%Pj3JK literal 0 HcmV?d00001 diff --git a/3.x/images/arthas.png b/3.x/images/arthas.png new file mode 100644 index 0000000000000000000000000000000000000000..73317782da75334e14fa1609de7aad8776910aa4 GIT binary patch literal 16775 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 literal 0 HcmV?d00001 diff --git a/3.x/images/arthas_dark.png b/3.x/images/arthas_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..236613852dc95adfbe684f307337534d722f93ea GIT binary patch literal 5621 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 |RSkf{tGsHukY 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 z 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ákz9>j6NH?{dR!T0ou9_v8H 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%0ASDV`fSu}j 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∈dp{+`HF|Op{w-EYi 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 z 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

    smDoP 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 literal 0 HcmV?d00001 diff --git a/3.x/images/dingding2_qr.jpg b/3.x/images/dingding2_qr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9f52cc3abd5c469cf47d10a5210ef2276bfb24b6 GIT binary patch literal 28539 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�LQD2e}M*FMAMbJ&~ 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 BhX4Qo literal 0 HcmV?d00001 diff --git a/3.x/images/dingding_qr.jpg b/3.x/images/dingding_qr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..933dad3b65a7bcc3a6fbd93a7b2f7f5aba81fe8f GIT binary patch literal 28684 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 literal 0 HcmV?d00001 diff --git a/3.x/images/logo.png b/3.x/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a58394ee02ed8fb80d835f7bc33d6194ba1d3653 GIT binary patch literal 6328 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 literal 0 HcmV?d00001 diff --git a/3.x/images/qqgroup2_qr.jpg b/3.x/images/qqgroup2_qr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b4d7fd8c9b89bf934b558b4cda2a7bd239711764 GIT binary patch literal 89788 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�ZhNaV?8Qx9^Oo#F$*uj_HxF=r$=$m`zs~ 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 !BLa5IBKH#$8el?DrtTdpgnwB}dfh z3(yp|S{o`)(6?Venhm&1uZ_rR48;aT0yj-0_S7?brp0A!P?;{(z}uctu1k=5l^h|5 zCtzB3Z{@<?CPXB&b0uJf;V@a(M;>QG?ExCtB}n zn-QnM|L*23k&C(t|04w+w@i6~y80b@0+tk(6P`%KBxh;RFqa|%NNlzQ5nz9od4Uj0 zW#DWq;4NtEorEue7vgfq@Gf>_aSqpRez9{%+!cSAJjW+lOwxO*79V7O>kZjj!n}vn zUx>zQCc}nNM9`T@Q152{l|4F=6t;XZj^q!&nwoFU=kNFhtIDQj>if6oTMaK&<=QO1 z3e@HxW^B=AEq6Zij%rsMIpteOp5)XG>b6L!^hPlf{+_K=_Of}4vt5CAq2e2Xd&VZ) zfRu|$W~93`doLqw?fw@H74pv2BYPX0s)PVaHa4*JiwB8WU)MMsy;kzfYuY6n0Q$h6tBq2;2Fu&VyclX)M!Ld)^(^d}jAL{$@=(Jg6P^h> z;!*z5vmT$LWbS^Ex+W`Q{FcNQNr4r%fu9t1cNOECP0#gp6gQ$bWiQv90ra(d=hJrOFBVfcqCj?6D=KxO#VQFCjS-rf{QD}-*Z(#Z z#QV(XAN#2Q({=qye*vYqfnw#L25abE%8eHI`|2m16Qzp&(3HY*#1pfC#~&IeMKWr< zMvD51+NDR;#(Q;xlpJNhis$7jD4d%9z1XH!*z>eI^TkZE{4MijXQ5J_w6&XKy(_A! z+v0j!*JHC-9%Ay}Szqcfy|(V-uiyEMEs#+FkH=if^x?W~p+ZP569v&90#U41nWLFN1vp%n^ zeVW#RFcCceQZ>Nzvf6jEYd>A+gP%fLrdCMNM}Hk)TAxiJ>%Mhd^@@Ejs~jgRJ$u+X z=Ur|~*CER7hD!Q3JQb*pD&3hrOZS(4vBEfxPYPTuQ_ggtYE_9|uJAD%%hC}*THyI9xD|INy!D82o8SFeXmd% z$dugDlWEG~E6>%zHiL=YsF2m5_svM&wu){1qPQU&<5iUP9@D#Rs~+B4{%5H;#?e-- ztf5sA(_?QY&y_28KLFie8K?a$ZjORX^enEPi}sDzbeYXgna%Dpx;(cfG-j2NvKcRJ zHdGv{ZFMF#Y};yQa^uw#uvNyr)P>QVzgPJ(-iFAN)X9C|%-kUm-Jfzmr}#^S!WMO$ zq@63oaa1Da*(PRF&ePP;zb*Yz7k8}XTy!kHoiX9^@a}4`^4LogOjm#mR>xcN^ONPT z9|W?P?vI{Rq*gn6dN2{vZ2I(-fO^rx7vf%{(FW-}Jfog-IFpr-#<1;E`q9r~{qy&! z6qk~;Dj$wSN{MTC2L_;{Tt}(js?C?2YCa7SQHrxv&m5aH#A!5DiY?UI$5t-#j66uE z-Qeh1nfz%LcV$D7B$8QGpRKb*k7T5MbWC|l^!t=q2zH<>XKWllr%|0u?3ytIkhm0B zVC)4XsTH=I%NpMsuDVrdRQ@!W08>_2k?v?6RhS(L<;;>iRGOBRrC#HNTI7o7^S_wn z7td2?D`DNzhrL``XtWE}62-wB{R?~G70!>HxZZHOx$)e%zH4yOs~RGED!2r{VD2Z> zQS~>aFfbv@Nx7GgIB>Y5T5WTUs2rq_tUU@{R+xMo)707Z{m#0AW$8+d&TPwKab;o4 z=My?k$A{&%r6aJNw+C=6%b$7|aqmrHKsxG|B2PT>#0O`kmW;b>Ufq3mzUd65kF*JlG^%0zo^s~F_Q>~}6HhlB4=NXn)~ttmN?(fZy2-vVrRLZ} zY?_U373ec~^WZCZU0vhvs=Cm-I(Qw(28>C?`KtW>`eDJ!MWptXly$1qiq>}rKztl9=kN-|?s8U)oxpF%8jJ5gHl*O||Q~GBN#JLAy z{!Fg0Z`-De@!LVk%Ji(2%jLw6{%m1hC9$kSX)A6%CXj6di0!6X%~t*3=uq9i6`6d( z!zNki;8|MD!NX#>X;#OTe&^&1qTDl8slg^Az!d6PqUieDz>U1U(6QQc?veTIoXe%+ z_6fG`@BLj~ll2v9!Mci~TCd@!+qZ-D^zZ&sEnUd|)Wzc?`Dp9rxLF3Z*};}``2kM` zFS1{^NKsHekn49ANyrFcGdEeICAMjwR3NZfI0mdveY(p1vf|45Hc>xts&1_}^vcq< zF?1`i-M1|C+RvD*jOly)AXPN+OA*}E>pxcC_?v=2NZop_o4sXM+kLn@PH8vkAC427f zhO87VEQ1XFtmFRLHieFc;#164PxHOfxx3WRf>}23qbL=29##18N7YAd!yeR;teqIe zsz}9nsvN(Ru~CV9Qy!3fD^Y_*vzsmm+;=2ifJ%}>Ezf8r!HGJX7n$$wn)0~SQ56a) z*Lh!(XA;luVGaAsvr%vxJ$v1%>UJR5eypQa7~l0g{Ma2(cWs-~jX9U^0lk#hQR(?F z*E|tDBw&(s;W`b3V#jL}MiB>_Pt;5QfC|~j)v;6+-oPVSO+91JjsPicYibX39W>dZQoP@u383qvOQl+`d554njD z3nGkz6G_>Y9D_5##)B%|)GbW*dc~czR>`xYq%?HlSo=PUZRdp5X-;gC{~-n}(8B!q z+h00r5a!o2mUyCnE+Wg7ZtJamt*vUGr+uEyH!aIT!Z&?jaD4%1*^W<3vz#bm= zX2iCCUO8}bY7t1T0k(Ghw-7?4j^rx}Z(P6QlP1OoWzAA;TnBtM?^gkp&PNxOZK>8Z zGsl>ov8PLosNeH2)0Zc1beH1Gst9I^I(RkRRFnG;iwBjw(tf8t76@uS^Dz+Oh9o+b z!P~ehB0lbA`yKe;Y(Klb4vBd?E-**;dUDkO(2+2pQ+MW93<&CKLNn)IBr>L?-bunA z8&b#N)M!0C8?+ho_9a7uDwuGP$b-f`rqt(G3Q6TMi#blVs{vpM)2;ja$eOb26dezf z@hU&iCr?*D>gA?!lY zzXEqwoVuNxQ>j~YfWdsYx#aq1BSm05@Y6MY=iG%|0hW=Pun3j6B)z-x7w@tCRcB7w zP$`wKh7UcTrofJ_tN+;d+PU` zy`%vfUEl5a#SPim9i!6cd4{gs2GEJhE>1V?Qk~aELiK-d@3)_CWy>g>>Na{Ic`uwd zH*C*jMN|#7Y}7-mbXaV{#%z|w^kSOE@SDa4qGzJ4seozig&+Bof?Z z%+Eo(wbh_-+W-bV9iR7uw{mq?esI&8{zf@q`5H+SL5xw5m`0(9!#G-&+wIpm628u+ zxEE7Gn?+%8&4eb1e}*jXPegjne-q^Q$(B!OrGgXA=F|imnf(mY9kFwXNiV)C{5;kn zb86XGt5|kz)a6NitI%Inug&dE+iGa_(9S3{52s{$_Ll$y*1%ICUkit z)I-PYYg-nmCc-GRWAzKP?CFHTvi0JL*fc4-!(1b1h_$FgyL{1s;@Auug3w^pmgM+3z%c`zdqrXo`~6y0p1m1XR9W zghmTjT+X}A9d*6&9j3xG=*=xHy2h&O3BSh1jPwWp2FSjIiy=5vBt5Y`=$B1P41d&} z-hOWnC(K{P49oxNHYG*xE5|+KQ+!RNCxe(;Xz{-qt@rSrG)Pyvpon{U>uYiCLA6n5 zd5w&>ejgxM7H87u^e2Ns%`4a7oi93AnzK)x~}kLj*KBiQr7hP7|i7LW-Ew?XX9idaPgteoTp8>Xf1mNB>#Zpv-C(m3Bat0_rH9?M!?M z>fAch?S}sV9x+HFQ7teeUgVr9ldO+0k^uiox>37ajigw;fIQY>I~3a4AjVMqu^VfBY1)#$L>{t`HeCu6eZ&mWvvptCtn%ma`Zs{gC$l#rT+UMh0eLSikQjCYWWZEKDL_>GN%L@@ihi#6Z)u zM7lFY<135};6T!~w-O>{Z9lXKj=PQR1gjg2{+W*WYYz3*y}si=^wZxIz!%dONitZy z%5KDa%8ehm$q)&Li{hoP<#b&o6)w(qO0QL`ym;oO{4i7#CfCEwo#8V?nB1fTa)M9N zy8!*Z?ao>mI+(g=ffp5lp8p^$j>%=AY4!DBV4C-{y_b-TW<<#@&+!imuQ;2;sXE^; zMpJh>@z;s?(dxVrkJ#5^odaDoZ~I&zR@ImJ(Tg&Ln^J~#!m9hzMd_|IpiN(UY zLfX{pk}I1^^!Yj(It|wO!5{>Z(iE_rjZf%aoTlw*=cO`;w>?YJqf1b^uzuc6;+cW? zR<~yN)qTh^r-JC&rNobC27(-T?%k#1PiRNo196u0g&S$`1nD5I32A5~30`2csT5Zl zH2kZbHi`W@Ak1-n#$qL3Rr!AJFm>2R_b2m9DcRWlS!rH*4uMxOFhQ5OB~l-^79^@y znk#GK>6qh%X(3_#?S+SZY2spX{&R zIOsWG8$C=P;pTag*4z7q_~g^$vxU@I(`@-ym`xKCM^#a`e=-$WUA&;`A)+ZvrC=CK zk&QE-N_f?H#jbX$!87Z~=lbdjC-irPmV52)*6k5Z>5%%NqY9^otBs}E#y3Q>(-+D_ zAO3XSxsytl(6l(2hGe99wz7-(cC*Gy+iGV}dwS{yvq8RsCbf4T^8#{e)8^V3GPOIC z9ny(uPXLG4Pse*$+T{FqVp!s%T;iffFgt2&z4?*vTg`;dT_WdL_k9MVUor-?E*1;Z zcCkIQp6gHs0&}^|c#a>p#_;|AzKyvv$BP-k?BB?GzR}-2==9GiP$`*quhcY-A5Q!8 zYVt!A|7Ly^p1I{jMYW#NZ2ul4p?-lr-G!{>FM{yuAOG}KZL>t$RF>LlTrnNw z{bi_eg$jJGt34xE!{40_tBa$YYWofZ}bEnLY`bct4v5Uoe>Ty%=xYe(xuS;;+0FUV5-}gRaU5Gyj(k0VnF=Sx`$r9Ic zDr(^WCQUXy>rZQrQ}pr4sz>4Ev%|^-8v4gP>nI?e1*sG2Gze3>h&AX)V0lpW7sfuB zKPl0vN1VT_d&@WC(bDZ4<#5iEbSHsxU2rR)_Z$?s4F5nmKdN?}AiiY18BojM=`Kv; zz&*x$k1kZ1XY$1H@Y6EmB14veTtEM=$)^U!~4!BdQzo11^??=l@aRzmVT~>w#=H?mbo# z@0d7c+>U)fB~A0&qtI7>-k_zZt~-(~nd>XRs>xISw8#^VbNrMIaDOdh_AWS$IE9ij z`usV4Uie4cxn@iy5RBIKOj}W73o<1{VvV{l`W-B%6y8iNo*|VA*x$OrTm3uo_TRu# z7SFH&cxi(p_4+@@pN_@C(5zoXU#zLys(DxkS)NblIBtV)tR{)YqF;l=_#5RiDG4_%H{HvIK0yj^=gKQbf6dtz2)Eyjb{o@GCkT2S3XyC;DB1*Dg${k5%L z`^V+>n%g?yntR(Nf*op^t>xU4K;pdd1JCwhM%N^%dWEG(OjrUU9~f$()7z{}?p=%L zN$e%t8JFRLHGGadd)`#BS)|D<(nE3+Oqyhe^{vKk^!Ntotw$D%YAy_jsT3VfgxypW zjlOex=}4?eErgXNq3a8?$dJ{YN~RrQWz7;FKJix#BKzjn%C;sGaiumBo4uY5;x_q~ zGsK56W@_f*<^q_3w=XMQ*^ahd$qdWK5g>)w2{I*T8u>wTuD&s+Z zQhFCYOASk#E1p_1eR)mq0`;1EbL{!szvekD6Kp(Oc9V&LS`~G8R3{`H#ypAq+@|zC zrJVcMe^d)TXCe$HTEd@6XT+BW`1@Wn%{I|@x>cmln%enu&!_veAai^MnE>c^Y!eFg z{YtV1^H}w9Z=UG7A{#A~|B@2C373cp1OvP~?hS0l!ZwQClHi{27Z9wa+nnlbtyg4~ zU1zBk?sxG20*eH6`w@!{I+6x54SqmedH45H>KC{-S5iFlGW7E#V(*Oq0JKeg$>YD< zv*Q=Ue+_E>1MzO3qf6nvR^1?rOODgag2=|jl3QY|8D&$Cn3KpD1HZ+BEZ{#U9ewLB z47htb!`8%O^XJW4e6dY5{m9*<+DqQNpEI&e*`uF~bG!v=bg=nel;d{pn!KH_ZC;uy zE9umzkT5y_0PFshaU$afpZ>RcvmL(W_WIS~0-l)|82vi5V(7yKuPr{{V(- z)U=NQY1TNB{{a0V$8L-Hcl>L?$7fWjXyvJt@ez*amFYen)U{UIXBJd-Zi+sn{{T$a zr|ACx5A^#yNvRQX{{Y?op&^bT;MiYNf0iYNf0 ziYcHDmHGYu00kWVou~Nm@B-&k@azU}5cp8Or(zU*(#EPq&A9&nem|K<_tk6k1oajZtcdEYjg{ND zA6)+ch^CRAPXqO>?-c(4$i=CD*X76lj(W#_gYd8RhY44nlxJGTz1v~fu1 zl}Bru-WAsFydmO!KgD*C+ucv5+$F?uUBo7V+B1+PjF263)EfOUw*LTvy#Cb|7KveL zYvK6gj0I4(GAIMtM8H?&v;Eo=?$^n2M~8VXb2!w^F!8A4qPp1kvW_XtFcE77Rlz;% z?0%!g{{RJd{jWrZVsuFq{{RD6xC7`!z}F-3Fa8R1`$GI#@NMscJYT1HdTSj*Cx%dL z8b$%e3n7wL3d5*4;EdPjiuF&%pkMWG^!~N;v^*8zN>w9To(2k0dNj84JsRF1=XD_I zRK&@rx@>Ylv8twX_3CQShb(wMLH>Q{w*LT+m_D_%pXyiX{x$kzcF`XbHt%u-w?z5I zGyZyZt4R{=$sG@BV)v^l_Xp!xxi)h-wporPJTUE3A~OBX4{X!dsHY#fT=JFKB(cU> zIqg>Bhx^pnf7J@J{{Ss38BV}Xmi;)!KMJ^(>NzJSkv`!1Rp`5YDlMhVDou}y1!l%N zR-AUg<8M#p=}(9JKaj266aGRFf4^K^EL&F!B8UFy5kHY>P&+@NR z(tHV~ScQ`J{U%R;x)0O8<6WFzcz?PoL-*_RjDB@qqvgGqk;^8pLqS4(cv}X*|0n<8I{>we zX0LHuK)U(?YGeo^0RVNxk9GfWe|42C-2t`T1sDcEl>2(U+T1*5GpFNt+_QE9ka7S5 z;1lsvnNHDPJr_&MucpZ{@8zIQi?5QN9{%j;_4+XNUf}}RI=y^+z7l6+5f4k;KL>lh ztbIY9=t7OqO;YWg1b8do`>=H~XSfy?w$D921NhF>)ky%~{$%rx!JR%bKe1J1`$Ci( z8~H-)svdd10R;G78=N;<&jFleWibFE7Vg62G?4zze-#3--stjb<=z93E$J!V`{%zB zsAI(Q;-{4aUfDl4%x}}I^L4G({t^u|^yd$=%v;cMmc~e(S~;Z3>O5~edMW6&gy?E6 z!n>5j>Fm`Q{*Cf|AZ|&1O|XGE`#1=(bxp$JSUL^)g7GQ%sNBY=zRo3)dGg0QxoB=1 zld!JJ1|8P+tXiMq1glLu?Y2DDyGBccc=-GU0^^DX|95ilJ@E{H`kUZ%UyEuGetPiV zK6rU>b7yn#{f9gHhyuU-R0THMJP`a)bw2CK<+1s%ya3Yar2joZy-#(P zrWqC!zw+t#LX}0S;934b+Kjnrx0P<&PjD6VANaW#X>||W2yN@=Dd!A!d+j(BH@2q^@r&Dz>SZ2+7BfCuE;h3wGWWv_q$^^yEVR7*1#H)- zWM6Sh@Mm_m&QiVoeD#1!hxd@sawZ0^@$-}8{8Nng{;i1?h|2*>4j*4=Uaz0kf z{^6XR`_8o}uTmcD$d2Y)j}s%+Y+UTuJa*Mp1&i9^x)fdstCx`nm&y!Y_MF$TzkRnu zR56f$bozUr$$xuA*GqMjp#?lBNWe5u>DY4C7A}sH&SObeT5r<(jsnxh+Pq;jb7uVl zabKutMINW%3XH9=KmJ)IUefZU#2r}LaAPAb?EbGmy4J#Vzp)ie8(V*BJX#W&FU?Y| z)2sM_a&Grv1(l!p5x6udDEi?Iz2^mqG z=0{xaC1Q(}_WAr!fB8n%v9I-10Rt#yI*d%rt#FK8OWeK@Re#_to5-VYbC{*MrHpsH&t^Q|bd{D? zffo1boSC@^t2DM1KTBS$%=iD2&CWQ}>-ke1m7$y^Uy6!?I(?IvIQ9}Lp?tYkC?>A~ z7G%@xX{Q`(OuT=W&G;+dM_66LRQWVoIWVg9jOUWlYSYSWr`<$@b@}iba!cVWb?d8o zy*tM7JDbJHWi38r?vFIKxr-7+cr1FHHEBDSpAn>eki3o-SWLV|05=rV?YFf59U}Ht zudTza`?Fj>U3TjNkN42DD~^Iw-Deg!jk9wO_%puE7gF5c`Aq$TY-{wOuiB0Z$ZkI> z-ic1LO6QF?cE!1cmaDIE7DN?vZAY8YhW>{)x`PpZ&t+p^9m4Js^eYkdxal*FWBUr$ zj$BUd13J)scJbmjur6=*y*DHRpLd1HrlYL85;m+BJ35Tzd#w@UxAJFC$(@aaofO6m zRGdG5^Zq;Pc1IhNyuCC()tcI^Mby+(@{mvG)ag|dqzfuV@|0ef-iR0=zrfx6Ly%E( zwTX|B9VVzf}9uFKwhUMPHLVzj3SfPl|z6-e5~5^UC`jX`Z8BcZ8NY zU;o&xC@BazHn#B$#VjOdmV-gNP80vcXXDR_!6E5oQ(37kQ9|D1Z>IYE^P7#Kn=xf) zO^hTriGlaO2f%Ft0I=@~sENs|Yj3xQCpV9_7b2eypU$j}oWDFG#$s}erb7mQzKraq zXmX)0BT#3G-0yN;R?iIhyN3O^LVHQheFG4nW_k)J-8IGx{9GaIh*oW%l3>5vd}l}u zz#9Mncw46GWaU8IL*1PNV3~MnZyo{Ou0Oyx`{w}EXnz_2aY|>-@0ZI<0Kn&6Zy@-q zGW-kgRsRzpAfaHP;b8u04Uiw-^CnTUS03+u5W|*nAr3hof{&7a*9-X)4PJC2p1c9< z&*OqJHiz>{|BWD={;x&|fOn#~2E+au`w%J!{u+HS=)QAZ_yyL0_Xgv?Hx}@&DE;@= zzW=^A7#arlUwfhcw%3>IiQwTmQUnI#TC@4i;hqKtin(}yqY^c%56z5NG-*w1odjJ2 zPQ22|%^eUoiNi@c+UsBsL%n8XF+^4qoUZ00IU8 z34n%zc@OYV008tmcoKPcGhXE4yZ$LsFAh zDXa~&Rmt99VKyEFx=2*&_D*IFdjqKSy_B>yQ%VScE?(wzxV~gR$MU_*`29= z8P|1;oocTX5mjJBcYPi^*AZ~d%5J;^MXS6{I0kk;Bxkh}ya6VV8WgrKbfH19I{W+z ze4eUn{9Eo49Ka`#Cq`HY{j-s%4u$zE-(};Qc339g`TfWHuWU0Jr zC3dj17vIud#7RPjQdn+QjZTvo70t;}hkI(D^u=n0lw?p81^<{X1*w=*W~oY&w`pbE zTAb57=SI!#Cw9g;46W1ScK(@=61*YMlGIRSa7Z}~#6m&xJ-?C0b z#PWRb#oU%Vv#&LBu&@HFxx)utnS-ON=YLZBlj-uvNkY3mWbT^nCD6Ts+m5YMV7~5n zyinKn_J*|$EtKxLRob4u0SLVo9%*xprUa-PM^`MGEen;;L7{G&89Hw^QkhRfyll{k@>Sv!XK z6;39~HCUC*1GxPk?MSUy#3D?u5l=g($4T<31175vscbUe0FTOY?CdfVFU-+!@IvuD z@VI@ip4sp}1IeR$)tN4AHJ}zizx<$jMC%stSoZks+aM zQ?EdqKw54M+lwJZOQ3ptUk54#32~jsd)C$o$Y8~et7*l;JOvE-kVQFT>SOwB@)(kW zg$XJ8Wngxz?dEiDB~PK1etl)=qMJWF85~dKoHYCH%NkZMZ7PDB_LT-|)?AKlzbsWq z#qK6)VP`CKLV3B4zT_nE4{fnG+m#3-Of5C;%b1Ow<9C&XW#9*Qp_aWEyI)28`{$&3 zIQV^I5i1hFu-)x539SQ$u%m1*H*smUKvnn`N3PK)(462VrZ%C#PuXIrg&|`vm@$2B zg6Gva>^*7J>38lSu8FWayMH=I=3~44SX*UYrvOs>f%00W={+={ny|rrJ6jLAf0D+p zSN*wYkdOsJ_Mmp|;4w#)%Y5QTR5l`D?&;;eD(@SU&Rj^Z_wE)2i$J5F>Ote?1k~4E zPMZ;I==#&KP#4V@IMSS9wI4DwzW%_V3V+@BUw#7vI#!Q+6}5~ujw%gtg5(SJp}Iom zSJIrxK6fS`!7?o$cDRp1ZB34Ed{aojedQ7^Gh1LzAhIYCP7Q!9L8QQ~y_j!WuC}_0 zmr_XPeQ;u#Q!+A24My~jYL%g!a|(!Y@DXs8r>AZxQQENKRN!6tL77*XTHhf5ve5@5 zMZ5_YM4Ig1ySHvO~EI>y|kuS3LG_lEQwQBB-R2 zLJ>szT7KtcgKIj;PJB+A&t92WmS%Nd%e{43nRt?xjpL-*FC0~=*Rd))gD2^|S)sQo zbBW+am~?1K$EN$~KmBIzZfsfi9bAy9uTLpQdq`Uh4UOr~4nGsZl3f#1rP+{|ZG zwfKRwB4&Jak*tS?Hmkx%c|xu`Vt8$oGLfm$k}#+K^O7XGER1aZz-8hz6xp1y`RQ=D z`p*We^Rz_O#Klok)B-l~-Qw^Wh4sd7q}377ydS&Q5MVHE5q{FjsSq`2B5+gima{o_ zI+>4fg+W(M>qk*tq^sYH2+kRAC^BG=P^NF-E>JC5Ze;#Wkt$M5s zov@-zst0DCH^XZRqhq<_Ahh6VUF0Q+J!nHuO&~dlm6TD04EU+<=)!)ri%yKpYM)}W zq=%UPEUB>p$$(&#&jnCXku-}k3t* zpVEty*ZqXPga(es?JgSvD|&10cUod&|tc0ikGFjMV)%;%wXs zCjrcAB2i|)BE7Zrwp~XD_`gP$A;*ag=5-xrBiW>JL`fG>k(Cwwxlo7wF6HG>noai` zpS$(*aJjD7^e|k^CZXWZPcta2IjK+hB>9i>D{7B6YF&iFr~{_1ztxtAeow@PAB`(R z%Q5r{m||<3}h~wThs1YMiKkt2@jGi)0 zjt{~U0HwI@xZKd6cJ98H`1@6SVy1WUs&=*Oon1u#c7M0A=fmf5b|o0KaOx z6r#PD?bCMSniTE1*;erQ=9D6N8Oj$>h~OHOe0 z&}^Ak@bi;-xvbvkl+|`qiEB!$2-$kJPfh6}JZ#pMn%md~tAc=LJ znG%o2e%l*>wM4sQbL{?1bN@DNd?BBko6$;=Q1eM+?hpRyX!Yz0Xl4nG?tkzjIjv)P zq62nWEsm{cp9eQ%_d>VcYvIVH<|_XUu>B~f>q1o0a5_nof-o3)lF7N3RMM0LbKqQf zmo9t@+OB!9{ANQ=C-DpAL+UE9(bLx0dml?E7jpd(&y-{o1&+^5Oi=0)BD=NBG9X~dBPttI&dT~H}V3OQ4nE`Uq^)l2-b%9CWWKQb;xnN)#hQ=^4b#C~GF)byNhGCK$0}r@-sEQ@@WG?=Y zr;r)NV7MoD59_nS1dM=Dtktit1=7pRbAG!f!-LFu^=!?04#{md8wXH+&V@#JkTRUg ziv8u2<~Ao5JFSR+)+cssc`iJ8b*|FA7p5lc*Ms#V0)-acCnZNyLT z0)cnB#p@&Ev2TFr!-s0qbdYz^-c_0A?y9_Ni9@|$+cJ?e%Bz(_sb}ISedY|i#K81u zQJ;o8yrY*Y5JXCk0FmPiyVZyRKg!0qp)FLN@@Nu6(u!JuHtPHD>NROjhGr~S zW@?pN%os)#-QB8Eu9XM#Gq?#3_7=f=cI#g-15SlstT`g8b~m=m{J z4h0pi9JeW7_J)DD$>4JP%{xWILLQSJAGE@YAUh+OvaRlQlk>uP#R!$C)zfRi5S-4V z)p1kj%m$mALy{Up(KnOcA&~l;iMCXGD@DCy`v~<>%aWNh6Cypq<7X-b!Te9If7x{Q zw9vM1Sv%{RXJ=KhSl0%sg)EI)VDFr7b5PFdDx0#TW#d zNFTV<(Jl#FhEi~RjCImXvxE@Mf`57ms~ER0s2Xn-I`_qjt2kRd!?AqPN z{eYczP`hXIAmOZ^hlXc3ug!Uuf2vTjp*eLdP#6T!Q_mchM%M^p(y$5Z%i6*MQXG;M zB;3*&H}NPxAR?tctkLjZ&N>Vt;tg9`9HCU_H_$Mv2d~bXwQLKU(a=NjFdmG)Y+Vl9 z@fyJQ{36~YoIU2?zu=sSyDMnpwTzmnD*m|Nm9x@`2;EH2nb9kheO^yY6g*+pQl5gB zmV-(nxf}74sdsDxv*z7SXsd2&5D>0GVraWA z5c$HO#jSCTC_sNdCRn}_(9d6cxaxpflEY6C(BPLQ|08+whR2F z4hM|s35m^<2NBm@bv0S8Tdid?H@i09DvaZ{{GJ4(Ca4URJHFY&8bz1#J3xtJ5-LPY znn=}o0*8xw4e?4{RtxBB7mo9>)RF+&SO@=?3r1Lp2q}WSZCJZ zS=W*x*X6SVohLNLE30``*5VnhEELt=PntC$ImA};!oWzzvV?SItYnh>F?jfEFg)ug zeM$5LFB05`0~qkGXG9BCPdZsN*@oy5W0AA?$1Gpxaj*iblzBa?ky@>Vgo_CMSGXXg z%)YniU#HWLiR6{%kGe;{1Q36Fs+{c@8GAhif8*Xt)#y$Q*L}*&*tdi;ZUv;o8If+IQ*_Y&qY$72t=W@1)|^svZu{l}MV-p3^Plg*({>9^dM$uHY$fxBIyV z^sn89fKOwMW_!NJZ{+rV&LcUqnSVW79NQuMvXbVU_EGzi?XMx-;m=pPzn zMYO!lcm)mF9_V1)GG)<)$wnK8onAYM6A{dEWF*0svOHyfIzOZ}%7@l}!fIOENWMu4 zw$fH9@xYznQJCIfRj^FK_S2-U!8~MWea257pqtw(t#J$2n2L;3*{Z)=!X49_BWkgB zxpS8n!dz}Z81E2yicjBdx57@uCIOQF46kN$TH>Xf1uRL)77V`uG)UwzfCu@?EKVoz z_+7>calTB*9eCL+seTnM>aQkMe&!SsA5_(B1EFk*Okf;%L)WiE8|5UZV*O(Q$2m zKP-w*^l!WBL&J(tC@=+<#l(b~4sGm5M&JIM3g>x7&%0%&yO19Ef23x*Ax)~K^QmCA z62|81?w{x)8*!ryqN{~6?GmwMHZSBpB19>=_tk68f(1N!5L`P*S*8U>31}QZi+M|_scbUUv@~?~ zNaCn&Y;M-pXc88%jF-`nF^L;t=x39u#PQEq$|!lYZTI*pR25p&Xr8_~BZYde*SUAq z#Va|Dk=RC_vsNuh?|j9C(*kFmyeIw7`G|-lz503j zIui6sJV1>^A6867q$h!aTCURCQ&|+_Fn93lYDWo8&Irp78Yg!I)G%xPOXOZ!i#n{Y zqE_SxdS8m|wF5aXR2hx9!_NO>x|_2|F)!UiyJY8|&}RR8&1-beva{|9c^m zD`ko_B>ssV=N#q{AKuG5b5>Wk+x|%tC$95-c3h~Q*k=|+A;?RDzex|Lg`sA|k2qQ$ zCB!4t6bL=~M&LgMhQPZ4bun}qUvQ*?SS_)Aka^9&TQs`W=BD)$CYMz^sZ2Yi?v6I!+Mddb}QeI*Of4odKdD)>gt0phK=#or_^h5V?rtJ&TV)RdE+ z7KE|cz5sS%`NrNY87DAwEG5;Q8&@2Q(%90>oNSahuDW&IkQSlc99%=JTfwuc*;J-- z&AzGgduYduu7@nRvyEI65!lr8B&Phpf;nXbKEXbYPw9Q^JJ5A?>XG<&(>WXz~*16mS{PtsFxzbK&V) zdPVtQZv^xFHS|d4_eQ_BuOJKW2hM~(LXy~s_TbL+Pmi+^@S*$8QUOLZ`5>{&!3r3R zO7WRr@$)*36~>inK&`{J2(I4q*l=YIt7;omCjlPAUlF*WnifGecAJB=#2-c;sZ8DT z=6?mWI6H<@8}5`_fu<6|rvaZj@f+i+=L?w-5fT4b;0>4875+h-E@Cje zOE<6Ih2!lBZ~{l*EA-He~PidQhX7wOk<)n z*LE`H-yJR0qeJC)>kNsPs!^I)R(^yq$%U<&GKIgr@h5`0wpSl*pGkfL6prmSv>`+^ zxlF_H=J>epC1OPv2nH!;E-86lhD;=diHjZXUq0R$bY?PaEtNIk+v`%({YrgVv_hA- z6E$ruE}cP6k85y|ZdjQ%rt(!h+DTlL@oLCZO4Ziu#u1Jbm>?mP2>7UyRmW+ zp!cCL^Rnfq#~kKSB}63Fs8fb`qElIF->%gGXA5@Hae7;G*=~+2(n%(4BpBjGgT5p% zl^&R3R30^5e1W%Esd!{=c3NJUn`vmZxR$H!lo2!}K`)BFUuJ-#s$`-Qg?qd^E;PrZ z8jqz-!qze2G#?6eh;r_UqX(6@g3hGpO!6SS)jNZc-ki9-QefGNhB46Nt?D#rHjl-s zf8Wj81U4G#<`xnrDy2-YSB2L}fQN56yFPC$+7*52XD@KFyF#kxZ;m#WKub0G7Q^&} zoS(&Gl-O4>TYTVrlTeQ;Z|MO7$7cOX?L=tkDmfqn>0&*pu6Y-FFvI0EwbXn`?3R(P z{>+IeEi02mULI{c=XA9-nampV>r7+eW*hvA?);wgb1SnsJ60hzzoyTt${5I;e@#rq;rxDW!g1Q8fBKI zrbC32N2wutzY@|aRVZoi-Q=oYdUw*ZxXM77%Iw6nuXV{VipLBj#ya7aSvi9|Nd22k zS@xG2T9Ju!Hz8+J1`K!I^VvkM;-g%!gJzifOja(#PtW5;E?DN4Dl)VSP&Z8=<%WV~ zM3}ZZ+;a2DwLyC12b`@;ObhK z_Bah~Dobc+4j5(qb{Z#Usj6f+^FtXd$y~Vl3AXQSh^*_AnjfWRx+~4uc58BDTzT!K zvM|c+l$|wxI5IaR#^1tTt_aBgoQL=jdy~b&Z*|L>WX?k7SYSP_(r|yHp`ljf;mOk^ zk)+n@DiLwa)BVf7I;cgiT%|uNay}Fz@j`4D2=iA$f4zimkLv1m7xVNQU)cyvM9OJN&Y~apjuPb#vT` ztyaolNRTd9l}-kr78qxf|8!N?4wO~yA%MzGi)Wu(Mi`9yy#P0VbreK%aJ)^Bc^?{pFvYe=igEyjGFPoSt+>K+$OW{N7hYwj@)J4?nVqT%aflTtiU(k8~Eg z5#;sj5$x7HdSs@pd)4br9dQytkps_a5dWF^fZnMoxFe{I+laS_bM_CGMQzY5&+yQ~ zz&2u*sbgEM7NOOOY1_Qj_ZF?+T*((0@Y@DY)Wq5nkQ&{5x9(OKUfFspZBJW55JxE8 zmEzBYA?NlL!RqC;RGAD(=76GQukEKY&bEjwaOD#&T{wC~vm|U~Q*DJk8%CJlmnTbr zvR$qLh9D>A3JV}v2&*o3-q2w|sH4-vke3oNTpi>gr=4T|IX7Wh@km1n-0p+KRZ+=a z*+$h(r6Lj3Ys<9UR|rfV(Nxx)=`mI&3W=-M#*74hfAp#Hy-)z+qbT_|H+Iq`coa{j zjZ!7kI>DA)r?RK5gehup9IFLLwsGq7H1493kyjvZ;$8k`7Lp)Gu z8)icptZQeKBQN7;Y~ZZwrZv)e$2q-rVrvys##)P^sS^@6a$h|522fuBN+4b)(B%Kn zT&wR!!L261#Cw5eEQ#_rv+!K0ZfSov0nuqLdjmWn@Z%^dFvO{3;Z{zo+$JR=87U-y zgfH)`+8^)(t_50Vj037sa%u`H{6YDXx4a`8W3KiKWu zBhb`hn3Qb|*HEKWY;5w8gR&Y^J&WeVC-mDOVquzOU51h6Uvyjed3R(;bTbD^1ts}D zsxJ<3WCo=hBf$(mu2^E}s_TP}Iwu3-0?{cGQn!QnNv;>PoB1eGCVo`cHT21yvsM+)wY1NT zm;ZV0CXutOxW;UDx2F}o8G4pD5uBWf!1V}Q;^aD2nPgq~<9l1r<{b(^JRp zK1(e@7=U0TVu0A*o6}D+1O)kdea=qy8`hR4*tC+c{YJeV6uo&_sr=YkHP2UcJvY++ zl~?b_wFeyN=%lU4yfu@V2|qL3j@+5MAD%jSu2`i5M`X0-7FbKm9vfl!@-;AxE*dqf zsFDa|td;#Gfl*5*#pe5A1?^PW0n6jRB{$01AQp@}n%kmynrDsu8Oo|6gPBBpgZ0qj zQV3U@@y26)2Y~D=spj>C>vc3c&NUB@$RBRUf5cQu^(>v=ey4xV=+z4v%su>YM#>Za z)HUhQ=(B?;#~jxB{3YaAy(TdjdieleuBA7+f~*H`T;ZNG&Wh+6IwogQG8n5p^v-ZQ z^N?rE{XS`1JQO+n9KG>osrmkcT6R72?!G>#CcA{9%xHwp=_GB|NqL?zltO!NUfWJz z?mU<9yGN?sWi~q?AhD$&+%_KJ!;k{HO@BP#fo*c3&&a8LPpB}6c_>F@brWWh59hbR zMKb|kY<2eE!?82teJNSKvy(Juz3*$}lQ#YJ2(X@|eE4MXeu zX(XPoB}X#(o#p(B9=hX{Tku@efFyMOcA2F4fmukMgpt&FXS<@FcYd9jmer*rX!^99 zqf$_ctGV{4qhc`-nQj8l#Ww&ffFW^O)gZX|XqTU2Z^T10#+8wSjcW5NZv_K!L6uK` zw=4b`%a|UsP~4~dhp7JiGBUG5-N1Ki6M5p z#l=l!oZ?0A0h3}P>&Os3)Jt7?zDds0@_Ezr)f zCCawXBanqP*r(Y7YY>aAa!OM`iSQaJ~(m^f@dZo2k3#th{{JMure<+`F z|3I4cx0cTV){I7Y$BdGP!{;r2h@$h8MG|$k-&VG~NRN+{b-|O=n1%%@wmiv}!_;>Q zo?{3u4F(!EG}Dk7W}(zVRT67#okjUUMV0rQsR({iAS%3>FD{Jp-ygqb*OpC6^Q+O6 zs=;-t2*_aSXysRthALP9U+>7#U$EC*R8vhX*{3n(deh;z;gVP!CyVQ{B#4|;(p6H7 zZ-p4$)ZyMNd|-@Pu5qk+Ch2-j7i7I&bJ6||96|_`tC-LcU4>Eas0u)AeFN-Ex-Hae zyBo`fUyJslapFCt7Y+?iQd6$EEzbLE4J!EDHj7w2WFB`RfQt?zcGihzTDokDz zVDViokqh++1|g#Qzwns4qfBL|Ifu$M)|<+BD~zXUMQNK*8jISCY0}9@P_%5s zqA9i$q*ceWXo|wZ$5gG%Xev%1!?NHatf2|o#*+FP#~{`y!uTmijp=#{=a`kd@#?Iy z`d>mklh&*#)=LU@>S1Q#e^SF1&M)vd zmL9tGdKo+SB~*a_Y4Hf=ENt+KRk;#*?e0a)WWX(T$kN*cn9R#Ew}cw=(Nh#()9*R&uIRZa9|RxTVpYGw7Ai&HTOiXJWid) z;r+EFl&LYrpY+y^6;osc{3=q;A9AmgHzJ*(7TZmOKb+Fg;}rL;@YhQw6!%Yn|8#f+ zjugZGgaiZesRwg3&tz)B2;0~Q1G*Bg($h|*_T-evrX|Gi)L#%1;^58W`vo@cFsQ+G z#03Q=MLjLciC=P)5#LA&x!H@Q)7>MELtc( zJP%Kp{2HDH`5cn7wQT31+ttP~lI=ZxLs>trtW)FZ?H~6sK7oCY?P}(n$)vRo7b;v> zwuc1NzbSr+Iw9r!EXWX5e$G?~Lhhf7`jFc~+X+Ga;*DZkg&6JSplgiB2b;@NK*L;^ z%AkJ#p#2D)kzU_BCq(7UQy6t`m3KtNsLx6nHmNYF#!#TCP~0-3QhFvncBumcX+Ud*Vp(h!gsVg3GewqXVIF>3Mo1srj!{6Og8 zI!xVsn6W4+!(we@Xz~DOU+HB=yjX0d+0zv6n#+J81tpowu1Z$C3sPaWTNG(c5EOhZ zKNUt<%hp)%%mxmwlIq%?Fjd+x!lsDtBs?)5lCM=-VQLb-PKo;HWGOcJW3sHPKG#+o zg+J|lD_yC^L<#|PeWw4MbMitNQyvKkL8+Z89=G++s_#dC7oPdohMv;ZP7*@bO!L4u zz^D6FIJlTfHYliHet37kmqJ}|))MG9yL9Pyb!PUGsTo1v3-v5spe7n-m5xIAig$xn z!SrLGHUyaohQ*dj*TMQX07-UcV@_*MQBhLWLL`OyX=m_fZI2viAKrJ*0809bR5fzn z%yw!%ww_OVZCOn!o9I(5m2Uvt_UgQbf(cNnyyd3nx$|j3Y$!br|l7JtTADC>TPgk;Tf2yOhVkjAh7=1$pb<67IzyJkG>82JlK-R1_3( z&+)z~HHvpT?7{8VK5c}%DKr9FoI$Ty!f!T~j%PIh=v5`?ajm zb|Pc?pcd1SmSe$hT!qAm!L2F5O(?sk-@46DGv^HAhc5OT=H0E|83IK^Gkf5 zVCktYBr)99jNE_XD5if=)KZ@2k@OO0);cS`0yRM5X|tl+d{4&9fuI1ZV0NAKtnHUx zeudA&GfemPDYm8$Q7cF<^FV3vr7X-KGfJ-c4h!BXbuH+IV~mKd(f4P8BBI#Zj3hT? zGDi%g$|+X5F0 znSB4bB+yIsKwtS-c2_JP;Q&yc;neV3`d62dAAOFWHmb~u!gQu7XH2w-V9Bu)7El0c zAh6vwke3)M!x#tY-7x$=n-=w>!&+6Bnx!!c>ul8-XlaHSP}hUVqT_)`pS-Uq^ph-> zO0bWFwNbPuVRd->EF;}q_os}8B5>K9gviPyWS@`0jc0waI+@##nv$;NKg^7WhmazM zM(X$xqN1zHwn6~vgYY;t9EzJB5LPlQgbgscYPc<(N;?%DO=*@_h!KKH{?DZYv!yTF z^`bds7(G${^p23UV`(JZGzfHCP?C7nZOHKlpKAev15(PWyVgKPI{{vQFDoC|xG*gp zh{L_Kqxlh;tF0&u-JCSN{D}c}o+LTRSjxvycWq`&B(VV_B3SQ9*H?rB98&)_FoYAlAUJ2}78yzv?yFgk2>d0DkD(BOnSc68X#_R3jNM=PD4omXdc zXnB_j@UeMKK(4l`AdhC5-8cYgiZHh@q;Xyg^E&iXtXP!p`oDvmolNl`v1cA7Mpxb+ zo$e0N9nSqLJ0;>{oWwq=Z)M>(=4VWr9M%bm5$1q7bOQ*z9!1&^86}W0ufHP{K{{c> zdd7Bms$Or)Qc(y>(?f`TQbmzxa}Hzk0$L%7yi(h0K~~0>{FQ z8c&lVKyg}S3eZKLs}?+EaOJL^lQv5&^L+c6H!UWVPQ;Oky`*XYQ&MTJefss|%{#1f zo#LJ_5%yk{>v+-Vi9==MdbAk^D=WJiu0nqs^U_NCg39VZWBjC~mZ%OE`af#HlUrA5 zk~wLMpJmjzLjLr<&!ph9X^LGjleDxNi!NBT{t2UlS{cejvKH7E z#Q&IO_C}fI-|&CI-+j{LU`momCszU18;91gamE(iV$<(Rq=?wKw}*5f?8wmyla(-B z+`q()VKQ8ekgILf&>EzMQYdmBd&UlIu&>YOp|d^kQAfH4M3gy9yUvx!7ZVrN4!n!o zt?nP@mNx)`EvlF;9>0LXi1HhtjmG##@<&w+xixLm5g`_%r+uY2KyBluM%cDwgxNri zVP68Z`L!L!cTfU7KZ3R?`n$8&Zq2x=`o{nuZMo|g_b#cB6k~p)hOA3|%M5Ni{<-g3 ztk+EHHtAf&*NT>~=8gRBHJjA9KyOFGnO+e}K9aTcojAXqEuc)dMlMLywea(LWNRJUB zkA;4h!w)C01|N(2JO!wjNE{q@%bfesYZEiWRb>p{_0j*rb&vey3|Q==8BLJqursxw zCsPZ|h&WeN>{mtj4aIy|!OS)jW=Vd(XfM)6e~=FYP#*bxi3y1j5_-Oakkw_Hj#JjW ztVC~_pLnK9_!XQiEI67@$9(>71T(9P3A}WA_ndjeJwsjW+_{nne=5HInUTFcq2RW! zMaaOY4_m33&6>oswU%;K0a_(o(@&8*Emw1V52{j*haCGPV_W!fw z|3l^fBkK(i#iQDKOZNs4IWvBR^ze#%0|a0H^@|h#2!Mq6>sITkJy@8EE0;Z@=n#$>>PS^!XN{`ctiiV-0uJKw?Y;K zyzV}bb-Gn%(eI}{iy?bU`}jpgya7jazT`?N5pLeL|SPs##M*=av*@ars zOACi?nDWF{Jkh7#qbYBIYww7NNkYhlov6770RnO&J!^&sA@LcicCF z&*JxrND!~EYu%N~ zx`i4fF|osCeJJ~oO?_FqwmR9Ll*LgoI&kq{DB)<^O!Z^GngWbwF;a|C@gfrkn}Qyx zzFl-_BK7!EL$xzhV!&zRY4iFaiv;e(Mqw$tP<2Y`kZ04d*pWbeflXQ&#l7L)9%s)! zC1P~JsuM-Qh3qxdA+T$a*r|5iDGhLm;O3_Djgxl9{P8oOjR_)Mu_u%1R~$cl4{dSf z?v(rR-jBH!EV>OyWYXSziD~c^t$H_kOV+)fyT8PD8HKhm)G>=c2tmS$#6?MPj%Pry4`)x?Q_!L zd%B{Hr`B)qdz!U3DJO}r=P(pMN{NHcmRJVQ1N=OyI2h3WPAT;J_N}_!gWzTffK(zqm`4$^J!e#MOVJTlgb0!+l({l6J~Be(%CD zciU{8w$EeptG{0JX6?;{MVq@K8gO4DM z0}qqXQpbGDww#M3a-=MZ?}W1YiIMwt1b=uO@@&MY7|mkrwpiI$eJ@w<-8p_a{%5sOV8@4J4cxvCycO~0iuJfPBwJK_2n%3wbTo$L$PTK4?L-xLj4yD0h&OT zBstb}s2E^R5_|@h-ioZA9-e?#Gxx$-Gx!z6F<_y}Vq%W6DiPv*(!x4gqd9NIc&Fj= z1bT($&2yhXT#q=M3s3jX*0WyfEB&K2|5cM*J#+5-x=jh2pvwdOIR_u7rG~NLS#F4< z!_0!A>PEcFB8xY@@8@Cu!g%+U#`LK1p_DnoElK)*R&$LsqFI+8BQvtC`n`x1AP;O% z8Q@4-Bu1_)0~!lqXP5OCJn!MWF6Wkwm{V-YZ5Q+Z;wt(9e84v%i|@hR(v329XceIe z@@DGX*-+~J>)#dV=vh}XkDk_K-i}WMe^Fb{Bp*}mfmHG%yJ~67s#i<4US&Kcj^~i( zmzu6H^}qAydb} z)}3bQBjXxMVW+TkKl5~evH~)wBJxG%MdSC5Q8nmTgyxmTd54L4L}NnyBxg)t^rg?s zR_6!o$S83sxBdAmWr8Fv^#5@@9f!@bUSx-SjIMFDR2;%;Za1H7*$40fD^-?_)epg4?6UsHRmOs*bhUFLG1k7m?KFos$SUFYEL!+ZBL=_ zHEbdv<(ow!=J2$L!f`T7_a@v3k(%K$hxE+(PO72rw7uT7M@*R3!gU2_)<-RmpjzDC z^f*7B0X$RvFT@-yY4;-33`R2+`2M~YkkQ-zK_IthpWYNQlFEA|@_i@1f684mIEq0| zy3x4pJAn-9*Kik(iA@ZG@~uUN0f#tU8U?LkRgwuUhn9p4G?r1kUFDiWdP~kwpKrgg9%Qv&(K)JwQ}C=>ujv z{)_TJzOc_io*;#l)pLppX>h>S%CYcJ{6!;OHb$264EQDsMXxbuw^|KsgZ;VS;e|fx6 zO~O(Vp!6WAYAHerky(4~Q)5U4atRGyg5U>Q$vJ$sA?o1Kf<`}jfA;l~cJMsrKxA&^ zf^+7M){2wAiBsl*`M!445(&(>Di(afKVBFDdh>Q-K+0GYoQO4W*Sg~}YkoBlQ)(|G z7XmOi+jFsp0<5wGAxus*%BxArt=BA>VbizXe0DwuMI2%>PpvgCSJjSO>9k*^?&?vZ zBxNa~=?AYwYK=M-&ztl$6lj9np*A)e)fVR`LbqQ9(O3)d{6J|->_~mh)La3mMuhIH zY+6>TlnRNq`boy5CttcsVM`(namyo6r!4ojncs%Rk?-n{sJRnG&L74AY{s3;#7BqU zTg&dhAPdZ~F=W651x{2_89wTY<+I{Jsof1eZ)s!b^J6ivc&=lR)e24yt6U7U;HR<_ zqopGQhgP2$Y#UOI{6G__`{G4ad9e`li9eH9P@UX|bm|7ywxCiQXU}Obw$kpX(Q9_o zcFp_OBo(g+Z(?u*HgVn#Oph+;O!tXb7Iz(7aAYA1s)}Po$s{+l+Ceq&k%kD>is62i zG3tG{8)fGyZd)&q?K*YfurV|U@dI!5?Uaz!S*l9pP^d}Z0(%P)&82Zf_^sG&_lg@4 zfBVMl?Al9}dz^9T(ipxBlI^u`D>f_HvDr>;E53A7|vh3MrbvO~ivOorK03`0#x-99Yjl zn${=|wybI|)Z%t$Bq*}QMGv)3tV^W0WSPsP>WdO}hmG%7LzQHsUgp4pA46rx^}IJO zwC-P1r?F*vk>clQgfGodNyIUZgqL;^V`(wMjt%HLuONC~yN1r%G4w{TscM+`GoY`I z{`QbLPj8Q;6MMGTSjIDBjDW1CR$}`Gv`7-GYByU@RLXwd->4J`9iK!UbO|>Xem(I` zH8Lk#vaY6lg6L;|lxwGs-ZS;OL0AzDS#WF6o7Kyk&W;ypq>+tswUS02!)m}CS5Q7i zl12iN+5j%)$adHT^~Lrqsn6j?FKmom!CJ@zO@*}Y2hCGa5jGPA8b4Nj>vYSmGmA;& z5JF;Q@m5>iKOe0VNKj<5*C95&1ao|Na2B``L2vBC$Fik5HYZYCWBu>f^(y-p?ki#`Ij;_n9x3E@|y_) zDQoH1%_QRGm5ZH_Z@C}7p%6^i<%Oz=02ylo8+Ya{bs(*U;#O3(sZE}AIcsp4TsC!n z$fI#&4Y!TY!%jg{O`XeyO|U`PBFXv;Z|qeBl_1oEUy*uIoMbjNI;swaO(fzcM7OyU zhrie~@^P4zSExZR<)3db|IhKQ7{Rnx^EA=Akek6VeqKkYGxIfUrm`<1={RUKnKb&& zI`N=y`J=FPz`nctdrZN3!$Vl!5Q zFi)U6ih|=8ME?}TUtSi~7Onn$76TQ-ce(!JCi!Eybqio=f!9tO~C~jFNX{f2Cf+a*&Hzfw^%ri0>YQHfA(3^7gS>+5)eGv+gG|k zk=g1M*R44+{PGy3`jv2sA-C9tp(A))d76NWr2N}1Pp_DV?7oIaGFqpN z>k^(Hn!4nAW+T_p!L-O)I6B?8_0PTed6r0R#$0|8j~udX0!+Hf(;aVeNxMC@=&EFbX3accYh zX-j@~$MKkiL}981N}TB3xUf`~2WTsB7N))(Hkt85W0qei;(feR>4t46Mim39iY=)t zl*x*Q&u)Z5lO|%|hE-3S z%BZPxS}t!$|1UMg`rPrq*{fF~)IR-z;et_SPE-a>ed93wT~{sVC;G_UVppg_v}6#A z!T=P@pQBOGM+6Opk6jfS94K>HfH;w5sddFJ^^I2U4{TWzw;BJm#gG2O2=1RL4R@8K za*M60FH5_nr1BZBYFlzii%>DyCen42N_*TJ)0=oyH+|l_)=mp-h9p;CsKslXGT7}T zzb1wr^4sKI$mw-$gt2QXZwp~$KBR_XZ?;x-1+)ev`Zx`Tf1(oJDs{?>V2Xj&eQU%U z?wr0R%ZL}Rqc1bai!S- zFOs}-&jK0n^ub^v7$yUAp)C7nUYc?=Xw@|0=`A~R8sGvIRp~4yiOgDUZj2J3oF&L` z>x+@&MUyoe6Wcxo=?BaZIR@MKb_|LbvlFP)75o^Khd_6SQ4K;2GzF1gzmb?RJ$;

    Hkc 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 literal 0 HcmV?d00001 diff --git a/3.x/images/qqgroup_qr.jpg b/3.x/images/qqgroup_qr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f94beae41fd0855d044d9004cef946f8ad93fa65 GIT binary patch literal 57780 zcmcG#c|26_`#*lHgJhQwQxOWuzGkS9Bxxb*RFo|y$x@A(P}%pQC_`D2G-X#Z*_9;w zZf1;`=bsf$KhXjb7vbMDb zxVQk|B=iC}WT3$+!tXi&*xLh#000mG__!nh9;n6zy#OvbfbX9=0G#5I|8M;qm)gJ2 z;Rb+MKY;h&=eR=Oe+$&|->d)q4NC(681x_S5gi@vbgqBZxwv_N{Qn%+K5`_V>woT= z&;6ekxjgfE{#z#%^8foBsIk9=vjiBO^+nxAh4`Xw?$tef1TZ>gYtQ?)H&FSfe&C;~ z*nmRPXev;_J9l63=^}Ux!}$V;3viLRJbAeG1Ki?VJmOrORsat5nvd(B^3P?^2h>eo zK7N>hpwJHJglaK>n~R5so0o@=@9%B6BL9lPE6yjePur4T((wvxf3TEJRC(B7Z_qcvt?j>ZL1X(bv7pa?N%nupB@W5O z&CAQf3;Qb<7kBty!Nqy`_G$A=SUSS41WWGMi4u@HmR|6oNl;1m998=2tzMyB%6jAj zw7;VLBia8u!J_|vN%mjC{ztBH;5fkjPvPO_=HcVv;o;-wg9^U@|KB1YB=AoW`galj zr-=M5qW>)%s1Yux4PIVe81yH$LvV-K|L4M)gqG+o&KMxf!v!rS9&rExu)e%ZPy_xi zym>f3|1Y-P`=7SYzU>gwiG0naR0MGg&ozFPop43>YM+<#Q(-Y*J{P&s>)R#tu#!i=IGr_WtWEKquiyND9t1tYe{? zpafn0caR?Q-&o?M{Jj3+zvl?-B}c(sZ`ulU9<%AYFK;Eq0S;R}FW620+W`w@vZYFP zS0*EQOAZK>nofD8Q79UmAnoz!qFp2()PZwCR7<$$L8#?__f0qRi!9VB?7w8VbBhB6 z6Al5_{ zi1;D4&CbHsCdq_EM72!f2_iKG>~D9?9!^t1xO{CP|cM!fh1nYW)}%8+lIIPW5bQ)&$w;4qah`pcu?BE#!tHcAYn0y@~f>ZX3` zyIJ~0aGaLgil{=iynuVsX5;WTmeH11r0AP+ZHpgHCN0$~8a^&NxYt|E^3T2DjetAh zf!KWasnKth;}fo5m2d46PDzzL^v&k1&EDbF0}Krg@O1=j$^kySght_%O1|hK|DCI` z=!}o;_gB9+T?k1j0WLZ$9o1!H_i_NjSGN9|;ZijjApuh8UbK}5On7lm*@E1YH*J9d zL7$4Ae1COc$MjZY+15ial`2Y)1wCHcPUH4OIJo{?#~-~SIk|GOrSoQDz0Xx!GZBOw zz;56Fsk%o~{oDa{xXRm`>aACC`W|?74$xUY>6iQZ&_2TH-IW%TB3~ z`ld3@gGX%l{WEumY?$IX^V2J>IH{Ss^g>mKUiMlgMR(F?Mbcx1DQ!x!X(J|i>QnVQ zT9AVCiu-E&*Sk939jJ`=zLaM>ea%VZkIu2oq5BA>b%!`YH7@S0%=un3XUe^C=c{EJ zGTW`Rj1pc{;@ufVfghF&?ko<_p*5y%JFt8^(yN25QTegf)~vI5NPl;swRpCChOKn0 zS2RE72}=XpWQG=`ARcjmO7mPYO3`=IWEWnfwDj9ht*^wzlz`|zt=!hT#UfM)Tm(}7 znKH&zw8P<%Zt9-x7baqAJll!Xo!x^yO*qjh2fa-9u6(!7K2zP!ReASi4b0Wnwdb?? z%ps-_&1T7jsDS3pJ1~sCv8@!5=peIyb>Y%3;&q0Dd3f%FRa%w7vcQjJL+5pAY6%6` zbPx3iBT`XE8;X~1_A?N#3d9P%4;FgYXXs;0QLHAS!}~Tgv83#j^+1U+yM+ao1YJI2 zpKOMoa@>Opva%WudlG;RajchKyHU`U^wAV)?_&->dCp`_PfZ$5oJv1v)b-vHS9X=~ z95Hf_?!|hE=3|^go6;Oo(4ueWTvalUeyywfn7S#J^*&Epd8_-r$9s_}Nh z%$f0)5E!nSvOHwdGm<23q38##gKOZ!X)G*4^oz46AMNPx#9)J05tRnn*aKyqi8sFU zR5v7?6y|E`?8Y1d!>3c19H&3s31T9qIe?u1kuOaO<<*+5zTQro)(SuE!picO&%WDgA9~pEm7hm?uh-AvbuA9STMIhS;AGJjgxnvZ zgxS$M#-BD17wgH_G&ZA0^@CSpWG$ ztNts&2S$^xnP2h>VN4ci*B&ifMbHOmGE15PjI(I#TBdeO58tEn0Q+%#cMMdfJ}$vL zdYLvQt_zKDLd?1TcU0=ccxQ#x{#jWY_h{Xz`)2**srMOZIqLf6@ceLz<-;Ps5`L87 z;zYK__~vY>+3XY{7dyJvN~o41$eSy6Ous<2uleZ&-C}FZ&yz>ho-es3e#({6&uPr$6E)ouwj<+dFPhILv+4tao(_YdEpF(2cd; z*6M)AxIXP)XPI`mY7P$ewMc2(MDA$F(0TLbP)tTE6pLJ~BP4#DAGqa(o(#xommGiEIM6*CIZ|{)`cYnDC!7RqB z+ilLO{l@yNq+3R2;>cVC_2N}5IqMDw$frN!0I$?|ertisKCMVNxYh<2&u-6C84O*o z?yu^27%I<5Y?3q^=1LHpq-P1~rqsR0lHS3^8?Yn?*$8d~ADDabr&3+tN}hK=epw^S z+3l&cORGphoUp}@;G7u(DUrCU$2`LU-d}$L-Dx>s5J4&>ayK4EU!}!H`GA3B`{S)n zbh&Gb&Jr%I6#{v7aURmOCby2|t#fT4n3CsP8z=|Jw`j>i454vB5UXAgV~kVzD3VHJy6e~3T!K%nhd)O{oTTq?zWauWB2AU`$g zZWkCL8jCMX@qO{?i9+C|SetXQmlTh43z#LaFEk#+ejNwP*d6M4mdOF^1>zpWOcc1n zZu`UmSO@gDn2+ah@*Kdo8+9(`WG^~$dVIXT_mmYszSK?$r=fdADgEiDnTYw5aqRzL zoIe|~1*h2ss2tih3Rbc;Irme8~0&ryHpbZn+`B5BT{j8oAbN6w! z9=4ec!a0By&oK_r^Z-GzfPW(}55Q|2Si*|XrvFkN!U5vn>7E5A8CHMBirQ1lBR1P= zoNwCfizpe~P%AwDE6d}naze|88DW+>Lzc<`63mRJSy~LA=8xqyA1;5VB_`TB`6iYK zf67)m6rog&)xc5DiEf#3fH<5Tie;DpunRDIy7hZnh&v|SPxf^k&h}njZhQ8u;G9eR zOy)#hK;=6nayBy)D})_U>EHk-4uq`(j#g4!oc@1fs2?cs5R#dbJj{yK!?6_A*RK@CVqVOhFEy9NxmjekTNQfWm0PW8^4`eWryx%Szsb+ji8% zI(zbRfDBVI2Vlr7Vb{}~SCbi<*smi@Xq5g7TNaQVd8X9b76)N}a|7DD{EwcA#XC0* z4+~xz%=J}1d`9Ppo2fT`!WLjmi5?2ESu0wur&T^R zAy2uMx_?fw1M+^F8Gl7WyDKN^PM8Wk;4XHHOK5Q#v2uI(vLp@dJotVy$5l zd=$bv$<&38mJ945H{Zh?pjTsTT35R1GEQgnz{!s4NLgyvv}kOj2Dsw{m`c8)MYoC5 z9Qr-p<8b)6yad;^S=lxKYv`)Qltj?q|E#vtyb1yBp{rxf5kUv8V1vGYXxiU7b44n% z`s4z#9wW!9!(Ky4%zt!vq=$%eGQ3+{s`>dvl>i)_`Q1q`8RPkOhHC|RHsCV$>ikhc zZwb_$KxBJrGh)wNBNs>^!)3q(+j0A!8{+|^%=g~GQZgb)|8S!}raxhHO$t#l!kL`? z5YG&tl-u4empm;L6y!b8wL45e5Re>*LPAEO8r2Ht!i-~u&y#8w`=@tk?T+}2D&MfK zv=!#Mu{d(4LN8-yKKD1%=jlfjIu@DC_+ z;P;z4QdL>iuM&`ctFqfqx$o42R{p+S7S=Xqq+ueA4r$Ib?4KfNi9Uw*7y2RukL zd@A`Z3!u!a@r;J@<^-B73*72a)_IwY@03yhJ7)Qv0mLWM5X;*r%sd*sXhjgFnC$ zxVl4oPqf1tJ^_J3#URDZP0%n!elXy2PRjex0CoH!+bq7-{Hs6Oh*4XTOURQ<7w`oc zAEO8inIDMg`oZq_+3Q_zF!%eU^z*%k8hm)ymOS~WhV&`$Amez%D3goI^v90H`{^%4 zR(xHeh+A})uNk82fY5x=Yy>G6S&`k293`}x8#jPOg>A*-3tdVg{_B5{OmdO{l2hZOk*;`L-hwcPSU+f7iIQu<1r4>f%-6O-5#$Z*gNVdKQRc z==+(NSJU=-vU1((GRBCDVZX@@ooSunhgSK2o(Uc!;8sAj;UzojI6awW7_;H<$N`i7 zXDo8E>i0ZQ1x^bW2T&<7WW`pcvJ@=fUGTAA z>_zP65(3O|3|GPYyIOkcvoFu~2S`NZA^c+OE8eqZtg^QdB`CUHyQofcW(!$DKn6#X zoP&UWF%4Obqe50^OYf*WyLqgG{p2&|AOt+1oj9}BxR0d?A(JV{JB$LaK{k`vjH3%e zP4^0Vd=7>S6J~P3^Xw)A#P&Y*T8Mp7%NOMg{69bd>^~5|`Cky=CIkT>Ap1WMAhL|% zi)k4~R@ZzYmwRgMwjn=dB78#pz3xed^~=Y5W!^Nu%E!~yek3Gs5VT_`vd83B7NH># zM9>kjZ#R0UFII`tOMk_FV;o)#T6tO7teRpAgV-aMm0=SZI@ZCN$gjx7zu3`>y2fr# zbYQ9FG;V%`rspd-H9r)91f92yB&}(*$dLA5O6&;d+1ka#h)rU(OiMt?*UM^@q5B9D{8o3PU83w>|*4=gtz1YT$sUq3n1^>A-Rw2fyS zK7rtc9A9h0RY5$|Ct|D|@u40|VywsRBf)T2t?udHc6YpzR7RC7V;V9-+D$?%6f+sS z*sa;{3WL(=?qjIkHq*Chn$=G}z8sZ5E;_3Gq)YO*(dDTi6Jf8$h!NIXL?BU^{mq0P zQxFl;VtAJlFjVQGoYmhV)V?<~`N@N#kQbz+^MpX+SPPQ%*i4s<6Z3W5S^P0{{OeMo zU1{M1>-`UlgoXWQW`nd7KnM%7g{Tnaf;^r(?cBO`xIq#TwJdK_6JwQikdmkV^yNoC z<$yXt-aUY{^^v>3@9XMwfYA(5@St@;Aj9!bqp~?)MV(b&rrpO1nM(e?;&fN*9OH{O zfBoQ20p>%ZwkxSh_A6!k#CRR4e#vo98=W6^JyK_wx%E)u&*;`CUbpa&PeCg;1|biC zNIiv&F&6=m(>R5{Y@&?wn0a={Ynwe?UcVYjWwQeUYj;+CShQTv7o8o}->!$qhzGOu zeCYc_zy)Z()1S}?i{;dCOK_H930YgiIDF7;mSO9;ADIrmN^3u@d=7Mu{w^!gxPPl8 z6%#;5v=IR`^NL3XuU#pS-|0bmG;;iP!;L;zb(FhFm0i+|my&Eg zAG9I9VZR!KcR0Wm^%a)#U3R!kwE8v-jGWFD1rN;;sIjf%HdOnPmYG<`n(PxVeC}lv z)&fVbG2E5;E*?)heCsX^$%7#xD;%P+*Bm4x+^nhBD_{H50F zD=eubPalNS%Gw||ZheJ!E~kj_X!(S;yF<9%xzpx7duASAdS}=03^}J2N>Rl5&?MqE53R^`vN;??#`cmZYKr zJ?Z1e2g*@XYNL*md&9m(j{vxH!N^gcSToDu>7GY-u?dG?o>UoJfA}flXVwM3{Hcq! zGf{cPgyhudM&AC$1I%+&Y*gsI_&`nlrBg%gE?0!SPtK;t=%Dz*g@e;aP1RP6x zx??Uqd#K^W)X@+1$?LksuA}8i&Gy!pMz2ZQsvnl>h%OYKHQqg2N;6z^p;G7)y(p|d zo_isO5VwH?)ZHyh{8jo)?b3tUDGN$X+@0pmorf?~S;}6TCoe0189^%A9w1htT95A6 zg84a78*5Ni_peleN zoO_*=0rP>64{nXW+25ij_4 z8i4LW=s>O1Uvhy1CKDgNWYI=!G@H$=`^0QbpB}kpOyRveJWBikU%L1XGuXJ322Tj> z78yPkDe7paMybxR&9aI(7dX@T8k+f}uzb;;5y++upZ%7BZ;QZK?~Hks*MV3YBV0D; zLThD{YMUJd(Hb~M4-clkpF+W>lS%3ZEt?OnJ$)Bx2roxVGOl2oj+wbIbkSbON3Mtm zRV@F}b%uIxaA=60R^w8UN3K_LJ1l!RrFs*)xJENzP_&wQV9c`vi(dUfXd6F;@$u$1 zN?bjo;3@Y_HJ&Xeun#0MzUU}pnjJ-RuuQeNIDB!=vb_# zDpKeu@Td>9g5v5Rre8FtZTEdFHfn7i5jB>YW(b`gBOF@{_K9wDJYU$74_#qEx@ZX?G z9c-fpe8DL&<)*m7`U!~t+*QT_V#<2h#z^tMSQ6_` zNG0+ie6>I;%$|sEo0ib*e7L=Ut7uZF)Oun1Lt#x%$8euaK^q2(ZE3~+wTt>%=b_k- z0fL!q0sln!M^N_t|J>)cClteq4##vg^3gm~DGnlk#-5wJiw&1vD*IaI@hwqL^_E1+ zuS;QjQ!JGV@L!-l@QJeU4i52majd_{c*cJdJK9AbVU?N%&?t~$eZV|VlUrRoHMr5G z?v@+2OIYQRjcMA}*+*RO`7IS9gDv1y2;A)QT2QPh3QS~}Fs%p7 z0;wYw+s}t;4K!*E+UF4}eiui!{QrbJ-hG3r+o8|W$2M7t$1Xf zFZ4xAaySCowy~W#hD0qGHFNT(*S& z5ewySgkZoUI4eUWn2I}Y1nqPz`!nV`W{RydOt^{{107lr73&moWBRnbY1z`Te!FNc zh3@a?tRzlNN6c(RYr7|TdmZHiFprs6SP5({bU5u5+5${2MotFUqjr{N5FP8P9S(7~ zYgec^rd?Va&S5?Vdl*4XBrDzgKme{1-|Vp1h2jS#eBbK5#^1=o(jWIn zY4=b5(C)drC4vCeRF`57tsvuTN!TjAUx-Y%7^DU`-p*DBvnlrH+c72saOa`wV{7h{ zw!fCMPLjvoqVr3?Si#kJQp*8TXPQl7=!zT>ZCPKfdUl{%Fw|JcqFG6=pH-Cb?u-o9 z=qn{@cp?vCT%!xvedan;OgX9BHE{PxfWfU%`(JZO8F$VVw~w`xNR&p=K7zlQI71He zZ9BGEQ`F@%c;#hxWN^XpVC8O9wqMS8@U4)6JWMsSkT^%0K#Y3AwL&P8HvRX!z|Yzi za9?bbQK1j3s!>LF&-6SC%T@dXwu&Fafrsie8HZ22(K++E_&)6X+VGkiNmLH(BHJYD zt-vExFPNOEF4X;8-QAF8s~mVp@AO6F-RG~wzu^`j1pj`vZ3T`QLG1noIx}qM@id<1 zgRhAG>c#$N$Di{3s(P<{9y6`>RZSTqsFe4t4Y*CDT3@8^8oRxg9Il6=UH~bXqH5fpZBtg4&Jdx4!uu=2__50XM8-;$C z6JBc>`%m%D%=#&(mRr%(Nw6kdlFX26b{iaaDI#mZA-SL?gRZ+T!7#ARIqyLdr2c#w zx!IG*D#RBg_c+>sYPL&zF4)8VCLy3-aoS>2>+{!OJ+wDf`^yUQ9puJgy|GcaYFx_; z7!FTc-IckpB209G`u*< zt_E`%XE6QPJy;(?N}e8glp4@33EDJGN!7bWYMrXK)81KV-FL9Yy7I)Tn0MHhiMyn` zXZcGY-;nf@Se4y^gh&Q5>fx(?c?)XWa=}ZNJ2~!|-!wI@XAEhsZY|W)_fCx47#raq zasclRErvDPpa&&32bskE+W0xGW?}_uaS#f>=J=#EI8qmE2KARvwjQVG+rEZ&!QsJz zS+*~te!Up^aI_n1zyT_5B0*omqoh~z4VEQvX52a#OY1MWH`CLof*mfzZl8U^>|hGB z3d}+ohRl-oMn5<8Ypy*As7~Vc$d6bn+P;pP(4;CV_sL_M(F+RlJ6zb}Sj9L<)+*{qlA!{oCmV zj~9+E*b5h1r#Sn_O9I{^XDsm$Xo`Y(ua0KOZyL8ASl4+K$@q!Si?UZ4RIsVd*>#nnL1|2pUf9Zyz=hNoOUNxU;hM`O5rw zRw7{@q!c!@f87Y4jOK+fWU2VE#nva>wNs>i&@!@GNX)3UbhSS6ELW4{?`g z#Q6E%4P*TP#+?2^Z@KER()tXP*?S9yg~Tmj_a5gF^8?f$nbSQx{4pX!>BQ4R8oxf& zU7GQI-lTIUXqQ!sdZ5`6V^})!8$>HMSrBd*oNbv7rHkU}zKHbbbSUN2f++o9ggezrPU`AvVwjs$DlBAh- zAOr|LF6b-NHTTSxv5)iHp>-b={=3}n z3P`CN&uK%AI?zwam;sz3dncyX$#W-&qNq>u*x*j|2koqG2>ad`**Yw!{GeMnIYT@G zw#Rusd=WQIkN`I!#CL~+kn#NbCcw2lb7%MDK-6(N^_fbsd^IK@#kK5e{=~1qZX3(HX$F1S{@qAes6N05qa4Nz6)tH*QAz2uj7~Svi?Ik1}}aqdqyrMN|}36 z6YIf=j{7Eg16&}qb9rlHS~-ANkhzj2?L87Kc85da*uE#!e6Ii5ztrpIpiDiL z{_Rg#nGW}{%;zCVAr|mtlR|_fTjhJ>fuW*7rj73F2Ob`g6|8TqXJme;s|wj}h2OL# zIXN@cQS#WIyBHh*fKd1#_5y->hA04LHeoA%Cz4lWeTPj{%J@slsf@ciw|LTi%G_)* zqxiL9Qm{>`RrYQz$f}fAq0{m%RUoeAZnR)fLDuAs+{EiU8ojNQlOR{)wi)F&4pc?P zF^`h9#t2QW!-@Lxk*a4N5aU%prC*Kb%}SE0MDVCa%?Hqr(^)iFY@;!n+Z+ZS#0FAO z;ycfMTUnG-P7DpxB&Eq77!{n5zNIq?c!xYc3xixDK1Uid`8Jdb21+rH3~k7}ebrY_ zH|{-LVte}PBz+6#ZAxG1a7-Fr`$dy+2cMODxFTAU9h?VzQVhftTmwp9oK3rA9aImb z>DDGq6Z{FJoVy0K4D*0SL?bIdu$ZdQSnpG8bww+VtIDnPau&Jhl55!Iwu_J7!;FkO z?*8@GvcdE2tXF1kq;3b&VVqX#TfJoScPxt>= zm>O_z$8nv)Y~jvRwb#$5Sz9g!%q53YoSX2%^Wm;q@o2x7a~~gO2G&LYUf%sHjuNJD z=~smDY;84w1nqYtgv=C#ONXsK2){MmEhT2j@<)Le5jzNf9C`^2`?2rA} z!7{&4S6vU$kV>ZMz3mqtrwAyeCtNQo_1iYbg}j-s)gB#nY47XSdn;i?vCO*e^#usk z{Nyl^Vq;`oUmV(^UbkVubdr5Ug@IG8_EtvBZS!Qw~;a+u1Svdqm;bU zbMyEo)}nbBE=04i(aqo#D*j2$bKxWs>8|sJJj0uLoC)+RzAzT5@7L;zB)6UCm$bOwNU;sBhM?1s&g^Er+2y z{zk^-q?Em$I$nP4eGOj!d*55@KAmIo_~$B%>$`shOymEi$A|);d@D};8m*B~@+UsL z#4mma@^o6fobkIIe8i+Q0ab-KJP|7xvCyPwR9)9VHLv%2XX!hAu<-pel}i)vNbk-U z9J1u;yN}?9)N_%!I@nu?>F>TqI*Mv_GCAA3-mdKzE<C30qTVvzyvoIJx;d$y9gVY19{RC{4bE_7dd6=4opT-I;WFK?W zw6Tk}U3^E`b+*-2H96Wyq{vnXQm#;sivv1uEHRIUpf0Dk1u8r*lWPT%_9iU}$t36B z?vQ4NvcKtch%W7<_St%PT^z2Owu5rho#*YbZUm8a216^xT%m8Jd?uQ%z%Staa3Eg7 zs%Gpg{_Gc8NY8UoWgq#@Y@VCU$>|icO4B2#Cl)i131Vqs zh_wbE@r#)>xI^FXl-2orm$Hnmgl0ISs#JyIY*qiL(6_P*_8Xb;=OT4IpCgD&$&Bs!HF_%;R(tw8?{Fc1cyMZk@g7rgVjtle zg7n5WhVCMquY^VUJ;#3|E|^L;!K3m;|2p%p=ED%e=5SEe5wwcPlWO=p5JdTyZSnMy zot~}#a;f^5j;`8G0pZ}BC1{p28g*#l$>vhv^ky3r1FJWao6zo1DG1k}hZVp$udPw|P-Dl<-K9+{G0308Oo=iw zKDAL6f-W`L5Njfe1aHkRxIVgcl@OJGM`>5O$_DJs@;Mzfp7q2_RMluR%e!M)pUF$6 z=RRG#pzA(nrI+h$>KsyPBujE$&1OW-nK-2~JkfUjx66z)%J(){?m5!_!8(Rv!r%Pz zK1?~!ba=yf8kLCKftD?OA=%cb*|#2e!nz{&-lx~(>@M_D;9JX<%cSAe5(YY88xF{(B-@jCuD z5`rX)WQL9H8!+4jAZwW2&&IZ9eO@=pq-KeX6c!Xd8Wro1l8tryqN-Tv%y9z4vNRlCI5X%tGKTYa1`5IeXk(c8KZBP-mW?&OW^THPqf| zyXoB2P@km6Dj_FUAkI)S^~@miBe+Q-bfm`STxe9L#l~!O%bZ#p5)Zz!v(*ummX_e& zc_%0a%C_|;kjgyysR>MNs!0Tos(b{}#ciPnh$|jAKuW=bZR=jkJpMPM;uG|}TR@x4@ zDfksgJ0b!g_#ll7myYN^@8Q+v+D5NNzfRZK96mRBT3qnZOIsHxohVH=Dl?^eQBjsw zyChl+Vur?BruNf3YSQ^C6Mf$Ypgf^q4LX2*2BQBXC01PD6UX{yA*@> z$amg(6z13;{`%s1#$vm)@&~hwd$T!xCKYIFf`-BKSH)OE8V8%310D8UA60_wYr&SH#_HKd*j!cgw~y#Q`GO zz8ij78Lgx^EQ#nthSeNyAHWbh7R0{iYeqnrBe#DV`uNTDf5sliQth!(1St%_JV^6- z$Uf+soKKvWqc+s0c0aOIhI>WpkiN9p{75=tVdk@Y?{gHWieHSU+0idy0+iv`xkn|0GVYE2($=diSxYFxIeS<0+{Un_gqqqs_k7UV8}PZ*7mqItU< zWgD9Cd+bD7Lr~{CuI5cAn9@*V{!*$dQ-}42Kzfd?l4-}M=IMahB$mzb+TIODXGyJF z+1$&g`(0ZEr{cwdE5#^kXQTTp>PvZxiFNcAF99|X=pLHr1fss&SQ5DXdiRCX%%6i8S|wRioNHu1&bJ7 zl{N>dg2Jy8jw45(OIs9r-4l5=Fg%R>(9uMQgMW}|lkZ7FR<&otqZ3Le6DF*LF~1%~yeY*@FYxS#;7)F%BI zs6_kpC2vPRgbIp@t%k1GUxk>_+LO>#_rgzH-Q%?)29qvjh~yj`2n zxCiOyRO4zt?ee{L^VWF%lWCVI$2~zpOTk}{LWvQw5Rr==1y(W2E^v?+y5}|gtPH(_ zHv0f`fZdN1Lti81j#LNAIDK3TeCMPcFRtNb|Ls!H?%PJ2viP@HaxbykfyKu(ga~ds z9NXq40#r6!I{MozxisQh;qB0`1BXSw&tLFY$M?7@Bz{=G z7-eguc;C4bCyBU$8ZDb9wDd@zwWu=5<@z`Yu-2ijuc}Mg$?0Q5!+9xfZj##JMX6mz z8`BNb5H;GdxIrbh@Q{&lkMOKoa-u=fL4duVc>~-b6U~7kKldw8vd(+h*wR)Oi6N+f;)uhtRk>^L z%s!%vf0JLXu7>)rW-nhk23 zyHIL*`fkziUla94z%~te6V1gcZWLs96Zx43sHPO>1QNA2#cZFKLS9+1eRjqe8a3jo z*-2FAd2;pW&U^SpXDXr{QAzyr2^p(smh~gjN#WS`T;4aQ97%}ZE^Wf75qp>CJny_A@DKEzNtyHF<}0E4AxCagQ~K;D~aBLdAuJM)D0sl)YA zY%qC+YtrVOzo1`a@X;>UOOG-fg#!W6eaMgXvS!!s>te5`j`~o17V)&Q7K8%ZB;p=h z9LF1R;rm$L%T1@X10TC@1pa&+Kia7yX7ochvpwJs7F2_BW*JA(?yNj0pFkW8rN{>c zII&0G*BQ{%AFUSL_;d>fI2WPMvEE@MFk={=A;k66m}GR`VcLxK&Z8UZE}AzUx3SaO zU7~9SM`B^H3}DZ2^Cpsda%C)K*+tRge9JY3E+AArGYPl7nJ5%slYu8rNmXc432+4IifCRp%iT+O^anpj?)dn zGKNM#qwWAk$=&a~<@63y`Fp6vg=eaV=zXVG2=>k7W&f*za{&>K?*bLE=FlqKy>z(VsOhNa9*iB@5)7G!G8`36hs^jWpF|fYQPxE1 z!MfYQ@}CJg{D0WzS55Mc25dJ%aUFq(E_x&=?L#GYRE&0)xe;=VY7ENgx`c0TMKrs zLm77;2m&vlX}cI<6lBEitXSayr=30vLGfOmIYW#Tb=Sj!`CQjooBsT0l-jZf^#sq7 znfJ}$1td4Ldik7L*Croj(D%lbaR3EzE&`VlJ5+5t2cxcz+zH1eg&(K?mKO7B; zH&!yA1OE8d)Ug$^)>1C%Xb9aKG(%;!o150$3p`r=cjXKguo%yZg~p}!D~9ErRA`H^ z`O%{1EHBlkJwnRMZ!X~EVCOU;&(ufB!teI1H8!jmUBBl=S-5m^=6 zgo`rF3Bo}E99qQPz^lgBt6iRSKG}Eqo#j~@zF37j@3iQ5SntfGF#XQkQ!l6k{@fni zyH)EMfgft+54-dl%&vsUJO3(S?z&~WpJv!%otz+EH2*x>5{jOexdH`@D`+V&li|no z=x;P&|B!QLs+bGO*(XQOJ5IC&rG{QR+LWj7^3-_r^R1gOBi^)N`eqYi%!?GeI7-Df zLG#yW81YhcM+Bv5%%i%vtoXEW#kj-!lTuZty%lc@1Fs4w4OJ0HPZ5TTiLWYeohg3{ z#U|W_r)!x~cU_$6U0}Ren1B_bD>HQqmIC>r=l$*`=Y1$1o!>_1g_f@$G}DSUwAug2 zscFVr@ezJll-k9%B|H>m9s4Jm9&EuUpKvO@1yJ#ZpjFl^Uc`t$1q9gIA-=>l4srZkO+ZImAccbxn1k;Y#n z^1RY6^u|}oZ@&zW*eE|dbT_m^!75@W1Oofp*#fjD9ba-0d~?}h7&rmD)8^iRfo4CY z>N>fI7q7&Zgsu0yzTvZ1ZW}>{aZ zxIPw`8h2H!>*#yy9DQN=UsFPBNw?IgsdUKpMu($KSuZf6hOIae5PxA1pX*ptt?kj~ zpZ=si^6ls&y&Fk0Aql{i1Kog?w4pTy<=nT@O|S`?Oartb%I{|P(N~l4R^y%bfef1} zd{)Twe?4r`MyO~kVW>r@wknDbFs)$maJK=kMwjxXyuqu2L1{M*t?WaD824bFY}G@c z*@FY5$4qClVyaLqcqr0`Jpr$U#S^@V5)nRDy=Z+e{BgXCyT{4RaEa#LDvAApj&kN9 zgrgtN!v1Vvkjx-Rj66_@gl)r$qcsQ7lCS-p75CKJ-8p>qV{MADU2EnwCu?D&o9gq} zQB_I}o?(ODT?rPH&xLL44-PIZmDbjz7bRQ0Ek4rp{NRBPdC`sjAT%_*ouC(uFr6J| zuC_3BWJr%e6rVWIT0^IfnQ2$Frjdm|=u-T7zAivvNQB(TP{ts1;bU_U7Z+dj zrmXD7>qfN*r=BlRM5V!jyhC>CH}S+^^$vlVG+;R^TU4kr@JkmTFNtf;^BF^h!j>~6 zm#~sPBH1bVqP5U-VOrpUnom?!GCYob$b)HFF*r?S1}M3<6?gG;)i(pmej{4$>-uhN zL0Oq}#`&q{JKA7~lY0u7H{iT3PU|Nh&V)W<Zt&Wk?X(X)Yc>i@!!r zfCq6WvgS?8d?|IA_F*-596eh2!j4&(P1k895U5VrST+K@Hr>NB3Q9WG;9BJ_PCmHx zd9qR?Fj&^&yY$!pMcALmL;c17-}s0^wvc_9?3JzTWf>}4l2ph#6|x($7G^}qIw6$3 zB$X|DmP~d+_H72kD6-F3#>C9LuhZ}I`Tnlkb-Vt!{!MQ4GUvR`d7j7f@wlHeZgPz3 ze|1S{(?mO3QMgC(z_MB+$@&wwYqx&Z-OxUvJ&uBQj05s4D1y(n@=&0Q#tAx4oR=Iu z3F}u!wt@r+nQRgwEf?M#tGXBMBNrXT1&&^3^!@_jKz!tX5HTHPl8yD4^n_v{|Lbop zH>-N-K8??P+$4-xhvbTp{iu%LNRc403Wa?FvZoI?t%_EzJayffJ$vZ~_?OmK&~>;A zy#rqp2V&nI_#_^xF3G4os0eHPehwdBHY%4s(2yo=)%l}8N?JPC4J7+wP%ao8yaQF2 zSx(TE*C$TQN6m{i)PD{6ntkqh>Eo?PE8lab=^RoPsi%YEccTgr2e+ z3QV)NIDJKeDPD+U`O8nUr2A9ddTPY(3^4TXM&FSdIy_`Z1Ff)^9t{`PImD{%d+w*r zN_F}??2`*PCMZhkZ7ZQDw;jT$d|t*`1ZZdc2cp{i@x0o^P_+QDfe`N5_ck|n)W>bv zIfo&Z!#kk=Sd6c6>-nZheo1jekgl4JJ{s|DYeK0-U8Nmtoo%9zGoLA`eBKa=@yC56wD!>QS{Z?*72P4I zCm0%Xw{c>lyu#NvrVHC$o!J;5bxhLA;aKSR%H?$WNg*`FyD|Z~e^_wn9Tf@tjN$Y$ zUE*S1#ZoOJ-UKxZuH2iBy-0hf6C>^CpC92xG$zXcvuKY*`kTwQ{6Id zcY5^0Rk>G{7xlXrqgGyWa_Y(-$S=Bl;Cili`l|!4c)aJ5uAaT0J}d*N)8PJxcXh`jiswALbRJR*jR{qBz|fHOa7j#TeNm)D5DPaiB+6^%r#DBW-ke zk@$m&RM;fu9TeNY!1?yblq!LWwR=>@`Ai!>Gf(>*D*PK#=W`S+FQJVVGYsb|Lw3?x zXfc7nPmV2VbCMdTnw3&@8qz}5HVqVu>Kbid*{hh4u1O18Go1=}shavS{5+hZ(15<5 zv4D!p*84LJCgRP;HBQ({GUO@xIaL@#G@a8p=$=>l2IW?4J)qH3i zD}$ex$ACu_Hw7Z&7BOltwsk$hsu8IX-{odoMPHdWx&4g#R?lBVLIiV@cI0=LwEmqr z@YPW2>F73m%|Tl-sNKpJ);Aw+vEguNz4>L9k=B`usdp8U%2S(}>%!1Ln0uh>MqZp8 z+O#SP{W;a12_9W>TXC;HPtX3-=EEbcNckV>?`lN(dvBf4UlD>ulE-qMEPZ8^m9>T( zU<2Twusx1h_$;nYF(p=Zz}fbO7+0S@*Ap7+Dhucj(RqCR%Q>HcQtn$OVwy-b2AWXl z9pm(lR)G;JOrcbJH8Yr8E*bTCS+JcSvcu5rZ@)hjYIZNDQ;%#f4J5> zHzm2~YNh+&`I|nzs=sSfY29bILA#iAT(NwjbuwSzg?P-XBswq~fmit#Et$?j9|kse z9dklKymi(tezj@3`Z*SE=Gkgm8|%%N6nS&S*FtNlE(l7zt2{HbfNI0XiL+1W2~vzY zfWI{5QvlNrjv9N--Z;=&!9RI{dpqHfna;9&kqGTxe;G`9{kTjJ)vJg5Dt(Ljch=?+ zQK}6NLFy_;(*^A2Wb-()O5n%yJ(On6ReuU*h1bJ^zX}nWV6iBoC77j%MR;T_R~%9> z(cDqKqrM7j&$?HVX?Z$A^Xr=s=$&Wq5#>(AOx%J%7ls?vZcmbH(-1#1L4C0qGdNlU z%is?_vl6KZ{rMG6dB8OzxPv*lmj+wUK_x>_a=_iuVqZqt`42)6n`@w&t8-j;v^M{u z(nXH1&>Nq=>DTIJIK-HAP&o{mM8_Rz3`~1 zEq&tl*OYT=#?He^X`Kay0_uAq8^1|4J#gZ!N})L_2d#+Ekk#(zv9o?Y+qJgIr>(gr zTjs@^&WhmVUm1eZOZgl~6uqs0llo8fc~3+{hldn(mH(Mq4IIPXWHUZzrYgC`IMRwJ zN15X}P>+l0A`7a~?OZeU z2eudr+$W5wiF)g55V^TesXB9GP!N70@2k>GkHa`r9Oi;*1%MleyweHgO z^%_}ecF#o1%5cwJT+)gvi^DREj+I}>}cN^2;JbMXhapITv{l2rpFw&xY99QAu&?ECD&-! zm{%dq{S#ilBW){j>KOw+&&ry73(0VoEQYjN`VfwJrTi-W1D|?`?7Z zW$MeV;XZi!5OWptFR;uL9z=2``;N7^k_2pX949}F*PRt#3o;B&VT($QlDg}3+Bt@g zdI+5Qzd)wU8ya60$9!ZYK@k!0GbWs6B(Glq!x)MjMDYfiam9HVN+Z!g9-$hRjkQz2vfr(gv7+Xb(`(A%JS5JzlTbn)q`an3NlUV-y z#qI+YqkGKe9m{tPVht9usUDPwqagZ3D&E~mu#S@av7-cM>gJisQugD;wW_WfJ);dD zEm6SO_yEU>X43MJ5~`w^#7&aiEG`Xz7miRAdHCk7_lT@3vp>r8M{^)wIM9^8;&p#O zJSh6e5!H612+E9b8TAgo=p2MVeO!w#Q9I}MTeN2=_h=4yh%cNlmj2j{k_q(TIqI~d zrNn=@N=|H^s*e(kqt<5oq;}_hb-T}{s|ue`xE!2##7h4uE=I9kFmcZ5e!7;GzaZ=6 z_4jVXyVdkh9WPU5{q(FvZ63j&eTpv^R?93~7*suf?>Y~#;us$`45YV-i_zYIL1|K; zix7jpbvG}GT|aAh6t`RHd&Btv`N$-NWj8JLBZMco!n7hAisdE0C0Q%$h!MNx!}x!T zuNkwiZ;A9v5l=K(MB;1q(a(K&d&FS|Wua4dVIJ9D1^9@J_bZ;6>v9M9#sx?r!~RX! z`NQ*Hb1^68&fm?jRs1cF`;~R|_l2)IV^Ao;F{-Ouu-+G-IMYyuYC*VR91cVA!4=LPP=dRkhMp51Cw@7=%p!r!_f zq6`P6U36WlAQ4LCJ@~Fj+9n4!gH9ybTYUxR?<1ML#AUS1oYBU+mj=w}D_;9Y zF7JPR>LXVUf^G8axg+^3RI1Up4=z<$=Aqf_@2h%Fv^U|7VPH*CYMi28Ji5^%Hkr2& z>Z8t~=1wrb*m>~5-E~*U^>N3;`|Qv9dUb9i$HX2yfO$>byz6=O!hWegO_MGd3?uj%^j7K#nQLq}Js^0cL+dNZ~vL*kJO z^G{pIN!zN(%M++1lsHm}>eo6}3FtzZC~or)*NC_lyc=!yu~x7pInbd0tj;fzK6Jcc z<0`478xN%)vkf<*M3RR}XW@AJi?wmRas3T%if%|eId>bKsvT>ElZLMiNSPQ(T{#{8g1Pllr7oB(cBsCh)dDjA1e$)M4*8fq1Je8! zn~KCCaz5!GDx7WU=$oA3sB&S-LR8f3Q0huwj{rRe5r(Rhjnc=Ue|HGwS8$)|k{{ zl31e4Tg%KRf=hb8rczgh^A6BRS&+DIb^bKxb@}}rC!HKrgvZpbK^Q-cgnN>}50(s3=BJip_b>Kbcy#w{buA{Takpgf`_duo03sRIx9bFAh zibR_ilfOKlT8&%xBZ4LCc2ga?PU?-wiZC=i%U9u=0IpczlSYt3DON|91_?tDiquUa z{c}@m4l}m!xad`d*Qt+hLR{DNp+6Va;Whuv5{T)gg)Ct3nd;J$ret`b{KJaZNZ2br z2-iAGUOU5!Kf3kh0`e`qPg1>)*#CpfC({3e7=vi8%^o-uG6gwM1xS;#THve1(3L&{*4mK& zW3By}&e1hD_Bl4wrcdEYj8jBpAs1pKFvpSExN3MKBqHZ#l)QUG-r(={w*qpF-qr5DqVn6&S}PkTP`WjWJhqd3!5+3eQd2M zZo*ApmEPSjefEg$l)|wTGe73rhLDK7a!SDW`O7KtC~l9YkQdIi4@t$H{*Ekfy4lWZ z*QaR>`QID~gfdZtSrx)z4@xLVkq^60@_`8xE`G5oiKIqX7&oQK|3%XpsVGwab=qgTKp%wg6Mi`UIGlI{vM^PO|Kq$g*Bs;+)I+1R7@DyxgK%> z?m!5t{U_}M=FekN9GyJ~PWmid*@?oQU%$~@Kha`KXxu1{&kSA0jAP}J&~F?aHqRU1 znsqKm*@s|6kc_KS0n>2GRLA6$b+wL4m&{yK%VVS9>I*utOo005)zhj?MNqgl zVbI%SpdtV>3D2){)yspqQ!&J0!sp#1cN?pwmOSp>wzEpWMK1QOiR7S^vpDB$le|1u zF8lSGwrPrx3uH-4hC5Pgzw(b9oej!#imFCIj$C_zs#Csn7d&W|sqS%aRGZlS29Whk zvAdVrOJdTgJ|{&x#$~B5z6;*jw%9P#jOz7-Wx1H{s?y(%wt|mVn@S&h5BlbKxwymv4ojOII z#;_vgs1~$h$(>G3dB@yGgm80yG+Z~}-C&S@|(`%W+($-V_V?b~r&Ke`CmIA$1n!cQg z?$rsZT)sp0X!WYZ+Asc4D3>T(nhK3iQDlq_vk6bfv@&eW5N3%Dpv1TpH4n?#E@^N z?8v&j(8~NuH~vo5*D>E=)8pd^-cLfu9quPI7+PKW+GiRl`Tq1f0@6I|KBx3wB;RbMrHauYX4xpGnz0D{ZB~7uhSc zU-=p=o4ID9n0i=8m#fX~srylkoC@|;1k9&xp3tJUe5NrQ2hyXG2Zi@)0Zz?#UfX>j zP4qmo*5B8ALd&f;j-1oKQVfVU$Imqr-QpHF#s;eDZ_qT)4lTlC3Wzoq>=c2Hd}Sh& z6Wf^DoVx62WwvEW&*=xR9loFblK7QrNw>zS15|m=lw#s`H;hZ?ICGTFof0n_jqKvt zYMEqgFDcr6t!&=j<(P^1-!9|@irJ!Z7djz0-4n?UIIskHuS-lS{mwq>SYs&&&bB%@ zjYVtdCNLEN*JG5OGhIl^47Sfd0ruQy%5Zm2JXh-}FX4fvtQRf1Z=F2v^p@*1Sd)je z8yJ;_c6npr+%+aQR#4#{SMASwN0}8IpgoMI6(wcpbpWU zF^_Z*v*nHPz;K%ud+^{qMnYSEOP<1Am$;W@C8BY`F-Ie*LPQW)>p^5g6g>Ayt{(j) z?#1SRxIE9@%9sLCJq9dQjhI)rl1$YVC9Ya~NSZ$J6>@xd>nbDQlbVrGOUCWM<#?8q z72Be@{)7HNB~l zi33^pi*o*nHsih+w*>^>Jr4OUu#11o-%syrzAz-dcT`^2CnN?~jCy0_hqR*1ds`1E zK7_lj*PuJ>UvIPMb4f9wawjztTY19$iQ;J5H}G|`cx5Z)N}IHfJn;!&vY%bF3DZ;Q zi3C)xeGuzD*|4C8`gNB${U4;k{yH@Zj9va5_%1nht}cjhJrmG$;*UD)vCQ02X75*j zA8CSf)vyRHVDg|BoA+AVz1XnkZ&~+_cR5GtH zH6364^musUkq?!Z)Bq~UXJg?ylyDyboAf(hnosNmM?saa=9^ho0lAzPE)O5)1ux!l z8aih?+^huN)$;Dg6~Osm{S zSG!FwCQ%EY{cAg40!=!ASXj#1=vbu5b;7u}1E*>ywxsKxdmN1Zq`O!O**|XakJR|o z#V7)w(2+B4R^OH4q1`EcyR9PdK>M+3 zZhx-xJm!7D%$+v6GzA4znM*{QB!wLF$vsEedF&2IZM=P>x08A0hyNO@`2Kc|aq*=S zV#p%E<{?Fs=70PLxkD>#i74^#lb+JlJ3sl*aQcl~gwZvFOtG2BUk8FJUx zpSg{xIZ7~PX>tX4obP_V9Bt~svD9J#=J#gD;H7mdMe?^Nazk2i=e>0DaGgf%ga|qB|4%r{mS&euSdh5 ztDxGXF`gYkiUT&{B1ydiNXOfLemDJ75&F>kbllTq^ybte7Z)Xfd^-av0jF5+*q7gy z*EB))a}4kpvZ*?#d4{y=L(AtRuUG%By5?Dl~_joq5i?B}6PQHapNb{kFe)qJ>(k zXRUwrF?5@ds3-`414=MA2pqSWZS5hT^g*5u{;Y-REw!B8@;=!dWvnl|=1EDzlq>yT z*wdf&cDpkUVnA;s3eSV`MkG}M&sAk`;MQYZ`EfY?WYy96&zXu9FALLw zP}z5xAzdH(3NC=T563QbLHTq%2x7d80|)%V9~wV9+7I|DFy|fb8c#DkGbg(sbWc=+ zWlP?M97c=6ctIJdzC^i%ma9ba@{rkR-JIUqT5xksPy&lff8*U(Rak9^MKS8SuXRrPgHE2GuLB)FF3Q=0jdhY4K{lGW-T}jc${o8oUEd(U z&&7VlybQ110C~WLInA(*sy#sOSDpae<+k~ga)41TG{>RQ`?jNJ`9Db6tEYSpyVJXl z%a&y~@qkvz5IkPCkf`R3-D z#A6@%#YFDkLfIWE^*fHLa~Od`a#eFm*q}mpgXOvYE29;A9DhufTeC!en=zYl9eJ-R`?2yJlNh;}9voLo(H3O&;A8qB@w z?$(I@)l|pXrEhyHulWT-eFGCC{OyJHCdK)NfW;SEMd_AxvFBDAn3cZ#w6%P(Cu36i z8spN(+i_UgRlxBUtdd5FWrNZ;Ej)Nd&ISfy4_ieG!^^qugz)8Bb{C{&5~kO z*MFKmWM=#pu?<#cYeU40L+Qu+L7S>)lA?F_+A2*c_D3ix0|i5Zno%4Vc0bqGmG-Im z32iu?WsMOwQj}QW_~;jw%lY0W7u9CPiE>T)4>BHh1F%;zc1o}X{SN6mg(ps4q)k}S z^={LWu|KV->s70{V{is{uxuEA}iZk1 zkDarJ-B#+El(mU$jf)qPT^TR(#QnODKexROpJn*t^;Zde;0qH;S`}R`^A7@KG-`2v zusq0}QOtcV?19bjX3(bg;`o@YBd&blc0`fI-*>L_A}4MvRO$fAqVbV-Xu1hexu=qm z65XxZ^J#VZ@q4{y1hG(_%&gKa7*lRg+c&rHNe;g4L_JW8;u6ydNJ z^x=`RGt6?nY%f(pD~HVR6zQH#^N)_LZ`tW0Y^rK6ZkAl|))rtQ;44IOLkhWOfDjNB zP45+XjgGIsC;cCU9S;zkK&d;uj$#lVg8v1J{Q;fB7xq`Y#cgS5gAtsa76c+KI=P^89=slAAqaQtpLF~9 za9k`l&bc$%_i64ha~njMHUJ*L1v!Q})_RhvK=O?v!Mf_P$H{NYx&oN)$fuDMb1!C! z7%V+arPwSFZOj}=hg;GU3rPV~*CcR_FnH&IT;Y`8)X5%vGBw!oE=d5AU}l?&i^(>wHJ z#??R7<*aTxDiNOX@ymz2=G)0ImHxo__#(UzN;Fo|J4V6LyB`2hLO6Y5Q2F@*LJM90Hvs8#SOqdv>`H;tS>F&) zGtKrjl--D>QV!p-#l0fO>~=QR`S4~EwlU2{FCPkW@5p_!#qkvuXID%9XNktJ5 zCyYU6?Rq2HU;mOfI233v=WP?t%nGO! zN^qEU!0Gra+*14NVyxT?xzEWew2dBp8+F-c8UNjaB3l{xFN&Lhg?5=Uc0a8s2`PLN zW$)1DS#`bo`|yJ|Qe5r1Q7pgMNx3wJBPaUs<%W$BARqA?B^Ke|l_;#`d zbu3v5+$u8SRB!Q1)$k%IokxupaZsZ5knr?szA#Z8)3JHpuqL6$f+uG^ z^0$ErW5$kuzJU}h8TpewqP&b8LUBt=ZHGSnTeTkvTpB{eDT2TT>BxR9pPy0%W@+b< zj%g82NV+O&QK~ie+^Z*mwiXePW{ul3a2Ll0Y0B`aNTcQ_3jm%D+F{$n3mz-RQw+0-I+3p1^5Tbh1ee@eOi%1t?v=g|VZP5E@V z&6pac&Z~gys%XELYOQ~Nli?M%kJ5g?D7Vr;2Cqa^5~YZoO!36C*I6)o9IBaqw4Zyk zS+Vlw!2Y5{a32pl@Az`7%MoJ_%o#I{x1p5>!FW8d@OYn=%i-ESUVelA-UpJFfjehT za*uhy6;>(&;KP+0mPhA30Wc{pI^1y45#FgmmyAGInoVS4=QcAhyp+~H+1&Wg3%v-> z0TAEqzrsj4=wYk}{P6N}>jJF-$_RZ8SvzEI-308}-pgS`;t(N!zzr z`k0gUgl~(`Cx_BMpiPK<*cIR_H71kFW1&LO{hiy)`yJw(q6!C$x1Khd{DMsnS}6KpSVqfgF+Ky{NEAC}Aq}b2R7D&@OHvX`q(jcRe*7zU zGbhxsPj8SOtlF)LZpQ?HL!n6v^Ma#S*ObO)7&NYSbz5Ap*Z7rPr^CCZ0lQzQk*_{sm;8HhKnS6P!QVu2Wq}OP!z&1-H%s=BZ&r%A?E2yEg0gcFnxA zniro~it|~YXE?)~v{VO)FeP%)PuedOpfP+cFk*=z@n&)HoEJS9_h!py{_OJ$Lh-If zioFnqq+fgAwI;!g0kfv>vpM>Z%L96N`C~XJ?xH+G8G&=lhmG(dX35baUnW59&RVMNHr}*ySR1{E3IAI-zt}zOG8Bda(Vq zdbCA?S4Jont77Uiz;Zt9vHT`#x`Ar}K)Ehpugl9qP<*285yI?f}-E64X%dqDP>b**V{qiLLpdd9)@hwy5nR>0+ z2jOJ^bai0!-6CGIKoH3hdX*6S)>S;mpWww(>4cS4N)=MwDZS7K0S5uc|Gj4J|3*c= z1eoMxq!xvdsDXF^=Mon z{PA9B-JsBNN^pIFHhb#hBtIj6V3zy=nw&?j;RxD?7T9}mt&v!H)=XenywZas{(SOa z>%DB**>2m%8dXb-`Cj`gbe2ugR4Oy6$)s2`^tB6j6pR4(!M4_c;+vKB67%QvY5}OL zlEdQKK}Z(G-pb~Fkj>n_d4h|}W9k6vnJ@DAiVlt`j2IAIrw_Xhp@*Rs%GLv6o`LzJ z8mWuJfgvJy8zjx%siKRYY zLhsZ9Bq_M3$CkoMit9uXUx%9#tx8^~qb0QwwLe9_Bq+Qxh)&|@DJe%O!|U-tK4Yco z&^}Nj7BGw+MEAp+84*muPgl2tKVL@#@h* zfoH^TZ;vaV9{l2x0d4Uqk`sOGbr?jnpz=nOJ%|E{ffk~ar+6F3J6D>b4#)dHnM<<1 z)qYi7)xl0QE)iS*dwa}fd@pf2NK7wu@oPh1s;C*a#M1q>C*FQPxEA4FP|Dem&6ETS zsse8ItQhYNUFO1uLaufF+}wO>HfcK0 zO06MS4C>-JP@?kFs-*8Hl2k33{)0Rf(=}f9i7bT@iFlk8Jt1hDw)+9KqYFV!qbV|R z8wJC5>u`!%0oCg_9IM%VI7Q{Pzcm7G(New2v#O_(uw;dCbULSQYChN)J9op|H8~^r z6w5Eai%wu|U}~eiYgMC$PPLxFQLRXK>9TP~HDfZhrqcq|mw&p{uhz*;_H!u00W z_h5vAjo(DKB}ZCHF$ker&r3FrNrw95|I%|#o>o2HwxwUl^}T=+2HkWW+rTQ*SzQ39 zGn@Js2oPM|7-2n0FBDIUy*CEiwAZKGGgFQgYf`IKsfP{HLg#}}Si{AffXy9*Pt9>n#z+?H{&*rxj?1B{FP-wR* z(tn^%0{-rHEOrR2VCVLAVckf!c$uoO(p6udJQvp#lSj{9*u;-TVXm;8XXztisC>NS zU<$gZ?ZMGis!rpV@ps}5)g7Kq895q+_uWRa2G4R;7=NC4I@JZM1}#xJQUf`Mvbune zf{KPaY9>;-3Gr^`cgz~iWD-^-YBCr3T3)1C*1Oz^#CJq@d#x!`&Q@-eAL&u$Xa&3g z8_~k&`gX17UR8tUDPOMN*QbNllY~d}Y_B*B2P2KFKDNJq;wfJ-u+Mnp3bqH;T31c1 zTZ~J7D1A-#nU>t@@>%%6)WwhBN6va26wi5c?Ztx*AoA37$xe6H%*;rg(Ng?fqB{E#|L#S#S_VFrKHZw}z%YEmz)^1+WCEeALo~aMzH+__4N3@bE zIjnZAN`zo)Z<{kS;%>J;YE|sDU~h9?=CKGAB^qj2!KnR2Y1AvW03Ncp^he4r{fiD&y6W{ zdo%aj^F7|T?C1JVyR+eH9$4!4Nt60MA-R#Dsa2cRwH@EePjMtcdm1he#ZVnT*?ZW1 zC{PPNq1`WEe@;#Lw|)g*&ksL?703$T(4|K0zPUWV62XdlrBd@q4&)SG5aYx3!cJ~u zhV)KMi=y0f%w(UtWV+A8Z={W((SWZf{|Fi6kk^uw@)!C9)lr6VJ)xaFWiP!G@Og-? zzJ~%GHD~-x$6`ssM!3%c8glQ?;e6WG54KZzI#SGUMT?bYP%uJxA52=pKPQ zZ#$egWtXKtiK>@gZwB)LDxDtXPbS*vJrz zkYB8%$TDxrkV=+@UQollNcLSedXf#J-hqG1c?jBpJ5EpBY*{WCia+Llx>9TaR#RQt z`&MWp}Uz!f7?@o0oQ{;v=Hc4?k+4xSB5Y98rOZ?1Bv%ve~ zGO@C*@ec%(Zw_mmf&RoC+r%uq!_>1+abH2odR`p}x{VwvIneqKQea0q#rqr@TNtbylPNqipK8QZF zX-Ay`cjWOe!&KA7WR>09V~7PNGp`UIUenWkUo(DOU~+LDe;BFT zKrW?Z5#Z5yhz^3J+BR=Y{`t&PuKwr-(p$S_;?6gf#)W(W=7b!m&>HCD*1LU-8j&|{ z{IDRKfgQSsO0yZD!)SFF4`73#bBu@cEx}$0*tI5>T}hq8UB37EM~PR4UP-EbgFBs#Rh(*MVS5?X5K#7z!7Ly=_eoR7%W;~Z6BnY6EEAY*}0G0HdnFG+Z$qP z^aSZIgRU)$Z*RkCH90&M(7@r>S3ccCp2j zKGOD*Ku>9&#x|iO{ymAk>BeJ2?Qp)pGti{FiLnMt6Im-`CA3lz_2v?&9(rQ{SB6|vW_7O9c zi;N!5?cygI8tO-6R~vnGv`;#T?cSf0l>{ZMnJM zHa)5DtbhAV0t*Ck48+Ptb@)CzdF68q2Yu83)HJT3=qr0x<5Swbj2y-Z&}7J=s)O z>vw-tsXFLeIlen{OkeuglWzT`$p0UnEC<-Ulfg7X;*9}RMLiE{9wB1tjQFtD!2d-c z(=2l9HtVr1iMza0&jyi2$RGJE6rZJn8O-8PA~mSU4jV+CDvW_oj zK6D8=^Y~tR0^M5Y$pT)Kq6w#Wk|xm+?>);!AG0VIrCmxeeVN36W#H;5{Yx8Oqf~XG zHaU7~PlN-}k$irF0ziM&_#4!c-|?k$386W z9cZQiP8%?n*s8gnK(m@xYEwdax84k)$ zmLYU)C|*BHOcQV4s`o~=6l_&^3Q*3jqT^shB^(t*DnPd68Z!C@ew1I=C)E=LcUh;!yNopXgaIe#t5N-Oyq(vU|#Q zIJ@6+Z0mcduj1q-iB!|Il)_kXLgXbxOjB71XmCjdggs509eh8dgI4(A;^uz0>fvBs z=e}I-e#P2hchBAGf}7)oDQlyv?2o(7$C`3~b#>J__4Je%WtWorajx&kEcC(^^1vL5A(Oo90PppihL2mPCeb64pR%i@ zLky_7((10#Gr%$0lgSu33YuJbMhZhxs-^wvI z7IH1W4g!rGI;#Y6{kxtr#bPN3&lehCF|iVDA0w5vg}wCV6!u!z-LG0g(gaL_|0Jdm zO_7f4w19*fFTzs1sa6DYZKM1MU*;6;{*MbG25vl=w|=>}aA!kkIm0@di`%TL_!)7* zF~!=PQ=4+BUOXM*2fuSXBULQ!zz3B#F(i?tt@Ixjcd+hFru~ z>p?bQ<$llHZ`o3%wVh4R1h@afLHgf9xFKfW%*Uy-*+{N7<5A*Mzy3y6A+a9M@gt6; zn$ms*Z_NeiT2IrJM#)In3k0Y7eCblDhdMb7SDJiECbgnrK zR0}lsa1V+l5!Zn^7VbrWvWJ?PkJaUAc1(q6gjffAhz$sE<9t(0oGyNIw9k;=WlRcy z4=8v3_1Q#uRPwi!ed&TG265ixyHZinc?5w_kAoh$MK|>MSmKaAq6+AK~zjx73N^){YHt+G7$?^~*@L;8W&>}nm2ZHak<3?e%PmJOuLrl34M)ED<1#r>i5(*-T*KjH$IZcqn| z1R75>>?l*Y!{|l@@pv-(C}uBW&=!1Zw})Ly`4T$r)+)KiL6dCsw&46ZnV!SD%y|i& zf!mH4Dv!+~yb~QKewLC%*CuusFH*MEXewIb^oh;Ra?zSB7W*ju2f0tDHkcE_eTeJr z4HxV~ryNH2N)w+epY-JI;B7hwZt1;g!j!ZGE?Ylcx`5*QG@I=@Erpr!y$q1WP5Ti7 zJ*Zk#Twt>g*ADbWjA!{`j_!msnEiYt+l37Id-jWCzjQMTs@ctrB9)R>1{3%0(VBuV?U6m ztf%}~mJ@7}N3R8T$Vd5oKVU9L$>K%-*?Rv4^)X8YycD+nMPVz3U z@A0N+)#U{>@7Jym+L$FiZBsG}29LCV}>0k*VF7?aW>QgP2iV>4Vf{}Ai%ol~AGyDO#g zI8U9%`(^*!^YPSxV~`^HB&;Y=*^ye?!N6y~9* zHVGZ>g(1OpJdYIVQH*PuVtv8;+ACX3xl%e)1_|5DOp)LcX1=2kxi(bPg;R1wr)X|n z#u;4Y?lH_6&??V*%3n?taiBbdb?2CdGjo=^7I(NReZ|~QS-a=j_=Jc5RZOtq{dWj`~qHbH;@+ z1)>MGji|hE*vQ@x*0+1?dlQp2*3SL1eQ$P9kzja-?$B$KXF?%-jF)~T*{tI?{D~op zPE|(=RF(0dp%WgOSyOh>96AmBmO9m{jAV&$-eR(@pCnt4*v@o* zF*sJ{-yQAw?ri%<#z@G*-95|ywF&{J4M z(M@@}W~pRTb5Yl#3m7)H)kv zZ{D5@dc5;NEaPVIm!HOVho2)w6bORzPaHlQ6~F#P{H$W}8(x4CLHSh9z&laQEr>$U z?dJ*X@243XwKhaCxyjnP#An<(b}=oK?_iFq9N-*)5ZCNK{X%t2;XT(1e4wP0iz2HD z{3$5T^?9`k-@U6PtJVi0V`Wd11|Qo0Pk@xL>{YI!e|mc%W1H__%ZBx|5lLkH~Rf zRx4OE#Q2ZbHijY>(lZo?slj)b;)TMEGuOmaA~<*Y>_+Fd;6F3n9SyFn2paYMIm_6E zR7DOHi0K{kXhN2gjDY|=9o&?QX6Lz7_e$qQtkEqg>7=uA(s%JE0C*9PhKUD;(NF;7 zezW1hhgrqiog%wyJk|zh989kARy|vA&aXQ_P)~=ETPYU-a$2taGPJ{Vd%0;8QQ=mw z8GPIBV~SZwa_}3-Y{-RPvC^w_*1;p^a6VcdT{yI~1J2{Cy!dTG-F^EEf97pR$iOJ6N|&WdQ<8~ydQMUPFZSLms;RH-7Y%{}0-_+j1O-8*ONT&gG!bJ3 zl@b+cBE1C(1VMTS0R<&W5s?ze$v-zPFOWHo8?(lk z4}xL`{u~~RDMhwSaqN0hzxkmv6{!LC;@B@79OsIQu6_?jPW60YR_Ne*$LV`02(E<= zIN%5z_MH)_GnuPJFion*yOVT!FG(Mm=1)B%#1mL*(T#3T4pa6@00SwI2u!Sg(o_q=T(^L9y&Q-_%c1Q%%ftiLso4X~-gZ*cFLB21k=`xcLG zExxMRuS<>ssU$EnE9rq-f4V#!$-E8~~aIHE1W*Fmv2`k_8ZVCvN1e z3!_{5pL^OjP{CPQMvaH{t(hc+Ai|6;yc06CL54a+W^IRa)`>cg-XA?>wB9=$cJ_+g z$1eM$t(@G~Xs1Cv9BjZC_OvunN^5!JYbP}P>DLX+(sYoX5LNL&8*NGb2jZPSj+Pye z8nyjF0$_~sljv^a@f7w8rSm*7n*G=Id4N&0z2)xx*fz?Xr&*2e*J zJ=kvAY5EL3cS9nsrQ_zqF~_{Czbgb(##M(*7V}a=nGC-tCN}lSuFOzhz}K)?Dq{ps zzT*y(2WCJ)0&n1>Zq9;RY(EJ6w2!Yy;Uf7LCbs*q=^5-{I|~qm(3bzL=TQ_cq(E+9Xg}*AH%Vh$3b}~jobaZZS9Ra$Mzd%1-nHE67wc?LhIgo$t(^o7lIASk5 zoFP<_TYa;xHj4eoT#5-e%S`!AT3^7$2C7gSz=mWi_VSE5aFlj_8o$vkHnknbZ#fqZ z9Jz}EmJZ+`xw}H+m7WTUyRAWr%$eZ$(7MdV*IhHcCt@}>S|y>V`ejoi%Yj(~D9c%L z>3J~S0*lqrAymM}(p1^EKF=Yvf&+O z$X}i*#dK^2!^_oXV)Ud?+NK=(Y5MpI6P)^Ry!wNW4s)^`{C`r6`;?ToadmuiA>E89QczB>SzV3yp2sh`VQp`KHS;++(QvZg=pubt5!W9 zg8VvQqjR8_-bLgBl%&zRbAVIygsnkh*;=r)wscsb=xOMa%5UlSZR6ArF5P~R%^7&p zO*=6W3u**k&+(-@-@I07@o7@g3=g$gDVrJSc@P1H9!yI0#OFv~sVB1co!-7yOZ-@{$5r z0nAwL8$vTCSqu+t_iD5%0lJfsk;3J zU;nb`)GN8&6Ps`(n^u>uqRASbLg_cbpo+E*f)}UK>)}rg?EZm7=jDnf{{#g>1J&sO zfj&&FC&`fWS`>xHQ6c8Qv@Cu4=bP%_3tu)oAQ1jr)X^j>7NVEvaRd$kqjZ=o5n!gH8o#ZUAExy7kT$-X*lsP9 zC-I%{gV=lvySUyPUQMt^@6jQ zCXt2{Zg3(D%f6(5{5?HPk zR6T#R-3N+Cg!y88`zG~VUJK^s%t`bWa+wv`r|7da%EzlJb&-9YM@ZPn=FLf-&Z6c{ zrq0!Lx&p3eCKhmPuVce8q7CP$(WK08b7JO*S_)sYrLi-MdjCn=Q$~Szq@GU}K6;l~ z&a{9hQ#V6qwok2Mr~;4wrdt})PG%GF>&N5CGA)b~KfQ_!Nr&Da<>-!FmkK6WEGQS2 z%H2*o|1Rm|(>bwcKu6)*thf(V!_im)<~OG{NmBuXaF3=&MN&X_?09*+$jY8ZpcuXi zA15SH0a8pvPKoAR81{+P9!ri88*fAnpZY@@2EKZPRf0A@F z$1rGJg=uGkYTgAcOiq?;GlSy!ACqupeEE zuCY?jacQyDP5m-2FN(hfe8y&B;5$a_Wo^~QM$5x4)+`KHc8k^Lq_(S^G*uv38#8s@ zR)VxyfLN+WR=&H1WS4KGb;Y*S7l#~1m!JHwd}!>}XU&3jdzuIlMBA|D2GD0W`R;>9 z`~Lb4Hyf4IR>$N@{td(x7nbitFV;9;=?lt^esk~c>5s5O#<~XQGL@ueL{gtF!G7B8b@qUh;A@OJ$GE^fM}>W?A#w(q}R3f|!ul1}iN(roc| z$^T?3x zQ&~xyp$(^2_>-(2{(8|?oGqn%AyVwro6dVCk1t8g@?6}(5oVadiJoTgp)#5tvPNvw zc@|z#FUXs)s*&Tjz4s|b>sAeq8~cWFaW+GAh8)ibpK|&K!nB5`_CoHvQsppBq}F(* zRdf<&ZUs;@;>`!}WuWrpZiJU_wmRyGqJX`7YP?T+K>Nqt=x;?i5xHgUG1Z}y8`8I8 zf;83sY#tymP09@-G;XQ@2^aNHF-FbQVDD0xmQ7W4*iRdet-~#XBr`F8;VoCH)YB*2 zgsgptFI$~ffkI#!KbVb>po4)MSA0M(L~9V=vl>zOs=_TU)n*c>0Y{c4*dfN^a`q>- zJ`dACcW$aAYYZ!#T)K^?@dLef7vI4jN2e!Z)Z(G_@xJRSOpdSj^d*6PTesq!j~ zB*L4R3pxH5u8E;NG9FKm>u|C!_ z@7$-Iz7HrzHsGb|qozMFlcL(>E_B{{|8PkNhUu>eY)3<=AH6Agv!kJU=dG8Qb9zZ8 z%3dQSowi24JnG?(INY=o&N2^s$NynLV)uQp|H={Pg>%rD;h;W)qU;;ZMjan3;Qd`6 zmDLE`C-~YPyL;S7aQ>+szS7x-aS5yjJL?*Z=w}RR20wM*HB1~%?ueIP=h-(sv_DOM zl=xll)703S9P{yGFM|HEh{`er>ERVf;E@@!TSU=_man^)LxW#Hcz(J+u3O*x-ST5) zs|T>3N>LC=>}2uQ5?hK4grjU2N0Fb557bZsH|oeY@_4!2E4UDywLylTI$vgQt>?~s zOV<~>$PC-&+d`}#2J5HsXoEIdk|NVwi)Fg+sEmp_6IuLt*#13YYVlOuqeC%d7cTVc}mDyTJ8)QC+I_ft!(L zliC*I?~;UTaRt#AG<|Y`6*&+rNmLJ_#DA8g+mCLVoUT;=yCfkWGWw8AZlFXUihk`lM_DZA$SMH>tx|>rH;wXvyZx`J ztXVXfc`hxi;q2-@djEY~)Tn`xe5U3CMvwV8VKC)Vu!jd|LQDuSj;fG1cO$76{sIU( zL{r4I+JI}{$p~-V!o>B8fVJux6C9Bft`;=buc$C_6+^xQ|%=0s2zjxJs0^N-1mDWn_e-TutMJvmz zJ^xKm{lNS*ab0%d=}w? zUn$z#KL63*!~+q=_=~i)Gz`gU9p0ioeM;|iWm(l@ckeS_BObzvkG`2pc6Zfa)ohpD z=%)s-0$?7H=`d7vuw|Zq2H7wB*F~VI$-D2V^}rAF8YMP0gsbwc{UiBex%qD%Bc&$N z^e(wa%!@XH>m$`y>D3^>_QdiCw6s4Ot(H$szDM=8akWv;wvjJX-@DSq%PtxB;A)Wb z^Wz4WScL>-TAzS1>ZPXp-DYD5F8k-4Vx^fDzbNUT9hg^OTDVa%yHh14^nBVKlCEKk zFt*h~#DCdqLaHi#dcf~Ald!RzwGFKx$+*wB{Rjj?cOq|m%{)zJq>Bjgv!DM?nE8*% zVIr8H8yYV87l z2D=5BdlqDhWK)jQZjUh>`eVyYIV#St68XM1;24+4(e#NZC9((VnisAICKoL`362@6h zN#bpgy)$ds&V0D_d*nqnfoC$2g~Qyo>Gz-?fMnbjXz3h@m}myeh@J?w%P!eqP%?}PkaA^E-<{UBXfA#(S{IuDa?;F69z2bh}%twS+au@L-I z(4K;qS#4B(Mk|Ny3VBmMgsraodRQ*Vza=Quc1;AY4~^iZ@Uvy0oO`uI99spIW;F0B zI2+smhmvn^POt%Bqq(J;_FN85?M45l6oAnxJGeNrOh{`p4K($cyB207KW+5rRhH5B zHRVGRTIad-UNdc1tsMZdqd!$>mIEHvz*6>Oe(+Rnrni5uy3<>9cfLkfn(>_F5g4bN z>`pYXW6hUrzFSGfd}REX5s=%o0Ilfbg>%E+@U?@kB6-f9U^#uZCwxBVW1cRFCR?)7 zc$an&^i0M%M(+#PXc}hLLf+Fn?anaKKmW(u9=FL02H#k-K10k`U0=bVM0_|yc!(xK zls!4P9Uu*t9vN4u6l}loBNME!0_9x%{Vgx}-xH@ae8*L5QALlZC$Qb2mlYOuZ?MYL zd%y+I!1)$RL`K)yXR-Bt{J3oHo67J=i|!4(&|QCtrPxs7#177IjQ$$iI2r{`f6En6 zfn@HW>8LlPn!V~2>TtWhTW#!cV%R{lgVwf8NZ{<$%1s8#Lu z4K=Jh(b*~34=sSQz@Nmw#Fp*FLP@MGwE>sqtxb#zqpfC4JTgsNBsIt8V;0r4R@*RV zvBw%tqgsfFc-43)iu;zfS#36P-Q{v?yL2k|xlZ0g;b&XXjXOKIV(?rACk2iTe6Xj6 z%kKVh_F9A|wf)W0`PR9ETUupsTri}`%y4tlFKuGBKMDWgV2C3R9%W*WyRg!$$3Qql z`X8_-k^uxA-`((G)%821_=scQ^pb)5Yh9P~^V?d2I-FNaLQ-#fg4BWijsy0<<{1b> zlg3m^eL2@1U|{;h*?=*XPGDG|b}hc&(z`0b{IY8kS&rudcJxj}_)AqxxZVk#j_hAI z+2qX}IZNdpB>`||4xWOMfggoG#}KZ};$NL6Yqa2n#GnRYe#QJ#l3!o5%Q*K<fdC5YuSy&-%AezBq*&4X(flNz zcQ!KkYjk!1(9=$u@79cZ7nq9gkythl|7<<}9dA>@l%4uCPQUXNxwG}DXWykwBv@sE z@hE=W=`VQfN-`B7_Puq?Uv3butEqa=SJk2Fvyjr%e{*txbyi@_id@i)6v8{;S!pmz zjj42efr(dHAx}Ba3BFpR+NairJv!!VqwRp+5D1EV&>|6}1=6wdXOJf=dW2Ol&k^b$ zopvpj1$yaSiF)X)lv82K8%|q84EBbPU_8Pfqq?V|tz#u>2Y?EC_zn>Lfj78%7fg29 zXPE^U?8^r>G;?}B$ZiMhPSRj@)qvcZi+tRBhuuQ!MdMp7o2gcfZ0*W%JFK*mlDprj z6$kRvv}SE&%bV?d`HF6if(-1sh+)lRDHVO;wR5WX1wAwCWfv5wr@?5&LV59PLb;e< z2k9XU4$$C{#J1oLSU|bIe6JpYTB7N0?!E)0It=IU4qC81SZZr%JJf!PeJfssA-Rg@ zt+SL*yEnRMyu_a<_-Hy&O7e+{)~!nAcO^^Gb)TXjn}I^Wl$4SMm=inkjFcR9KeeL%WFd-F4oyg z)62?poy%h+-D{vXqUic}$;4t&Zmf_F0usX+toI3gJ{Rmz^1+hxcwG`yUgkd?&(t3L2mAQZ8Y6=Mi)FfETHaX}ZG~zLuxHAjyy+7=n$+ zUj*7bPeG;El&`k;eW(Gv?mKq>giwCyt3Q3es)0)M2YC7JG96SLaDlcnBv3uDKi$4n zQFLMjQHa2NZtQi&sMYz)=Q+$ZpMr>GCr|#qj}-wPs+%#`l9^U#i(NPB75f}`2%6pX zaKl@A_G7i5gU!xYCv4xl9M|GBVs)4k>SDpxz-QAw;Mc;l-Z0#}oozVrO7LaZfjBl? z0HtH?<$)IZ8s$dz98#2esN?>qHwe?Jc`Mp=?&|&FByQWA@S~7j?2%_xFZM#p<$Z5X z>=qd`6BezaD_~tu%mAYwr0!bD-yZT>)rH=u81$mnWmpI%u_f5g$0_ldXQG%ze-i$u z_wv8Z>;C1v{Qm}kCctN-vA^$OCc*gZ7I`7bW{S}m-UdNx2k{RTL#j7#$@k4&;nH^8 zOR|tEtWr8(_5}p=@i0kB%CIJ9`ZL(R{R2@mr}shuQ*%@cyg`{D@}ZX4K@awZ($52p zKu^q7URTU1Mk%h!o5k0!mux58S_g1HJG+5a|$# z3Zu^aABaH|<7x%;4;v_gM!`P^Vlj`9RR$qN)Qnv-YWPR0C!+eNw`{G_R|4Vc?|xao zAfn{Oo{llj(X9i&13AXP)->WgO^u=;HXcs9miG%W7zC3s{o&1J*;#|;x$&gQRY6Ot z{e^wES;w4lz5^jHVOjhmOM+@p3XcILiPh5eo(vf`g`u9ozS_Zrh@YZH%m|g|qXqbL zZE_9m_P3#rOv0lqLQXf13Ywo4GI5rQiJ5&;hhrT5LxQtAG1SQ{nS4LxyiZ17tLG6p zm-Sj!tySvCR#%e*kILpnXeO46p@hbeQ$t;|Py%g%rv|sLzMs65*YA;V#Aiy9iAQM? zAs_N?bVubt*eSgMf1pHD9YLFZHvPPk_Tsvtr@NnuiM!mZcjfV?6ngwqrAA+Z3Q}>s z=nOr{D=n363SX&)d7B8T+4xU8e19GvIM9^nS>Ex4aFTTPEP|byxvHObGh)K@vGWUO zE4{8`*A1kNI%jIn7^q}=a6$Zh<3VRP-UnYU6Ilm$q6k=r-w0_lPyNxD9#g<`Njz^s z?y=!j_N|xiYzX)qBth6A12|c}YS(w37OjT|_<@N7wu77BK#Yg)#-|fE=Be%^pOndO zHo24hayN{-=HLB(w^&)x{|aAmCM+_*zZhlMmb&kCTxZhQ-4$ITbxqICV~g)7t7R~l zM5^gQ+g1Xt&`Q=8D`=~_(lhOV;l0Za3b&p{U95Rt{4s@bCkzs^$G5)&o^>6n6M3`+ zS$6$Jd>C3S*D(z{k^aK3GIgL$dgQs%WRR#h37?T6d(eA+OJ_nzoFn3!xuL_@Q=3x> zfNxkLYF3#~nmO*IKJ#?Af+ITO5?853WUggg`12$sntM8=cSzOQ(A?KlZ`!!$5&wzy zEgM~xg#sH2ZU%S`N-Z^S9&wuCfO*Tr(&TMFPfe`4NjYPliv85<5;}#R=R86}T(_(1 zXRvj!@S?CJ$8;&QWBRQ>uQg~@-*)&8mQE@)A8iqC=f3$x0G@i5xd%@K;VD8LFIAQQ zfw)oO)by)V8S+h|FVn089)gGTT3oT+&R&F$_&Rpt!Q3Y&hU8HBMB|r5j*RM$uVn*< zO2$M*-Cme)bsc!1wsw~QJu5{f%zN2>D7T)AGu5~Bjgf`mjXU2HPKh-2v%U+tDE@e^ zpTqio;1BCF+Ae8w{Ku)KyPB!8jw~iT&+;5@=a)I$Y6pG{n7hbwI4#4s6?wpi`vxtyGB*>Ka@EpU^VgwHs+S&Yw zQDo^@*w5=*V*aM5Y>pT-dfec<&_U*-ZLC6>89HcqNpgF7M{wPxj|9h(_Q9!M8+RvB zt(&jP@#k*bQ0d4G0P`114TYv0ICuviuhv>sDh?es*G`%9JB`$yJPUP9`25_ZU2Apo zqWB*8r0ZY>mr5I!*QTK=^^jMutoT!exVu`r`{Mbf&&zkg36&56HuC0h;p!tw#;|as zVa+&=gcvJ}cL`A);&k{mdIxzg3e8IrvWsp`Z-1ZPbu=vHxm}odW(a+S zglDF{KuJ)nOFk`^^@NfvmWh$$Cud*t95-Uk2dq@8|FCLzufp6~)eqQ(M`FeCLQTKi zh=}EfKA9&+U5n;wDoZns78V{ndizqm?Pds7n0^W@;W?|;qNA8+PX7H|NWwF9{21Z# zpHvS+Isa6X*cRmlj|&%c+nx3VcKOQ7UB^|37F{gYZzQ`II}B&mcb#OSg*1*5oVPOU zlYn4XQ1+YEQv(*8pi7)bbb@uAR{Y=&c*6I=@x|nhX*r{;+pQV3ZA^Dxya{3!&*NLc z^5`+49lp_XXb6%HBAh_0xt=Ls`(8o7YY#OoX^BKhe=K{8xN4G!nxF8teVc)FBe!J|VbJKAlz~1@wo_7A86YyMYh=2KzqpDsIJ& z{rRel%!QKgD2kx9Mlg0lg>~@aWsOnn#EUzAW>reY3Tr#Fxpwi*dcVG=7yxATIZ9GP3@Os=86vo&T2F%24`yg`fCvmW?Wgmo8lCnLZ zDVHh3k`Pjvh!<OKf8ClB_WO-wf#fhFbjJ6jt^O zWrI~lOFDuP4>+NqvFOTphC4`yGk)TL1Tgp=qZcXMpi9ke+`}A2%es?ftz>UB1TW8K z5}@ae?L&VURj0xhZf^IYO~8cE3-V@<2lf@s5h>U9H@XkpRf%95bFO$#1f$Y3HDBP| zPK=q;E!eSPhYPuoNWVM=3%H9%xzOGX6yS%ys6Bcl#3)k4jEVF=?J&2bLS0dCmNUNp_= z%ayEOHNL&>zFHHamogmW4D%(--=Sgj9L8bV!_j#%z6Bw=JT3V%>*Yo!q0dGtnC*L* zhw|PfTb6^UPI`f!ASz={qY)uUQz5%oS=m@u9iPa^=e!xRc*vyMOybcCVXERTKRr@U zi_teD>{^GRhzBTGonJMoE4^j=x!e0}I>{jiF;%A=`{9&GS>kfn2Tnz*T=WU@C~@`c zG4p%15}L;}%M-SrN6{RCvz0vBk4n#)L4^~;UrCRyd5yOfZdn-Hy5y@EoH=^6v=#Ba zasH6jDzX$yexUeA8p93R9Opn8lan-3MLW@nX?sl>!Tfp@{tv`R;={3nU46g>I{-2> zna5=R-B`+*@F1G4a{%VWzTHQ+Ot;F~YWrZzR;!~m+b!a=v%#|4;mv{aU^5Owb>_eN*LumnTcPZF%pgSyAJxNE0Ql~4gYy%{i-Djl_PZS=Wq6(4mxXDS{{_& z$reI6%0zb>);mrUpvF?VTh~DgHSC2{&F+`f!KnC;R-h_Hi8*zx zZf;U#kR8x)41}R=I){ujze8|DWFf~{t16S0Y0C>$Peo22{(99pIp!GMfq4@0ZMjd+pNl6pyeCELh*&8E++LhYTJe8imvr}vtJDWR^E+Yf{$98-XxKjx0fr#$ z(GX6}HIyM$Mv+f>mBqeT8n7%{SQ}i@Vd;rXg_nCX;z6k?HK>YVXLRqUn|?+K`wpuq zuD_}ty!W^+cAd2KmgwUnClXW*5lw8nPk-mV&I-(Lfj=~WCpSKSea5&@CtRHAh1&3T zAP}Yn*Refbkw?F}Y0Ac&2pNTl1BUNmF5pz}fCN5i<#N+%RNLA7igm$d;egV~oYZTu zvFq(uCp=FpwJ&rrvks3ofoXzeiC$9IB@O4qT~YO5Vx)cgvXBs@R0Z?!Kg!6|1ICAB znGVe14hl2zXV2&h)w15_rIr@;Wq-b^kF%ypa4JoD$Tl)0183l6$Yz|#DwG>$U+|27 ze>zktctg{xHX~xhKtF*=%Hdvv`JE=Pfw_v})*s%+z9MjkSIBxE$#%@T;-o5f@2#{& zK+LP)y9tx_njkBiD6nP=LZ!}72P8^>xz0!anWZ}y?0N_%gSt|hVUsW zTK5|{-Pq@J^#hwOfvZ=eC%H&R5yV{09HqTtS$EZzrQdSa|#Dd+YhR zc_O8@{c5I9dcQ@GV9b^v90b-ZQWrRO58jN87D1{dg(1 z;z~VDhLc~@fJyLIyJXPu+HhLIQO_E#xl-(Rvq0#tHzJ%nx2QNWZ^{B}j2*0X3;h13 z{+2zzF#q_NCot=#^-f&>{Y<@&co*I2N z*0#qp$KUFjb|tFaj~U>RT6o`s!=pWz;qDoF2(m+_(e*ghvl&y446eZQSUy}%H%lgQ zI7JqVtHw%%oy+M?`ohK$N(;}$JWAE>4UeG73Ph-u_S)y)&v;{!Z=l?L!gew*!Of44 zb`cdht?RNdkn&iy^|+hiCZKiY;wBKg<@AiYfCD8!vk4DjNIGh_mwdTj=rfXF+VJ4r z^`cP0`B^)B=4Ke2tw9Qnq6GAZ1oHnfv>KKS^Z#-9bLGpna)rCQFo&$t0ygi5&Y?~n?;G&i^ zH2tH?HWhYy--{rEUvnxC;tLBz+fBWEKl(EsNlgSCJVlQriZ1soK-;@LWdJ1ccA{zpC-?8e@ zh@W##S=HT?><5=qQtwCV2#N+7>N@R)@5T(H;ovbkOa7EGiyOz@j#~lyfAiSS&oC3p zmX7X4^=rHq`U_>P3teuLhi93Shu}uw1K_{d;Ue&5iY+rIQRXC_`?}M(FCBiabgajy zazxUIrdtoC{ff(#c5Ppvsxl;vHYrBJS?bKWgB#8`csji3*(Fb%DIdHd`zFuMXu^y8 z^y4TcW*^jI{ahpVD_}sHP?($cU1RFbk@o}cTpcMA_SeZxyK(QWl)>0s&s$p|_%tMn z?m(}>JVwMK%UwHk5CALV#u^IWYe;@<8@;+znbud4>IYpgIwN9~=;oo-&$lmspiYC0 zHk?GWk_}rhe12R7RA1AuzWE7!273~0$tEEuWCC!3!e{06HjT&{;a(Zk7y+|~-Z?z& z?yr+HQy!qC+zd3;MsDf<8zTIV-QHWg6C&tg+PVxm3K0f)u17*t({|Ia&#GT;9Op2f zsd{pO=RR=64p7mD1hN7M?hVW|7Edly1w0t==55`Rp=n`SvD>!+t>b_GAdosg2*kv* zuK)WlpyUOBJz;*B3|G=1riPaE3cdkB@eX zi~|}7UemhxmYVlP2NRz%+(oW`RX)R9(Q;UdH~3Oh$1{3fS5^>nm{i=WWMdP32-@Vp zDX^;szy6qr;{yBuida>+L8!0paJ;AUnaR(<=WVj^BE)5j91z3hLZbmd6umyjQ?w+AXdSl0B9#E|F^HE=hT8&9M7A9UMPR7nL z(j&%DPa&yfpG_4}8^JF#l^tukMS&yM(&XvdPt?+(mLCrMcL=KH>PeGtuMZYxyo@v2 zowHN!e@N%a3evNuC+jgigO=Ghtztq6nPtan)#}%$W(Xfb*9W5Weygwfc&INyQHu>c z^eoJ5TIMP0Dh1ny;d7?>$6!w+A%oz;Xhq7C&5oMD67KM6 zn=^$E(d4cR-ON|EI)`fVg;+O!cW!n}z$^OK{^SROF=h{MF;#pRaxvq;V1zn3d2x@u za%^LwM2KAqR1~r+M?qihU*jCH1IF0`gp~ekoNrMVbH>cy~6K5<6Nm6ML#ME z-XE4EWhAJ4%3W!^+^tx#232YmsU92eML!MYwUp~}R=~mrFY^<0&_euA@9e4Uq55CY zgR+9O6xpdBm}69^G5Ot4;crI*+RXHP@QLx$TYEu%kR8zcoWe8-*O>?COd%*5*AyjH zcvK4tZN~u8k%qnPv4edA4rkmt_y&LU}+2nW~bn5R*)vx9!;4r{1oZ5e;}*3=o$H# z{xcxK5KDiy+LbeTmO1hN@z{9Pa;6Tj46Pu4cVRY{0M9D^za7f_u|C8d=mGxM$z&gB z-2MlWY4Q&Q1KpDK{;jQ-;#`WMmYaALdQ*Z`%)#rTG<@ z7Ca+F>OKFh(Q`*CVwgFCWJxQ*eb<>^h+tiJZ9`J!6|xlVOR4Z#2Z{1q2etLjX3P6L zJOX=N1kXycE+#;4A?3hxdDw?uFrSzsoSH0X^FBXE;peVUb)R0{=z?z#Dw|dHSjXCC z5MZG|MO7nHVBSQ!Kx^fn`S#M~vXr@){7l$RlcsnzZUjC)$~dZcpvM@{P_JR}?I$Yo zTB&z#Pu)v|?QK`RH;%f~?k3_Ub`dv6Tl!F-KI+R~R3jjp#4a>Dm-z05kM5=U;|?6q z8PxOLJo8y@8ZVY{RQ|K&Ght*SF0SU|x3KvRr|gxz8xI{mJ>l1}cq^FnYd$o}Oef^A zXwtomy>;V0u0v3LzALwf<-H0x-rwH8#8>goRkiqqoO`~V%&)@`WLCp%`WuYH6k=`> zOF9R;LYyNy8yeRbJIh;NlALlF&0lof8|!L(f8|j9Tcg4QOf;5Dx^1&IqqhC+B&2O+$Zx|d4SZZOMB`-y-^<@(S%tr5*bKdQ> z*G33Fp744a1Ddgy^xaF)7s+bv4QN@`i0x&y+%u+0Q_U_{n37;0Cbn3g+tvB$U6=uz z?Q(c@peQwIrNfkr3#ZBFILUfz9WR}nnVM>nNV0d!P;bmIVCsUs3xen+XO(zaVe~2D z@6xNnD?|cre79W79J!k=Em4dVWjYK3}FcI1oN_I_`4FMd+nlNHq}tG`4RT8+gKTnsZo{ zj<`%2`4*6ev@%$A%i=J-u(GLaBC=-o;L*+24G|9|ZpjI>)|?_cszxh^T>Qv78tw-fOfr!CaEM}oAYWaHq+VMo)cmwQsjT%ugez{o#=B`-6DrQ% z^98NnjebJq-K4(cZWA%CVJsrO{)Na=AA!QLJ zCBfBZo`0wWtxVzGO(yH05TM5v3vCweh|L?i6z5cQdu7o1p7Ws&wN?lDYpUN)<;1d2 z)atT*;I1(_ylP~@tTr2{GmN%XY@RSeUn2FwiFq+Qve77c7ot~P31i@borvr9>zH2A z10U^ph08gwY@aJ_VWTi7Fb+^|ODeL_%&b8OY-eL_;(j=v&ZNt{Og-%_^5eV$&&Y&M z%9z6a9KT~LY^;Q!#bAB(9r9>9T!f}fa^*rFrNl?V)QX)dh40n(?0KA-H-GW|HK#-- z3HqjWC?E1YJ5(Wu++00FkeqwJ7osPR!Zg2djjVf|9sBUl^G}sSXhrFd&wo`WTb7OW z?`om{ltwR}SIs!Ca`GlS1p1-&Pvhddq8d<%xDsSY00wG?hR^VSsG_KUt`XZ=o0ha4 zkPr$E9K6qF z8%Yc;rKElrv5TG2th$@HI>JfZ9o*(?rENGxgKot zc3zkN?CUaUr`b>RIk1!nQv$I>%(zACuJHSVqT! z?}XRZ>EueOyVdb6`>~D-OU>tI8;N)3si6vn*TwycaL$~swJM+QXpr}sLA|Jw7p2IF zAD?!+lc#iKkAd3gp9CzQlq(O(*f5KAUvZw%q}{>h@3N7mD*;jVDSg6cCABW3G-`Er zej-p!T6R-66(hZe%l%`O6$?iORs0rBq}@5&+~>b`^uC+ZeKwM(_!6db>|>t8GT7f3 z?#9OG-J7S>zfKjfi1bMOz3BcjImqFRj;@G}B8@K_<>OCRY)h{i_m;(!l^Z(=5VE}9 z9Fgi&Uq7GsNt<%NW;49p->VK!W)z66ht`#}W_r*w7cZ|SH8Uqyyx{NE=qe?4ZqznpX3n7`pNC@{l2V@Xxm{c>}%hiHr-tKWJyU~a=pH>!Y!E~yAPT+!Dw_qJ#~RB zPT=O5ipKM!&if4P_^BkTrp_Iow1;TC=O2-Bua)q^EgW8l9nRMLDZg`0t+Jw?dF?i# zzQ)qx(1nMV??b}^AJQLzgK48LTR`K*<;a%G8BU74%eO5J+0G0{cuJ!|fz(^LBjYQsfRwkM{~0-(2aj5_pRG5hD;@BriXI-#&Hvo+IwN(fs+7 zWpTHKA|SKg6426%r0M{3;%KOMzo-M|gqn#N){;CaV7ANi_UVbnv|1SH6xTx9qbQ9O zxg!@Pc;DUdoP9$>&M6)OLZf3aWFbuhPv#D#ndWH(;})yGl~qSBU6%Q=m*FV-AvP8D zx{}E;#lX0jo7BhMyg7kmG|a666EKdW^b3^D7Cbxc`hZ~=+SYb=mE~Jy-PL11N-ZCJ zFKarjef)dZ=|gO~^|GnM3>Nf-5w98XW#QDMp@-<}iMFEy{bvPSDk+4R$9Nyu=R~7; z2hIN5#*jbIj!Yr4c{JWBK3G^F&P*pmnygnQ#eb(O+Q0krLdp2a65dL;*|a5UA4hBEbgTdcHe>p_ngml9`lnLO{bZXcdKR*M`%hT>kT|q zB+}bB(UZ=(v zW-rBnY!#_;@W6FGiQ#P6i;$0<+>@6oOA1o3ii0rc`Y|#NglUI|Y{F!I;JnY2)t1$l zF$R9(HXB;xV@M<>I|XTXmzTpXM!^L^d@pZBLH5H|NFpW=ii<4`InVd4p^kpJV7z~n z7BG}XvTw(Q;`w2SPc+4!-gv6TXn#KFshW?li&Ye77KlfxDkDyR&wLQ-a#1#6qtz2x zlzEoCm_Y(F^Rqy{kyo*g3nsdq+)ky;CbV5haVu@VH;`a7nR8-n5artPQ1MkA{1X+~ zQt4=uyUb5{NSJ6>O1yG3^eWO8@&p(~Fyv6lCiJX8CfczPwd!fbb)101*OkR=AI>V2{Bhi%>Jh)bRW(MAk2D=p{vLMTBYO=Qjpc&bfZGiPnnd4_b(q%Nd*sD|>2okOlJWJ6 zblhW&kusKdS2PX_5sq-?IoNjfd%>R|$A|B))W}kONLB)7!A_pJ#`)F_Z=WZV7yG(C zDOu?0tu{w>Czr>hZ^I*yW&JJOk)@924W~H8xr$P=KOv_a(_g7CiF_0=OVU3V z8x?%BG}YC`nIS^`oUQ<+@d zMWauh__E~l;9j>m7A-=BdXq2_Sbo|S8;W8Z<)H;oPhYb#^n*B64y}=RN|HNIwR+TE zRXQ@5i;x)onL5K>h&M9tAv0R9LQTmllNfCuNR2)1=Ehr=BJrPvZa4Al8j*h{vd{R}9_n z_S%b}{dVDrn zZBC`OM!S=ZkZT0-mIm7)+_=v~TP8o)k-^Rs7y?3iv-e}ytY@Pd>UgJgUEz_b4{?Lt zJO-!6>*sGb4eONgNsU&Fp;ZS}T?MA7ONN>L0cLx~RfBfjE>$UVuzHm2R}-S@5vlh)vU5Um7}}iiSe!+p{=d zX?_w>;_N@4;AtA-BBy0iX#@<&#*LbZg%GFXCWW>7iuZ{r=5;6kC=%f1Gh2%dvWYdJ zGD9dCe=avq9=8RFNHR1{5zBFR`jMF7c>VSxVa?p1!SG`s^lnZ)-IK%++sp<=5-SWJ za7x0ReC5}HCo=`(Cp~A+^?^&LXYJ|=qzZ(juBDTzcn|z1<@H@*y}@?HKaWI*s^^Ei zr0lwyUNxkjP4~~DG(+m&Ec(B->DCwU*yn6ATGpmBJAuoK=rZGtK^YT@Px0dl;JV%W z`A_sZ{bB-~!C_jF&d%Tcw2zTp66bV{sB9!m>JsN`aXEBGTMe9Um1i^Mf}3Q3r%j4aa9@QO17iY$@w1Z)x{rz# zd>u}?cx4c5deZBwM`CQIYNN!E5Pj}1~i z3XJ|?lJA#)D&BrO07x#46Ku#I{^aX)-z#;)C+CqUYKX?;^MjYip`xGB{oeHh&Pd7L zU;T>KcgvYDsrc3uGUwL=YR&6lof_Aplf_pnfMxL4dOFP5BB&YPd<+#^O*Z@j;=yF; zJalG{WZDr-BDgK#^q){kXiu9SC@B5j7|_dok|&0na4CSnWg;JrS1&cU#{Od>83z<= ztdMH|cyAYxTUj6O(D9o2(IEK^V~l>TdpusYy0=T!us7ft z5(5#)a{k>KO2tm;`m)yc;BpP~#>gQ)eI}%-%g;s&Bd;hWEV|pvx)C)RuAjUZa}X-p zMh%H>PH>POoxZm&EYWXYsc5M%w?3B=3Q4dRa9DUd6}EIirvnk2tl+6@+=n+H`+KV# zToH#gIOT|+_26i|0||HhXjZ2286kbGJ=77qhAGf$+@Tb@O6;WIwew6Gv-VKGyOss^ zZola8QPr{G;4o@~v{1WJVz-NS4u^$pf4FImIePlhKKm^^^1eL=nZ+3_U)$H%7v8w#BuWUhl>zHoY3XN|BQ!G2?K<%D1jsKPC+X*+hE*#cE)UIX7aM{5~LAb1&x z-Us@=q*3w`jhzBtvnw%y zPu3kX8WKhcSTeTL7r?&mHUatMv^6q$;*3H`t_tt>)c&kQE)kSi_}lbwrVU%sp2`tN zv@bbKbWkqu_RfG!7SCzdC%MPlqt`zT4YGB@&u&CMqgNomv|Y{XIs#29Rs!4h8vK`M zaqIw3bdVbY+!4;iQZBh%0>V7E@IoSbC;#L*u-(soNPs&E`QmQ!4#~=j$~>y2p9XoD zI|?r?#)ZmJV_$h_w6YmE+}W5l#PjqXoQ<}ns2qNn`^ucg!88=gYDH=nM$cx)D-s}N zG5+TjfX?-|IUtV7e4chEMfB>Mn+VW;E@Z$9aE;QuTw;`%H+hS_`sx(A-r0bbl+WDo zF_MjjTdY+Pf%o%#;3UhrS0rh}ZTjp9%19B<| zT+E!w$Z`&%o=2PvyF%!18ZuMVbWRk91}E-U`+o}){{2VKy~Aj7KW`<7qB^>Ai16(5 zz@_%}aV&-TseVSjTL*_j;|dA6f4iVSdh6A$*}09E)>yq_pOU%zf76QNn2D?Ok=Mo? zo!aJ~S(IdKbo{AoJ=RT8HZgNXgijZX5vV}RALq1Mdz(Yv7tNYFr+>euJIvZTVtiH| zsOxh?Qtil>u^o%-4x5hdRfo|9GvabGM$T6`e#?t;1f@P0q(*(a;LSdJ`^T25ng0Rz zg|{4I3O$+Yp3XkeVHhoEYT^Ud3UmAB=wQnyQNZD5K^jZ5T*A~*~Dr*%^+1x(fAN<%l+LD^zt%)ELqI*Sj3Pp z!Cu>O5YW$>p>v1xChiU!O7<=L)F4BG_AjU$t?bU-m!*$(fUa#0+Zp*oHy&Y$R?l}k z_(O&GiJ-mFaA;*ALFWrr;4<}BNrhqQT!Zo~qVo~_U9R4gY4Hz;=|jcoAC&*`U5x)7s^gZd`;EL-{B_}Qadk6YSWG>M{}J-e@-$kTa~qtu!HT;?aeWbINwnNKye zUWDnOD`3P+k+7f60TH=?cS%i@qj>w2UW?M(z4*T>y)470MhyA>+lKhRi|OC76ME_O z7$IrNgR&8T{06dokOPE%eRg+$%4-Zl9?>4Ii`MI$^wrOa^A7Z>+?!R8H{lR%7)A+O z^s@G;9sVr~K$FII-0F}tyxmh=eU@FxMUS*VLAInf<*Ynshyzg(DK8n*ZC8Soc8t39 zS=_@op;8;Eo3r9o;>7pCG1jbdGG0*UR1x;%Vtz?3^x-R@MRO^)T>#4LZUdD9YQmp_Zyr$a>o>d8Hwp1fZj*+&KKCNy-SlOb+eXYGy$ z)f7#;gbr7{`cx*u^=DGH|Li=yd4gqd(}GCI*r7aulryq8=?l+ZNGfrY+ZJ&c!01*jqs-LRpe%6-VO7iRF7EjwVPYSr@FP^wgpgfqr$#gTb7^(DNO7V zRh@CMF~JDe)L4f;QNIT%GP!Q-?Zllk_3B%}{q6m3$UHh5kSa8U@%B4`>qXNQ^RL?* z3T2K;U*+l@z4WH0G5iVpSr(V#^yK#8vY>Z$0gQuD<4oy*k?nCoN8$JegUFt=>m1)& z%wlpmiYkNkU^<*!3%0~F73K8~bB79-zX1vZ&1;4#?|G6O102AR0l(9vT_)8vBBBljomH;jn;E1Dx z$lga1FH(-zfYmwCx(XXhhrf55N^q(%sX~6YBwl}Kc2yF3a2hYAExJ5~>y39uDCq)x@3}kk&k2S2SJu-g-e%yZu*h+8TNat6!4-&H*!N$ zpmFGD=#rjQJ9%ncqHCa}+RARAthQ{GNikg)@ZE;I`0x|2QI#?ENuhyp*NMm2D&e%V zgxqS1Ipu~xPqHp=%At_@Z#olOdtyTH`6PLcVKn{Ux)zbc`sc35=xlsJ< z&Lbhlmob13;!$FN%NlpeVmuUiesvhtHx;Ow68QwW7m zaFCfwC`R0AUa&H(Bt*?~XYQ-!1LRFqk=ZjO=o^btNW#sOFQvv5d}U&^cj{B&+13Ylq>ztm*axVdn_v)wdiJ*YDbG1=*Fgo}w&} z3f2s-jP{KRsH#{d)?Qm4esD&sBg76E@nvhaE+&mzPih{uRmrD+j=0#}%mEYFh+oDU zPSKGUhPvk1?j*n?T}y{4rAS4~vbpu=W(5xxD%7}q6MJw^&=X5E^ip03_`(^zOH!qC zjvD)z9x%7h01`7mkyQD?7s>RMIl`fPD4UOI?Jq;6Zi*rHgO=B!g{S6-LUp5y4L)F(r8>$LgZ%tiRG{0KS^G=1cL$b@&P!6bC1%%g zgn%#H=KFN`@&3BWTbefdM2rn5!Mv+%TC$onk+;W#N);ZfiZNm#!utk8_e^ z$gcpjwaAXw`#@dgw%3oRz;$B{dE`_Bd2*zP&LKF}1s9h2`o8~*Ya2*^*9EaLbqFj$ zx_e%wkq z3C{%}hBG^Vfp6BUs1D4tTU-7I36K_U^Bg0Qjr25lZ8(#UcDISB&Da+CH>V~(ShczQ zq?izB>rD_0yf;0I^d79&sr{~EQ`w*+24x&uHr}e=1WT(7u@djaMGS-5G7}5VjPQ2K zc7CioDH~9GO_)5shI6GCDJT4jJ0IM#|Bj5=}aC9#3b32^f>9pz7@#2iw_k3I19M3{|AVR`QMrU E0QbiEeE6ts7eQ;*-b8JR(v*gZRRl$BwMWoaYYVD& zd99c+YE|_+?_b{^Ik|F@bFQ5Gx$ob45*|G;05e0FK_C$L9$e1^cu)WD#Yhhv)v3If zKp;NDdwM!%K{nggp(6-Wo&~#QnU>3Uuco?5q*`4yyb1%q34MCw_{Q7J7~wd^!pq6; zoPFG9i*!6LH!tI?V&1A%S&_3AREFmlR5vx8w(EvehOHKys=|X*e{aYH^l_Vf)dqN!zS|?dfJWr@XL+ z=AD*JpNfmJ@=7@#o1lEY-)EauSvdjI;%DcJ@q#!usOmBBu$4G>b-q*JpZ7+yyE>=GyG`E$#KkB$v8}A-hJyw%?@NfEE;_0>-dy(<7{dO zxaGx0Y00c2nx}E$MQDED#O$~fND^d3^RCT-rn)-?%OhFl&4l{sF*p6ZZtzYS6Nz5d zx@CMITSdO+kBMo}eDGT4RGpK-WQNoedz+v|I;Dn(d77()x*-W2cI!}w*NxN z2k$>sI+_pNRdkv48^z!oR=~~`# z&%{+4)3FLGrAFj8t}7Z2ik|bce!KH?6;2!DrH->r-p$|R>u87g5G?`Q8}}ntUwt-S zjA7y&z~4)oZL4z}lti*i?AOPPvuHl z>bH2R6VGZ+4i-!@McNROc=Qdk)^Hu6X~`m5en@-AtYF*Rcl^z^de^K!+-h z-VZa}BX$P{QMwq`EJdrm|Nc2lazSeblWc$o_MqNw5$5vLaDag7^hd8eEH`^;v)N6^8blJy~U z@wL?JCR^igmuVQ-6!<*byent$^65{RXBs{87)ylkzLVC0%}$2Jn3BP4-ys#pIsZvx zYgw52p?WD3`F_@&K?2ZOr3Z$@vy0!mgI1pHSfg-wO%&gkL1||+|{QYruyvgN(5FnlnSZx_EQ`!YGvdJ2*D=e5>b>Vvj8>0 zrVQ&Ox(jMm33o_9LxR?Xp~hG?xho(UNs|J>VUPF4mt?@WJJE_ne#?AeC;?hLn`le{~-zq5c5oeR6WzR@cf{z}uc_M7Oa zASzv4?|X%Gi1t^PrB4YSQcAHw7FnNLK3}oAYN>xn>0uX3bY|J&Z1!+zcs^CzLL)h8 z=)<~CWrT~OF@p3*uJ9Sj!xe?0E;glx@e93?SY52YAV&nYUyb zII@KaKgAlQrB)91C2~w3sC<4CNU2dC6ZT6pIGPKzU1RGy0ea;2nrSv_A(dM9O){FPGKO9dW6q@)8 z`1{FCL{Z_W4+uf101=Sv_HZ$fQDG!Vs-_at!iVXb=?o8V4@gcxKYY^AIui3St9pB_ z;)_S(7X4tW*OKC3yZPlRms~R6@3p*eoVkUyqCc__DhVpD$?e07j!jWlyG}EzeGebB z8qGci?oY#{h2TX&!wyF?V{s<%_+6gXty-gQeAGF$Fe~HB$x5K_2cTARu|n4i|Hd!}wp9_Tk zgdC0<z#!AtPys(A3L+E9Texa(`Qo5&HFjQGpu1@wp|hxq`gd7$ecl&=rbk4%TDGZ8`Xbg z0XX@B?_niLc!pF>&RvR_Ku%C0YaUQnn_RH=q+sVW?VGodU+o93{f32Sj}{uV`bW}! zy0HJGCEz=7TLw?lNaVKoXYq?GOqG-ry-qz_Y__k zj5b$&*PB{ML?;Vs%?~CWuvL*x$t8IOn?my642cKQth_Dtov(`x*9wwk`Ua3c)vg5W zw}l1z9Fz8%`OvZttHxMOY%IR6<-5q^Y*c6Ggeusd)_fjsEYZ%{<4*ivctk7 zb3X@WT6F!7#B!Q1YP6oWsx>mV1}|z1Jk+$}b9pMH;s<)v=R`&|1R=gJK&sSMc*Am$ z)Yz@D%Siq?kS5w@XdoAxJ)4ezxt(!e01uM6*#&XIvcVp~Cu^cGOe-%9Hd4TQgyvOT z!T~Eg`F$Q{+o5o(W<)GCuEZ+O_ivzd^s4TI-t zs?TpR5nTy|)eg^oif$nsFW*WrKm2DU9R#Mv6ESXPJy;OAr zBq{TEsrVMC{78&1fPlR0KT~sa4{`w!Z&Yq*sA!y5wIoWE6YNm{^|KsCG6;C(?RNb3 zFsO~3lTNxttHd8T>+J{-=);eYS*`-eXO1eD0aiJ)-W2GjhtADdob4q)Vip)^LBlqB z>N|aD)x(;88<2LU%GORVYTlaGajwn)K|pl@{@0c zsq8AV{{@Jsqe`hoAmZ8m<(~stIQ|Ik2=2!|roK8^$?;Ih?*q&=4v&`WW&=vva&TtX7uVd9uV3$kMhwn5FbuQgXnTG)`kM~sVEYCJGrT>6~Ei5(uf42weO1xC|K?ewPp za16q-{c_kFe+p1t+RUoz)p2^PcrgaTNKq7`bDD1p#uZ@&%3Xwrf_I0J%3`KpT)(|u zvGN0@Kh*tb#%rYWZOoCnn#BF?r_jVZm`g9LL0qH{b61hlO@z_}vovxr(o>1{ zY<;{m?f0uAzj%R=55HM6sP9Y0@DTRbh_k}~^3+Zstavf4$jDYI4-v_ST7UeO1NyEv zvmj2Na#W-F@qU$Z=Bj98eHC~xeJQQf3u9)oa|n6)w07&AoXF9+iarY>Y!ghB6YZNQ zDg6daGd*6&4-k_y9Bw|K@0M@U6-17(R4i+v)2@R`HGVm9enFcy6s#%iGK92fu6oW} zpOGSq*Dd!`Aa*}=o$fYX3SKi;&32DF0@f>v)ntP@f6}|S@RJ)Lu6w&b>$r^R48i6g z5Yv~tg31v9S9V;?7LQom&ljc}#Sf0qDVbwao-+5JODq#pFHSZlj7nGob)S85`(>ZS zMBLv!27m?{3zbB~EDM3v5MZevM^+zQxx@C&$!&j*W-8-f6>~r|Gl5Ed{lgUgYr-PI z)_J|$!BnY9oOTbgE&uZHidn06pBb6*hjy(aE-r38FRa+>JK>3kR33w-$VP8LyWa^i zXxH8OYhx$X!1naV18`DhI3U|AsrmEByeuzZIMHZdvzZ3>xwdgGY95owdv=wVjC@4U2TCni2g3rpog-ZZP9 zTfQxxC@L<_2!~1W#uZoaE5)L_ZpGdqjMP5s*NZEE${Z$JIaQ7;qUG*Qe24eaG(OCEd?mj9dn1tLY z&`+AxTBA>|dRJi6?&srDLKFg5<6B_!oH&^x8|jD245e@99%(D?TuEMQ_ma&45!_8X z3jt*!4b(d*2HM}5G2z}@0CWp49_#W=zb$C|InrQZf^Yp7-8*<1ZCS^4rpc}MJ!YrbWUNfEA zh*R?LkHok#ytFkkEegK7N|Sz97RPGhGT*&otB&~a1Py30Y2*Gh5P_fZKkaE)zf+{+ z9OG9_$8$LscYn+g12Yu}J;lBV%j|yE@6gv=Xx*=B-4jfxM6c{6eB@-8xO*VNCi4v&bKB zluHK-wpAD;iEsy{3))MdMjL$4uIFzXVua6eRfYzALizzc27+O4&qTdQ*Xr$Jc?jJ! z?sa@9=HJJ=yI-!AM{vA>7h`-et`Yj>ekVqhDD(5w+9?`MQ}`Shs2x{~6UOjTq=!ov zU=H3!zvUsMKot81-repo&Qrtp@R(I?#mV7?Qb`IbyV;6QXrvY(K-iI{`f1H$gwi%y zo{^HcW^JGK<}FvmiV{0IX1oeusbWC!f(Wz8w`x|#@|v6nnblZy*treczKl6)x25~v zN$sG<7mjFtgDfeUacJ#*;%x4)d(c))F4CO?Hwz&6VkDsIC9Yk(UjKOx%X3^|yWjc& zx*`;iMQt1*fWxoMVDp?~nH|VcQ~LAjGj{}9l8=2E=;-I|KJy|zGi9B()bffevg_$> zMHJdIIIH%8T{>a5n>HIBKMw%xaz2#2kYFVyDqe~xiZoNd1Cop%qOSJ2nE-xFWuz5` zj(^RiH->mnM{mg7&1ZKF^y-BcqHMqIKu^m{oA{e;^c`#=)NqIXg{OILU};a8XFHQt zx~JFt=6^zu3MuY4d(I9|I}iYvI+O_&88j$2>Ag}}PcqCzuc8T6h9wfFFEMOI&+vGm zTTsSKE)EAQQ8jusS~axR%zVDdoGD zkdG0kIz#>~Nui7CDX==ehXvtcr6Rb8ds-t=PWt9{W$cSNos@A`8LiYpD_ngyJE)?J zl_WO>J`6*7Kq}Qgkf){9 z9a(i*)E~32)xgbx)DI=Y)tJQS79AcVVwmk2%e=_Vx^)M8HGmWMn_U;Op{dE_He-m+ zo?!M@qOh9a&Kd3giu1#>mFsi$Q-hohv6q3@6G z*rEkWQ6JYsi{>m8@c(WWnffIcsSw_pBkhDv%`sn}ZE zji!tJ(`B-0GnkQ2z9`Df2t=+N8?u=U`ko+}kiT4myC+9(@Z-<(0T#OpBuW})2zx<5 zljtjDIm$Z@ARYfkI$@%&4j`5ylnb1Ob9ZdaGDakzr4{_z@t7Fy1V!G2*l}a89*fMxGCRV4x9mpXV76E`#n_W4s^}BS zK(cmO%xXpG&I$3mmQ3-?(DXZiLUB>T)oSf=%`VA7Hq)b zn_Agc5sf{&QQPW_T|Ag?6{gx@=nM$jEQ^m0kF~DkH30_MrK{t6JIb}eSWywcclqFH z*7l)<$siF0Xn(?_Lhf;ysww3~tU6;wDQPr993-i41(ez(=+pv)NFL){EqY0dk~Tnf zO=$C4;&*J%`-|92YzdFX{uoIhSEj%?2`E!`+j+S&ed+5p>m?yU;vjX3o(+3MR_91J${?trCSC7K-3tY zBUa_d@(q-6_Z_52a6=#)lT~>-bjjF);!9KMUcSghUObXU{qz#%-6Lu?{>sPUfrX@=o~%AXy*rH|@g3HGc&c5$#+B2UsL zIM0IhBhA0e5hrbBQ7$l5eV{URdvXi@*35`77G?mD@G5N#sMAN!UNI5RctA;UemaC=C^IZ|6&YCy+lNnEjeOZ%Eo6}AbKWXEDHa-+H$Nn%H-pi?B&guq4!8R3= zOkp9GoxUVA^1G5ouF|0>VT?Ynwk>DOI8_hn`Ez1P00 z1Gm4@8*^UDh*ZCBth_h9{4I?$d$T@+ty@6>FYiLSA#c}Bt0dih9}EVMI_0j%dtddW z!$X1?7-5gz5@@n_>yi2-v6CqsF8kO9?7zqPWeE+Bi-mJ!tXpn$qe$}k4{@hSi2^g5 z49Aai18>--@T-uF#RTRR0o4*|GJW3^u)AwqA?-F5p=5dG<_gC!Wv%WU6Fp~m$=5$e z0=ai|CG$_)0KJn;i#iqN`G27KXPAm*k*WS|EX79k{FQzkUz5a*7ldNhImw)wCUL#1 zOcN^z%3r`DztSuizBaf)oVx6kTk9lMS(mRH4>2=)LY`}FWcf>};ix_Wq6@u5?xEZY ztHuCRuF4o0-!CN0%oVzHK(=<20J{}WFPJ8iQd*q@Xly^|aewQLdV-TT?*!3oIn~on`RMDmXWjtND+!1ANOkZkdFRKDS4N)0xT@6!k zNID|zX+#6~!4t~82O0Emme5LnyDlbv4J4_#{#y?Kl4E+*%1tDordhMN1(05gR`awA zwoE{(5$lJCmRq+5B*RqGS>_rY7AN0q(~SdKGG+}ToU`|DZ|mfTKCWCp(!B%;Xqg!1 zoe(}%1VF_X?8=jm^=TqCFKyIDQM0WNGK@au|SghUz+kumrYtEejJSS`gXnk5dszOBEdTBF|vhJa4!x%Sf$6RAc`O4xPD3I zThlCDOSaZ3GjoQ=baI*?Yu~xy4V{xc(8Z5@zZ49w6l3ygoTpiBW!cFin{63vL&!VJ zG2RsMJ8p5PdO&5tYnkh|FGjrzmdY@dH^7(wW{ro@Q$KP(Nr8>9wd0n2b=kxhi<*Q1u zUi0VL&c!q|FiZpf!Bj=qY)rFLC-g7;>J0yO>Dr}B=gwWaYinzD)#l+@)KWF5UEXd+6$S_?IdX z>)ll&N+U{BV<^_Cw}xhK4OJ?}fb;C4LI1)&|I+9L=cuLKwOjWd@CC8GuudA9nw>gp zqO*pt_JF^~I`{6<=Z6WiwE8aDq&?I{f8ya2e|8=AQ*@HS(&ysg=9~8%>DIlUVSl3m zBSxBx`f;?yq{)_3rcRsv^PIUh^K9oYTfSnY{i@Y#9JXxz#c|vA9eelfKj7--e$eZ; zquxHh`}&;>J{590^voY;FI~QJ^;-D#8xeP6?#AAWyZ_)}a!P7iddB0-Cof*+*;yN1mqsU7 z_|WX#xyug|wEE0iqP@wb@6d^dyXyaR;?L-$Zo|x%iVZgJdEUL>aEr1L5_Dc_HU2-^@xr=V;<-hwaa?f5H`iaxOSV`8iXICo!qHm#M)4@(ILq zI~Dds>xK$@oTJgO-k>gAF~eB8S%qB+Q(>ocm#MH5*HxI$WzJu$Ps@n9!x2Q?B+SEp z4jaBhZ?5tT`R|(3Jms-qnZ%|%$eW|%)_0jC$Uk<%Ww*U{6FedsYw84*O((C| z*8P05%4}#){fenpowjL4UE;$Ds$YbM{md=~^|fh?B0(uDi5OVT(UpV-6446VYfUVt zJJe&6n^ix|c3G95*6dR!^mJU#4W4C?tLV^aKGu$WzAh+@;b(0mn^0=UOt+qxlO9m^ z)FMq9DU8X&L*LFnVUpP==3K(>Qa|7L3?VqG(^+VH2X1hnQr2VtR znxp*Qa17b7#L|gQ+b>KI@4hyP+jGZU)}0dNg;iF9arVBH?TU4qDqNoUR}4F%yGJ-s zh3zo&#$z0%CWQD9pvIpsm zA0`G^?Y-t^nZ%z;Ja;9%dsWx7SyB0 zGS@VQj>1tq@{bCJR<*-w@!Km~D`(!Mrfa zsOQq3ttO=Z>fRZh)&H+!z>+zb{^t)Ag$#_Th0JniWeWc3{dU%hJP2RQotq}$zGS10 z3VV6=D#p=RGKW~9uc3&1&dQzB_ID1Z!jhJdZp*$+XAR|5GFLZswGEY_~$p`W~1yHpRI50h8!h|VVu z&WA|SA>Q62UiVdD&L1jSveA|bE-O_a_a@#)z2L97s3#PnKRd%s6{0_T@q)yzU-HBw z{7jqddGL251n_q$W^#C$-@o|iX}uCoriyq9KkmMe%D1mv&xs(C_L6Vm?_a}O*lAi9 z<=K4{ulkawHH5Mw>r@z=_(b?>E_Hs~2RQL@u8QZlJV1qsjfc*^?j<~BFebRREVp2t}HSa?%m8T913pLIO0tzWkkGYs<1_&`y1BlYc$!z zkI7bHXH8U?3#q)#3n5BF@j4Fz?*B*lvup7WmDDBA?$nA8&FI=f4l2>9^;cm}cfyI8 zP{OaX$%}fq^HD@UWhSBE{NN zceq58Jc&6~#%*@Gdr>cB8!wmH?y;eTfga!2-|1_F<&a8^ggXlBVbSRjS(lj%c)aLs z`uu^i8hz*b${_v0otw7CK6iiH)i{&kxk9uIP6dLWmzp$XL1AN;0x4&Hq0 zeZ2KbVZwxXtBTH=63731L2wQ}uzqr3{bVguVew9|>Zb|)aDDay2{&U6*Pp#Lg4ihw zTG|`sddaM}?k>Y2*GG7D8_-kV(a7qg)5%NxNToNqi6?`fA+saPV^!F1IMthXTZR2) zA`)(w+Z5vO6V^^va)s059gg>0E7g&)%7Xk=Sgg6py%0^?2?*QJ7oteTG<3+kA;=+ONVI4KNS5(w+}cDfI_YNuWyV ztgMIhPpF4XIO&W*R(4|NQlT$d)>GzO7QIUua!GmQmApo{E!MBvS-5`A7{Nm)Usl!L zfc*Z8F=hML#?vaMf-9OMnJx{c;M9%=l{?Gksjz6a3cF2QTvOO&?Hc-4guBtjzUUyCZ(c@tTbom_25X6({VfC{Nc}&_MF&{hPD5h8eLuw7?GMQPvr}{`w2#bT z%Qx`kCLNlk0%G9(;tDJd7AlCn9RVw_iD%ONU_BdK!UlZV&`RQO8F(uqNI z;d?_FQ$Azf98^%HY5!4~iVCU-o#ET2EIGHO&X#wVEIp;d?$oB}6*8%QK2VszqD`J_ z!Kxu|6XC^c;OYw%!iGNAYMPcPYbu=kX9^Mxn&EuZqEydFsYL0;>B8=(JY}`F!c5zZ zAva7t>zqI5YOOR@L9zZIock(HWn$zkdBD+vn3?jLR4hKQct{Hd{GZC8*a##5J^8mVI#>) z74{~}w!x90Ae6FXr-@`-$}`D~_0wx0ci0uw#d$mr$geW8j+E25Ikfq*u{aXBEHx(AwAPp5&NoK>Fq=j!$VFP7Z zNzGiT!mF%CK zf^LaW&mKIIKubK<5DxlzjXOi}ZKFJ<43+AA>aiBuCpjyOx-`6)I~sp8`BXeb%?Y;qS4@*3o(R7R3*ja@Y zH7iHTE=z1ua4oBDH)I*wktQ8qAbzJ5{fZQt^sDanxL`A#ys9k#%% zCQJse1yy3-RC##ureS-tbSgAYcHzu?J_jRK7&K|f-KZpT5XXYbrKU<4-)O^maL%*@+yo4eBp~P)9vB$i?vp znlP93T__3i+CSl@Z12*E%F_T%B)xUtgKDaXZAigJQsJ*>9vu-axqH2R?|(A?|s(1+w@91%)XM$j8?{c4kN?< z5=!UcuXY#3RHnautX;X@pjk-=%TD|roF{`n2g_sSc9u0mUo^_sAmoLN18B@~%T(Ke zd%}$#ztLnJxA-qI*mB+zveobhB;FZ9s04eU#xTtqA65>RJ3R8c!tO%BRA9GQY>b6&fjWiKwQRPJQzIa~52MOyR z_94xeTQV9`c?Av(DJ>mR+HfMDEFd-lvK5Pvt=J~AdMK2Cm*oZNB@=>=>p}i+1IUQG zlSJDTtmt%6ulkaoX`Lq2Psyym85ZL4xvqeqrebSb_am#txlqZ81g0Q_0X%EzCL-Noik7jc}Me-A#u zzD`M9;{3N%<+eR5OwkEqF&T0Y3ViGmIRtlRph7*#xsc4T))l)3;?Zo&Yf7J*(@?1Q zh3@)j0Rd?eZWf&|g;A9FE1cWEmNF(O~181YT?b zv1Jti27899H%Lv*=*El!9P7(RT~J|AsiVSzo5<_So=O!$7vd^+sv#xja+AUY?#SvN z0ike)g?mp~7En;t-8I~uMkkLs%@v*o0yu<_j6%CH(022I+vy4qrC(9T`87xdIoxkt-N9Yu4*82}?d ze|psA3ycsHr@}6-M~(C!l>`r=2*Dq#jNQ}cx-*LeWrQzfPGwS4#m-)z07d9sJvReh zfo*<(B9L(*l>6#$)hI?xpM*MZJ-{3z0ACD+mdC~ZiLh;fJxa4-8P(s38Vm@5(I7f} zo02j+{OuYzP>!6D58X3SQ6=z#(9JYgt`Q02&d2-0xM>6YT)5aCCR8a=AOr+b*7t1_ z*BNjx=McqO{)R|tPY5V2O}=iau)nN=Zt{x)ictlKntT`aN-9B<>K;wk?I_AY(oVjQ z!koh#I1K_ScV2LnM=-=7b^M;EuryOxg;EnTs9rpoJt00z{FSA=rMw}<;i-fZ8F44H z{~&8Fu$t3~NZ08Hf~kQ3+pUOEVPlz;hRvQb0 z88rJ#E?4hrnjy5b9o4~jr#(W58e{b#8M}*oF_lI3C3mW@zzZW~nPO*X(9b9=B}48} zPhRnbP7YFTOktXn<;UGu{k9ZMO1M#fG5fXujn1A2!&_tRO67G*i%79mbeCABa78?s z4RMd3rNa8+cRV69>vmt_Dp!6g=9)T}^e?{P;sq$hBo#IQ9uX|k0hZL*JjF<26P2vO z&V(0PXGnwYs<4b8Ze@*p9pl5~kHWetCx>coyUKF0HmsfsM)NIh(+;9>7bl|K0E8Fu zPO~0*kxM8CKt)`^^W_gClAptY_tNkD82F43ZD0mF=`%iXa>8ONcgrsuM`us;u$LMs zy@@h^ylgT~<9_J1GRr64_LVYXJh&ppr;_z@{&P{lqxuXOS4!(;hGJI6G_DtWYX!H4 z=(C+~UsyxlF{`RmJbtmfsr>Nq%Hgw920CgVpR=FP#L+12E>|j4mfkspjZ|Ai-Hp>D6$qvon=&=6<`HhxXKNp zcbP4_(fw6N=B2{xY}>duAfaN|3}y$$^cVG>a%C<-%9R2| zEH1wn)ar9IRaB3mKr~>45UtKl?L4pkPa}iaP%$NgigcvbaFs9=P%a1d!gr#G+AP)+Uonaof}@F5E3geJ{Z4+S0Hdq-B{1_-17w?Tu;Bi#t8KbO zG#Ufw*If~bIs~Z2N5S{gweY_kmqPLOe2zY5Ut5djqYIg3q4a$8y(`Oe`C{$1kktn$ zK3b2_;1xw<=2mmXQyQ`^Fg9+v_70DZp;2o+LVc!PeHCsnsI@5X1^7-foc!n|vT@#xgp~+~gL(^v0Jz5aL=CB!D2fA!<(G zGcS6Aqp!lM`A_67Z$3h?EweAEtV>gQ)i2g*B`@t8YfoL4@*IIfW3Mu>jZ(j$Z zdMlKn5}Nkku;S9}KUFrxRj~V+Kn{@i`$P zfT55qZ%K#+?AmFsR-uF_t$148xadHI{~PQeuie-R8Z`A=3_%v-m{K`7%ztY0Q!2uJ z`ML^Y=t6!F>MACWCGXs2-CiT~2ov>-UT-J=aQ*5Zjdm`kijOYwn%%L%H{`lRdL~&0 z#kO~V3OjZTva@48ahrT=D8=u2To&PyiZ||IRHkzWcn1#ovZVQR+cp!hI z48Es_4b@v9;@weUsWDV$Q^&QknG|J@l=G8ZV_vT3iEYT41-l&#}2yzu+&=V6=*?Ri~AP`x}4Og=C&Rr!5|tjPg)Ig zL&(Y=!iH5u*%nybdh+RVT!nRF3(etOt=Uya9&^pABw`H}23zRk+KHC zGLEZq39fjk!sLE5YYK|3);Krk5tYORT8o4$Wr{8R6E;CTh6p2;LMIqVEQSfWGF6>1 z(p12ErdQxfb-#oEA~?LkNVXS%K4^Hb+tx8F01_?Vv+q_XtRL@Fl$Y`IOQwM$^b~? zM1Y~(tcLNvaV4L5UW&M?H=w~L4oxXapSZWN@q71DIsiRC)c(_t?+cVR!TB4M*5?b9 zX023)5~YzQ(qKf7@xjHBWZ6I{GVBrMt8573OBH6}&AdB6Ls`oar`Oc`_d;;EdaQ@G zo*oZj9-88Kz!Tn!S&4;?Xw(6Cg6@01bHQiES>|9g=LP!r-mHO+nx0+g!3?~!kYiQY zU9MuRo@`ag=ah#o`(3|#UoIQr3ZE~#j%-O=bmQ2Pwg8nzjpNs}MR$&L+WOYVDdioY zaokWQP@~+qr5QEc3a*hGzKlwj3_iOPM!!g8da@lsU`5_%o*>qij~Y_R)x@_7eTAQ4 z9vw)Gz}i4Kk2S*jX`BZw!xo&!yqbo2{w zq_)QTG)}&gg(|7xO}#1(EYj~|jcPYFl0TzOJIB#jtPQIV)wl^%7lk3zxTQiPw<r>fH7Cg9KCy8P#|RN6h=Xeyf4)cn8xTGt*4S;FuuRa-5POdOp1agrmwtr%Ord1@ z%Qt1hCj%htB34c)tSaS~uReyeF zSO&7UmMWPv!!lYvqJ^VRb4ykL!}9f>%Tpegdaq2OP@dKLs3<=Z)S57K^)~WsdB@lH34e9bNTiA4H zlcV_wKj4;o#J`IY7F@A?Jz2!dNym9xuQX2DS7y=Kub0~ z1J9?7U$TXFR>L3?2K6Vc)Ca&A<@@gM4@h~H8~AV$ZL8lKZCYzj9E)rZShZ=tX-s)7 z{uxt-()u?6jVbHP9rGy~Q?6G4eHkF-;v#CNXx+bH3wi)s1XU%H%ZY_B7O zoR(xwzxx|I?1*#M`>u&ueO~N2@YAjl2i!sxeVnB`WWn+og>2ggGOsds_9VvdeQkpm zt^RoNwC&G7)nq;xcH-yzya0tksk}>$V$O{)#+||h zNirjgkLH+0%YjvwS=GPVsgyK?rL>hZZ2gX?5<{_#x5X{<<0qim-2UiHb00}oSB4!K zu$dtn!%V-e$fXO=no^1D$__+7>J{$mUmO8T8~=I8DR&KS>}*bK>};+JKoPB69oE3Wgpz{?R% zJrVYSbLPrc;$oh~s8~S_6OxE~=(Dx%8z6@yxJSjuyvckyC1b`Mb~aHOEgayDmxqaa zKNf|TNFe^663W;<=?S1)XnQugDlC72w3Dn%yi6J)wh6Fem5s6x^nB0VC13Gk$Gu?v z`Z10W!76{5>fYlj5t@S*EP*v= ztUG1B8~?=%r$-KU*vN4G&GtuD7S+XUE@zfF?Co^%WbdDvc+gI(@r(=q6VLd8ZqUCV z`;1HDGI`+vmZYI`{WGss1WoWVuy@1 zj{a=p2m+~4`XIt2qBEVaQWv2J+c4k&O>7U`+qCc3O3ey=U?6l}-k-fsVwpsGaZvv= zy^Qoui<7QAChf7dHpb)9E7KdK$A0}7>-SM3i1XQ&8#m3wpi@<2(AV+W%BWUwQdp8Z z&WN&pnJ6!ZGTunas4;6gstgiwx5=3bx2D0rfCyn06?34NJI-=4=Y?!Nzy&m8(>#5H zuGo@hY+9nSqY*JS+lUDe2kv{MKFp*I3s_y2mIK70+5%Tl7jng>DY%jKL^nsEeE1F? zZiyE@%q#kMlk-w~=*F&1%BMG@e+t_a=WG45QBm;e;oLFM+E#QVBS06$@?@!V3~7O} znt(||E~mw;NYDx&8i?$>&)&z}DR>Kj8Dw*p74u$Bx5h#3GEXoa^*f4>M2vm8`pAtB$? zu+R#FsNozGP5>x|D1rQWavLBeN(?~_rvTnS_1o`4@m>5g)UW_AW6;X11=`KRSP)aM z<-bd>+3U|8O#=;pq9NS=Dx?iNk0!Yph*NY32R(#{SxSOag<>DYJaNGTD)%`jX}^cm z`R@7!`}JyXZ9Z*SteeWLo0?uTaQqOAtu5a}!F>P`$8Rbu&FM4HyZbB98w2#~uShSv zyh4bvD}q1+>mxFufwvY$@&L0I84NwErDZU{zPn-l(IxKO7RS==z)-jjB@nO!fz_z4 zInPt)g|;8avTw=vs4xV3cLzusK5c=$i^w>l1@`9F2qj7y_QsnZ0qmXs`T+(6hjlGe zA_TyFoe}|n(=sKBJ*_q+(i4)c1^|1ww_R(DC3&TB2pctW%SeP2$Txn;0dN#%L*2fR zcFuoO>~qLx+KJpdq{3hpxt$w0O*f0u*ODG@IXVb!s%p@xVW5K0|q zZpeaa0*c(=i(-M&S4uXo^;my@(!s}XQwd#eH_5B>rar@Vh_Ie;h)l)ygQ1V00Cqd60_7jV?aRxo> z-Sf|gGl9d88HL*XXW5LExc4@T{pudq2~o$Cb^k)O=g_py5{vW|JQc?dnaL5dJ|Xv zU^wIO)F~BL4>Hoo{9zT$B%;UDaBPm#agns?R^ zjtjXda;9uK-gSR`kgi+bl+=RP)zg-Hm(;G0-(d3a^wyMJjyeXjG`AVmXgSt=kh`#F z%S_563DFGK#S&+)C`MM!C*2K|Q4Xj3l_|*a=Yx(g`*#)>80fxoI{V|=xTP-w|7v9h57>{3AY}McL>uWC&YbNIG^4{~L^c^*Jf=@&^Y2k}QIjHfiqeD&<*$7g5F{l3BxSV5NarOUf;bNmXlGVdU`(E_ACR7e+;zbV!S|(nz={o1mmx&iW9zYYXWiTCx z|9DQ6Vf0v`!gz%QU2-_c9TDs8OUaQ^ZsV)lQgTEx?kX=-x0D=RuuHN0JqbE%g_2-q_{+QavCTueL;U)`*1@1zzUNmfIq+p z>07=6He7j}q7N6UqD}J2MDjDhGmtjaMk}^OI2H-CURpTT3iOi8zsCdtssoz7wIziq zpacd4yLDoLnI;02fsGX7n8?#nOl@H!eV&CnqPT_zOx3Glz~q4-l%mGK16BT|z$X0P zCGHl6ROf5-Ikga$0O&^N1Pm!SlddX^J}H{8^ld)NA@cseV%hy|Douy!Br9mLJhcKU zC!oZ%6Kx^^KM40Bn|}EnvZ`nIc0&G2@B>hStHqN?`Wg+eY9cA7Pa@HfvQ&k===Pz2 zERDv9ltnV9C>Z42Z6-2A4V+}M8AiQ~H%^jTsz)z#`68J!mDYo$9LtZYF_fIh@}-Qe z^{e^|v}1o5=(1G9f57f;nUg-fvO2__&&k<7sS$EyfnZs5mYX}+>d*3SemKtx98@SeM3B*@;JIw&a}p4XT5c@ zHH|+#WA86L_6POS#K&rhqcm*W+hJO(7R?HHJjiB{ji{h*O}|r#!Q<*~e};9b$~0FR%(QJ(-;vGvTA1`9KH1=3IQcpr9$K50zE8ZKhK4-5M1B;g5_5EN?$#s5Aj$*9E z3)x=Q%Rko!+@9}h>u9yJdj4+X6FHT(=@T9|kUfj4g$B^rUf@qjkZiVd-&H!}muE88 zs)yQtt@tB%+}IU@5`XQvMZrh1-i<$v$C}jCURgIbjaNg4XHGnK*p;`y%DvI%C%tEW zmH2jM5i6C&P?$QDjWtVYW_hwT!XKZUb8%b#ij%X>Uwz!YJ8$^t2v7H^LwXA`r&?S# zcH(%4+OCi1P83}pd`jW?;k|8OZ1FD}IjKaFu{ZvUvjLG`0m0|W{z0FL5}oCc2{ckbr4MWCFa1|M9K+B zAg$XheU0{g)@Qp4{q_wXI5I46BQE3vpx36`e5YBt2EmE|iqZ0oR=^}sq*{}@;AGUj zLqgio)xH9gEdXUZ6AOMMZ&Zg!&qqK{Y2QxV3mGaMZ&-`hK{NNU5O4iIm?9sETT@9R z#eQ1c8ZH(5-tYrW;?oE4xDO)nfn4!o*<6?4%#ja9HxL~h>jOOmT3c}eRFz=_s^z-^ zgMqaP)$&FBm%zd%Ub@}eCCB-$2Qr2*MkA&LFdl$u@s!&s!LEgAfkZ#hptLY8w$>+n zxPB2aEy9a}EM1GI76qE0XaYeHJp)mvJbX|79MY^I9|zCoM`#vMON(^nw9gO{uz!}7 zKZH?uYgze_!LSnAs_7bQ^QR-Vm?T`v6I&v%GDyVJt!C{8+XqmKA?Tgv`bUkI{8{Gh z;*~TsK^q44;PU_jUjQBbK5HjnT>nKo0mFI$ehYJi~l%?Agh)|f|^j?oo(c_fr1$hfP89v%+#@VrXL zwnzw>qtVn`-iazE2685IatHSk2L-U5K}%fpu69kiKt3{E_w97sD_~4ykZ!bGY_rJi zrcgG?!3BA|v#4Cn#1cg)fA-j}azJIIM~*DbVq$Pelq>LuDa z#CLdoRgYm>cK4I7c#giVJ>rpH{{5H10kJmRMaNDuAINHhcI>I_y6Fh#kEoax;)QqE z%tzwWXPdb44R+%Sco$6BapxRZ<3COa-+4aG2A{0uR5Km#!FCXbdhd%5m`&+3efIe* zbKZV^$BB1S9!$V)c8*{BmrHuZ$vy6GUe!ltI_L@i$fc`p3!-p(r4~v&xuz~9?Z+--X?0>beaDCl` zvdgxsV++Dx-HV^^J^jk>YlmJrVL5K`qU@^^j&$28@x8Ie;{A>2^srM8mNexj_M1L8 zS702tJ#3!!HPUvNj8PVErd@5x)!9dSuNnR!!YTUc4O!*eoU03Z==%K<`($1MRyVaE z?ZTl>4o?yu>p0$nw`a zA_M24uS-fc{GNF(rAM|; z7N%9ARnr|ZY0>QD0cPIT!`CGY*2zuiQa=4y)`=VMm;Qv`8L{=(F6rk->Yv$?Ieo&> zQcbVJy>1OSX{-PKZj=Db5&{`@J4;Z%l1yhNrz&o~leAJ+EOC-P5`zbfeTB1#)kA1^ zeQcWNi<_HDhTeH_8ZWW=Vye+|)=<6=Xt$8r+4fTXdl;dGlMRr(r~+YruMAls${BZ~IIIC~IZ zK;&vIB+K3b>Q5~;s6UacBe7(n#5UBv z_vS!bwu|^||M7=17?DT!j{)*%9BB6AIg;$xl5={VWb5xorcemEW0B-{^z=O^07nXv z#c7BR2l9mEovK8E>@%lI2`_gyLz?mEC}nTBm-9=cQeHnSH(zD90l_T3l;WS|Md~TWaOHqLdl-78o7@e0$06rkU0V_4{uLFwhGFy%)~RAxQB9 z>+6|?%GZ8Avqf-b&O_-lBO8vzaXuapnY0oE%w$BI`s}<$YtMRHY7}Tb&mvO(e zsR2N10sbO+2e=trC*Wq_PW432d{|2vjnU^{J8Cm7>Mzz7ka65(keDePmBF+?_&vAC zdRR_CP{A1fb5tPFh7NZwCeN)pZIrG(yt@Jr%QpQghk8zP?@3OQFfKHacSLxHc8Ovj zldoVqxl8;VDib+HntfEa+p~Y8tFO^~qvJ@UET%lD#)uvp$KnVo6w+g3UTld9bIM0^ zV{p8hGyR*R0wlfGrR(yRMch`8057aM>m_kC7;l&r2@sP2`8**ddjn4UJY~Qf!jblQ zLPGXd9*@8z(AW562&XqYg`tHz>1n!Ur4N9ql#j)84}dahOUqU3)Wsu+%c735(7KBE zK{Y+(-PtZO6Zvwt*=Z#fVjHQM&rXL&YmW&;PDWCru_FV3F7G(?mnDfa+{-ljwre`^Qq*v8^@00G>!(Bq=KN7f0-d4T zWyL7jddb>k`{y&xXZY?rlz8^|<|JXwvXn0OXFkYU@axUBQ#7V#tZBx98@70T-?F$A z;n59x2@h}QHq4DaJn7MaSB0~kuFj2GQ>^o2<=q!UMi0k4$Gap1bF+2tXWSb3+V#VG zmaVywzaKcA4L*2Ihbr!3(b2xEiD>qMH4eOuXXvqR-al&SyIHEDgWl z@``^&R^~3&PJQ9FJK4-{O=ZSWw)r)iYwyo8d=jQT9eTLl&NR#F#GfZuFPJ`ghSn5= zx^XYhF6sY1&?C~eEa&z99jWQOv7cTy2nxGbl`V?jRW_DY=I?rT!%j|8#Jj@ZelW4! zn0&Qp;x7|_S$6-ZiO$VKc`vxpRieYAzK_FE;;}YmKHO)e2-}MXq%#VbRtT}en)oAZ!V(o|qDtz

    ~XRE*GzXCKF{9q%))J}uGu$w1!wZkg3lG}_lK-xM&Jbl z$;$h2x|j3qh8Ble=nV;+w_)fCTcdPE#f&cQ*IrEDd}`#!2`B9qj=%leI{PJ0Vs=?) z6tW;!?I4b-Fk`m;#qH8Hyg)1COKXbPy?)9|>de{}@Fwow(cV79kiX&7KaCr zvFs)6mm?l|zHt7tWOG1eaO26DUo2uy&g8*qAF+xO7DT2Eqr!V|l|!R>0#Y`TtGJ?_ zh&KrBVHmQ%k{vZ-&E32|L`$dvID6YAzqgY+YU#osiw1UEIv@)~44AfNOX}817(l0O zhiQmiqQ+ArwzX$9wFgmYLJt6h9al>$U{FXqK!NLqHV1L*kn0BWq+`1%k?V#i{UhSm zA=eFLO4o{dxQ-{vg7t#Nyrz^<7B$XH@dI}^1s&TNRz6iAC1Qw-#uIOy<-?)mY1~y% z@35z;z2VCf2>iF5TihKFCv2@?Xo5W}vUhYXtR-S=XnV)s)d_OVVA=JJQQE>RWy}9p zt{r-bqk$3Dv8M14$RSWd-Gt3DOq;%?xWJVhc z5xt0xP?*{a{t#fS&gb7lyW9qH2Uvjy)iT{0Jc7j~S6f_elYvor0;OGpufiM1`nj~Y z?K>I@&%U&Tc0@0*0p%C5%d*qCu{^Hz49+98!uZN znRsw{<<#=y={u%&Uut@%ZqfKry?Z?<-RrfifAhg-KRg{btKQW#;n1qUxjm=$w+J&| zc4~NVW`o5GpV)CrANW=N*uDJbKiCL@-mgxqLS$~iq}{>qxU)V~f?{Wj{C@Vwy@x&Z zJQ1z3y}0&rJ6le%p=dTu^YOQy<`z~eOd`RLV31gtvbjiZI!E5+R$~GGxsySTkpIwc zHFsZLA2Pej`1bgVmR1_+=ctz5e5;@UAwoT>pN>6qtUqPCEXWn|zq0swmoJ~V9~<>Av^()XbLUk&dB$a@Eac1H*PQmRmk(glhc&0m@iBucI1%_t^S}&O zzoykj2vyZ+`a!hSPeY~GS|E;ENOhrkB?~w@1+L}97mkhqvLv_$(mppHNHE*tb2GY? zPd&%o5eWLj@lG;zm9p-+?vGnhX8K#|R#{(AdE``_(u+_|5# z|3&0gr}3Az*p7)hkTRjWtM(786DQmrH;kDv4Vcyh^rV6c{O~>jf)v76iA%1G0DXZp z)*t%(VF0xakBRiR+C3Fafq$KKc_Y4j5+NHwBX+R&VWT%JKrnn zzjeOFvnOfuhIrkVz^y2Ij(24$o(`T0Sn&rl>Svx6B$izqkVaZ-ho^3mFp@=O6%oWQ zN-x7#c^h0qq&!fMfz|OAg5K%C1qe<_a}@n3hBAN}Qa!=_cBY<`Gst$S`Sl_*R(kwO z%U&TNHjU>5J?4CP;)|ET7@j`dw9kjT2;cq#zZawFtQAb$4!>e4d|AH(X0pad0TVYB zCVUG@Yn?*dQmb2dyrN@O`^;(_$6?nyFvxngI7H(Cb!nsK{ z_2CD=41T=|Tga`OR7noxm?$PH!@T`C!`yrmrYd7#2Zza)_SUY!mB3qbfDGaw&(Hp7 z?&bC2KDSAhQhk>^F>nank=g7Yuprrd_I|HCRx1fFixVvq zUtT9$FLq3=Ef@H%X*{6}zMSE>e{_eNs`_uGy(^ zE9Z zegL*xTgXBZew3Kcst0xRUEiI%d4)p3g#~BKXWZSBD!+KPU(>pZ13kMA`8j&Un+IDh zH(&ng)cTwyjWvbuB%N<`IUARs)aB~v<&O_x)Ae}x!oBrEg?=?|ChaLZJ>#xGIknLK zG9@7H+9%f*8tng5EKK!EW#wP6DUxjZo*id>t!(tDB6&CVLWWd_-Une%7}s+@^376* zUttFUs;%aO7R-8A!W!5`qyv7PYykT0zEm%==?@|n(6j=n;8U$kT4z!x_29uXTvc>$ zcg2C{b#bCB1Z1TEe3{%=h3VTXet?22z$2d8EZi+;7Fr8n`3x2og=c$B-!t(_UkEd5 zX1dT@j-s6l)r2ZEyZ4+r?-3x-R>ELpC_usc3Vu`jC6=kqHLNdwQ+))nO7NT7wb@I# zJN2vBI~XbzwFC1sWS7P9sic+_Ojf6-uYvym_fO9a3vU8&2=*v_=5wtUelt|{oFV@o zi$NJ_2Vp|3EP*I$Ob&9KE)@M@zf@Kliad^f@f@3DU25l z&My*Ld4&HTwBv6y>!SQ%AB6veLLh5FwQ)S!?MK~7aunM6=CjPNt@!6}Y*O*voiF@A z`Sb1)P*B^rks#pY-y^aiP+_(5LH-w11)7xez1=>lAAU#d+{Tm_salb_OMBLTi(_r) z2hcF~l|ktV8o6ofpJ}(>=7QBmAJ9$^&E!mI!et}ID^YjnSZ;}A_AsU5 z=c=$i0+|hk`n#n`RGbJj_Mcgq!)Y4?S%D>*C_X18E<~A*Tu*AKNTxERg1a8!lodM& z28vK%t&ZO<2sI9~4yPR%TbTJ@3>j%=ev2Vv3p0NXZOBM7^KaDunO@^RzVpGj8gn@$ zViewY63Fr8w-l-m>o(dJr3U{+j-zc+;u}3K7a1R_3R>Pl>XIzxKcXHi2+FO8*-iE{ z2RS3twGlEw#VxcqS}uN%ZF8e5a_4sg#l!uR;A6RB)^7pY-Oc?k*iOprpapF%-f`QP z;7V4U8Sv;Tj%5G$RL_&v22T;V^9-=V*w#qUnY6`rNOfkY+R z8jjY<&|AaZpmj0}q-$F?!1!6+f||#H=>*Kq9rR@2KNb6V<$?cH%fc&w$;!8t7Xqo8 zZ08aTJ72)?xE<>N096AAATZODVZi;4?nMMmIDu9XdA;4vTcm`$EyQMEG}mhxEpn%pm|>g!v6$aWi;4JJdv-jl|Di{R1AR0 z`?6M>A6>joPv`P*P)H$}e>GPTykXftOduT3@A*E!!*3G=VOKIg*sK5wv30*mrn8or#Y7Jr$?7l3NA5?nMgM!TE~oH?mh zs4ijTfuV{u?OVJby+EIRi*vvF7Vp}s?pxegtF~0sX*F%Pk^2{$8bYy37lhzQ2@nm6 zZ;1JV26c3RLxVaPR6rXi1nvujW+94jPrf;s;)wh5MjH@IEyaG>Sh>9nT%sq4ajBX2 zCt=)I^H$m=0_YW>u?{!NEbYtUeS!$<*`@>Mk@(hHdf(Aah;OS!O>_%GPF22xjgf{F zFjyY{sr1;5-G3?@ZZ1uh|9Rh+vYArs<=t8D*?{(43RrhD+X+b8x<+8IYGH@Ow)@1| zS30+cr7PzHp^fLyxlux2irm9$c1vO>6R8as9*Z2=UkN85}*UMqL@ zBD55CU-FuB%`LDQX~}E$%Q(%|qflOZqQa*8ixRVX=_L~CU=3iJZHWFLD@Uppz`DDG z`-~29pYdX#?fte^=rZNTDQCCA_I_YK1MzyyI506D(dsp@2EtccvQ)dRl5=HUzUQgZ zVT*j?Y;{|y4RqpkC){eMQ}F$QHeP*0RL|ugrlxD|f42oQ&9s8=ZD-7rNbgTkYM;(6 znEiQwihBvRH#~kT1a}f4_|?(=;A6Ubbu+%O%CY~zlO zCb21V^@SaoKP(fw`rjqd8+eJ{kPX=t4M!WYeR~1-tbkrpeMeQ;z^Yxt{22mhyK8CA zSG%r%Os;@!65BIwTLgsvY%7Ytz3UFrsQ;&pJps^iYRjrj0Q?W_5!QhnRk(Ng9oQrf zBgWrF>#W^QdE)Nh85zO;0q27{=ob;uu24kdQPy!r$DJbqD)}y8gf>OqD4@5LMwaCp zwCF9RTP(}zEv1oVdG1%+!eS_`CYx5_7?GXDx$oY4&Uv2m{Fd5>M~V+D zPH*lA$i+v}4EMsEaa4Rm+_?qsI8H`>vp6M+SDfKMMo zCvyf%dDgl~hu=+J61=YF?}qO!K5tQjvpX4!+*q0peS>Qxrv#4+SR(t<%@B+iKW$p#u!XQ;>?yTIW2L!DOwo06G|Jow(Z5jzzRi=G32y3x5LBU785v>2WK@ ze>4%+bMt0L2gxJhJ&n0PmC{H!y$6jv`u7XU^hCT)ZhgG+9U@+@D@4UQd%52%$NQ}m z3)ZZDy&RrDHY~&K33omKmQhz%Uj*%A_rVr7O)j!wlemE<7a1cw1u3HqwN^Q6FbT$i zYf7;2xb^s5&%CB_}60qEH8p;TnND%FN38Edu<4EktBnqVe3rzzyYTCx(nD=lTEycW#qd3~!M=0i< zraRN46x0f6BxCU)GqCrLVs%5*C&79rbME+m&78ZaaUws#`wndjtNUBI`V^{p^-Tb% z-zPnMnBi6JIn0z&EuZCe(A1P?IoG18{AG)pqDz(3BvdfAgP9oE#%3p|G`%`dKXCg3cq61M*Rb=jU9?o(c zGVS*hnR}18a3tw7agb@&8b)04tQE&Uj{>kUY7IlK%(WRkB#8uYJULSrV^Ut5MriAm zHeQ=9qBmn-U{65(L+^H!I3?aw^j6AHS=RM9hes_Exz0}0(<*>`qW zHw8Zk74LB`^4_v>OT}U}d4&wCiXJ|T^7vy4w#A~?4fpqA|H{9`+ySrA^BKUglg$;Z zEgFt549xLcPVsP@?1?#mkPED>jK3o#RjfJBz^dHrm~D5z#A6omw4pO`H!FScakA@{ zq&|M0c24QBayBEr`9a^d3FVU;bf-fc*eT|r=*3Y6YBDcPEh2xkHD-yXB+N&|ryPb= z07Fb7!U7$3+KgHl>ysT1B3cAzswI}eRU(z%jVDTU*m)Pj)BUdrqIs`Vn`AehJ_ibM7eW7sp6mskyKB?t+d_p zpK~?cwmTQHRANCzPiCG}kA zqTxsPE|}1s-dx6Zc=?eNvBM)XM7G1z^G0chPYRZ~A9c#Wq;#@oMD)uSf?@sA7|}1E zjRUK4JMTx3-7&k~w<{g{5$tws447#@g58eSA23yHUPf-mQ>NVwH!pbh!=(_5G_$s9 z#P`SEFd)!cbC8p8jun>3^H^RVrBfVyicu7&2ua7SUALbJKB(`UVLB5Z+Dit(N~iI= zfFp3Z&2{W(o3r(ZyS2^IS*0h!6`uNE%|0t78#=ahtT_~_3a!RCpzh9*vk;7$>-hDu z`N1Q8Z>lK~w+OP5MLSoPEi|9qahS_d_H1M>SKKp~laBz+<&H)7U5YZ)&&9EDB=nI# z0wl({*V#Eh3Xa}(|fFvK`>6ZDgrX_UDMK5}`*NsfQ;{2_%(k{W$v z;IDKSj+{gWenY%t?&8-UkPZ9}-Kyie$iUyUwEu`fL$ZfYer?W)#O|{ay%$g-Va^Jn zMCA9HiYecyKp3^+DvgFXNCeDVug7u`ED1y*N-7$Nt8rtBOU42moe2UEV*&7*2*7!z z+NqX1g_LQ?eofK)fwkYdXS|VKo^Z+5Fs?f zY~#_A-DJD0b>gaepN?=7KztWt=GnZQVl(eX^!6iAZ?0&o8eUl+XThYi^&W?JxxA?` z;EvERBQOrMsX#+dMtkM)&~tEf=qc#?mdsFJi)N|GVKprqDKi=xcV#6UfG$gr27PH( z@Lf_pLX>2nke9pqbFVHa4AiBnK3Ftx7m?I`tpl+brEdCrSE`CM?WegO1c`qlDYac1 zJLdt(6N2F}sDjX**$w}u0_%j1 z5hDQPK3z=ono5;Yd$(3%Y`177_x2Vv`j%skrTS9Gl5LkaT#`&1tFxh~zU93-l7ulv ziGaaHfjvjD3fN^JauC%AQ5NNNZl)|!I5$%k<#28aW!@3m zG#~ZD_~*Vrso3UH?n9+sY4$hp`qzG}e>Lu?7=-n&nwL`ypB3XaR7_;YP#po6q9}8F z>b^7yp5ETv#Vzex8tNNy=;rCZ^>aZp`Xah-nFv2K0&uTGrXR*{z{J5%NJ8iQ$%jH6 z$>l5R8+>OatN!qwm^IvU+#?+6mRP2PUpC>Mr0Eah)p~_nT95Zrk@G4O@$8eS9ud07 K|L^PB+CKrHIhvCI literal 0 HcmV?d00001 diff --git a/3.x/images/trace.png b/3.x/images/trace.png new file mode 100644 index 0000000000000000000000000000000000000000..d7fa4692d4c04e833b005d0820ec26125c203f82 GIT binary patch literal 123912 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 OKH|bMLO=mM|NjHeeQ_lK literal 0 HcmV?d00001 diff --git a/3.x/images/tunnel-server-agents.png b/3.x/images/tunnel-server-agents.png new file mode 100644 index 0000000000000000000000000000000000000000..c786e2a52a04bb0a610bbcd6af347488a7acb463 GIT binary patch literal 40658 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