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

160 lines
77 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
3 years ago
<meta name="generator" content="VuePress 2.0.0-beta.51">
<style>
:root {
--c-bg: #fff;
}
html.dark {
--c-bg: #22272e;
}
html, body {
background-color: var(--c-bg);
}
</style>
<script>
const userMode = localStorage.getItem('vuepress-color-scheme');
const systemDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
if (userMode === 'dark' || (userMode !== 'light' && systemDarkMode)) {
document.documentElement.classList.toggle('dark', true);
}
</script>
3 years ago
<link rel="icon" href="/images/favicon.ico"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta property="og:title" content="Arthas"><meta property="og:image:alt" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta property="og:image" content="/images/arthas_mate_image.png"><meta property="og:description" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="600"><meta property="twitter:image:src" content="/images/arthas_mate_image.png"><meta property="twitter:image:alt" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><meta itemprop="name" content="Arthas"><meta itemprop="image" content="/images/arthas_mate_image.png"><meta itemprop="description" content="Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas"><script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?d5c5e25b100f0eb51a4c35c8a86ea9b4";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
2 years ago
</script><meta name="aes-config" content="pid=xux-opensource&user_type=101&uid=&username=&dim10=arthas"><script src="//g.alicdn.com/alilog/mlog/aplus_v2.js" id="beacon-aplus" exparams="clog=o&aplus&sidx=aplusSidx&ckx=aplusCkx"></script><script src="//g.alicdn.com/aes/??tracker/1.0.34/index.js,tracker-plugin-pv/2.4.5/index.js,tracker-plugin-event/1.2.5/index.js,tracker-plugin-jserror/1.0.13/index.js,tracker-plugin-api/1.1.14/index.js,tracker-plugin-perf/1.1.8/index.js,tracker-plugin-eventTiming/1.0.4/index.js"></script><title>jad | arthas</title><meta name="description" content="arthas 使用文档">
2 years ago
<link rel="modulepreload" href="/assets/app.6c27e557.js"><link rel="modulepreload" href="/assets/jad.html.90a38b73.js"><link rel="modulepreload" href="/assets/jad.html.9cfa510f.js"><link rel="prefetch" href="/assets/index.html.e0add512.js"><link rel="prefetch" href="/assets/index.html.c0e162ee.js"><link rel="prefetch" href="/assets/index.html.005ab687.js"><link rel="prefetch" href="/assets/advanced-use.html.4a08eae3.js"><link rel="prefetch" href="/assets/advice-class.html.8acedcb0.js"><link rel="prefetch" href="/assets/agent.html.ee1ba8d8.js"><link rel="prefetch" href="/assets/arthas-properties.html.3af35baf.js"><link rel="prefetch" href="/assets/arthas3.html.4c754017.js"><link rel="prefetch" href="/assets/async.html.33a8ce63.js"><link rel="prefetch" href="/assets/auth.html.45571a53.js"><link rel="prefetch" href="/assets/base64.html.e6970d8a.js"><link rel="prefetch" href="/assets/batch-support.html.121d4807.js"><link rel="prefetch" href="/assets/cat.html.88343cb9.js"><link rel="prefetch" href="/assets/classloader.html.95de0d63.js"><link rel="prefetch" href="/assets/cls.html.dfbbb865.js"><link rel="prefetch" href="/assets/commands.html.e5542496.js"><link rel="prefetch" href="/assets/contact-us.html.4c278aed.js"><link rel="prefetch" href="/assets/dashboard.html.219bbddb.js"><link rel="prefetch" href="/assets/docker.html.eb899f16.js"><link rel="prefetch" href="/assets/download.html.1f2ac20c.js"><link rel="prefetch" href="/assets/dump.html.e764f79d.js"><link rel="prefetch" href="/assets/echo.html.02fd3de2.js"><link rel="prefetch" href="/assets/faq.html.c9001ab1.js"><link rel="prefetch" href="/assets/getstatic.html.23d5d774.js"><link rel="prefetch" href="/assets/grep.html.6d6fcdda.js"><link rel="prefetch" href="/assets/groovy.html.263a82e2.js"><link rel="prefetch" href="/assets/heapdump.html.3048c5f8.js"><link rel="prefetch" href="/assets/help.html.9c144bb1.js"><link rel="prefetch" href="/assets/history.html.ee355a46.js"><link rel="prefetch" href="/assets/http-api.html.0e988fe0.js"><link rel="prefetch" href="/assets/idea-plugin.html.729df9cc.js"><link rel="prefetch" href="/assets/install-detail.html.aa950398.js"><link rel="prefetch" href="/assets/jfr.html.5774063f.js"><link rel="prefetch" href="/assets/jvm.html.384e3013.js"><link rel="prefetch" href="/assets/keymap.html.df860e74.js"><link rel="prefetch" href="/assets/logger.html.f93aa755.js"><link rel="prefetch" href="/assets/manual-install.html.faec94a8.js"><link rel="prefetch" href="/assets/mbean.html.b17bec9e.js"><link rel="prefetch" href="/assets/mc.html.6659b81e.js"><link rel="prefetch" href="/assets/memory.html.0be63d13.js"><link rel="prefetch" href="/assets/monitor.html.9f90deed.js"><link rel="prefetch" href="/assets/ognl.html.f9e7531f.js"><link rel="prefetch" href="/assets/options.html.a88ad628.js"><link rel="prefetch" href="/assets/perfcounter.html.71640b97.js"><link rel="prefetch" href="/assets/profiler.html.7781015c.js"><link rel="prefetch" href="/assets/pwd.html.5cac5261.js"><link rel="prefetch" href="/assets/quick-start.html.ebe87ffa.js"><link rel="prefetch" href="/assets/quit.html.bf732706.js"><link rel="prefetch" href="/assets/redefine.html.d29837d4.js"><link rel="prefetch" href="/assets/release-notes.html.d67d93d3.js"><link rel="prefetch" href="/assets/reset.html.3c082478.js"><link rel="prefetch" href="/assets/retransform.html.8d6cf38a.js"><link rel="prefetch" href="/assets/save-log.html.38e3ca65.js"><link rel="prefetch" href="/assets/sc.html.d0b94e15.js"><link rel="prefetch" href="/assets/session.html.4220d561.js"><link rel="prefetch" href="/assets/sm.html.8262c2b3.js"><link rel="prefetch" href="/assets/spring-boot-starter.html.48054b9b.js"><link rel="prefetch" href="/assets/stack.html.49940000.js"><link rel="prefetch" href="/assets/start-arthas.html.0b346a76.js"><link rel="prefetch" href="/assets/stop.html.b0483065.js"><link rel="prefetch" href="/assets/sysenv.html.675a15d0.js"><link rel="prefetch" href="/assets/sysprop.html.cf84359a.js"><link rel="prefetch" href="/assets/tee.html.9973c3e5.js"><link rel="prefetch" href="/assets/thread.html.134c83fd.js">
<link rel="stylesheet" href="/assets/style.cf0d4c26.css">
</head>
<body>
2 years ago
<div id="app"><!--[--><div class="theme-container"><!--[--><header class="navbar"><div class="toggle-sidebar-button" title="切换侧边栏" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a href="/" class="" data-v-a8869d06><!----><span class="site-name can-hide" data-v-a8869d06>arthas</span><span class="navbar-version" data-v-a8869d06>v3.7.1</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a href="/" class="" aria-label="首页"><!--[--><!--]--> 首页 <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="/doc/arthas-tutorials.html?language=cn&amp;id=arthas-basics" rel="noopener noreferrer" target="_blank" aria-label="在线教程"><!--[--><!--]--><span>在线教程</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/" class="router-link-active" aria-label="文档"><!--[--><!--]--> 文档 <!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/commands.md" class="" aria-label="命令列表"><!--[--><!--]--> 命令列表 <!--[--><!--]--></a></div><div class="navbar-item"><a href="/doc/download.md" class="" aria-label="下载"><!--[--><!--]--> 下载 <!--[--><!--]--></a></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="Select language"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em" style="height:1.25rem;width:1.25rem;vertical-align:bottom;" viewbox="0 0 24 24"><path fill="currentColor" d="M13.35 22q-.6 0-.862-.387q-.263-.388-.063-.963l3.65-9.675q.15-.4.563-.688Q17.05 10 17.5 10q.425 0 .85.287q.425.288.575.688l3.65 9.675q.2.575-.062.963q-.263.387-.888.387q-.275 0-.5-.175q-.225-.175-.325-.425l-.85-2.45H15.1l-.875 2.45q-.1.25-.35.425q-.25.175-.525.175Zm2.35-4.8h3.6l-1.75-4.95h-.1ZM7.15 8.55q.4.725.85 1.337q.45.613 1.05 1.263q1.1-1.2 1.825-2.462Q11.6 7.425 12.1 6H2q-.425 0-.712-.287Q1 5.425 1 5t.288-.713Q1.575 4 2 4h6V3q0-.425.288-.713Q8.575 2 9 2t.713.287Q10 2.575 10 3v1h6q.425 0 .712.287Q17 4.575 17 5t-.288.713Q16.425 6 16 6h-1.9q-.525 1.775-1.425 3.45q-.9 1.675-2.225 3.15l2.4 2.45l-.75 2.05L9 14l-4.3 4.3q-.275.275-.7.275q-.425 0-.7-.275q-.275-.275-.275-.7q0-.425.275-.7l4.35-4.35q-.675-.775-1.25-1.563q-.575-.787-1.025-1.662Q5.1 8.8 5.35 8.4t.875-.4q.25 0 .525.162q.275.163.4.388Z"></path></svg><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="Select language"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em" style="height:1.25rem;width:1.25rem;vertical-align:bottom;" viewbox="0 0 24 24"><path fill="currentColor" d="M13.35 22q-.6 0-.862-.387q-.263-.388-.063-.963l3.65-9.675q.15-.4.563-.688Q17.05 10 17.5 10q.425 0 .85.287q.425.288.575.688l3.65 9.675q.2.575-.062.963q-.263.387-.888.387q-.275 0-.5-.175q-.225-.175-.325-.425l-.85-2.45H15.1l-.875 2.45q-.1.25-.35.425q-.25.175-.525.175Zm2.35-4.8h3.6l-1.75-4.95h-.1ZM7.15 8.55q.4.725.85 1.337q.45.613 1.05 1.263q1.1-1.2 1.825-2.462Q11.6 7.425 12.1 6H2q-.425 0-.712-.287Q1 5.425 1 5t.288-.713Q1.575 4 2 4h6V3q0-.425.288-.713Q8.575 2 9 2t.713.287Q10 2.575 10 3v1h6q.425 0 .712.287Q17 4.575 17 5t-.288.713Q16.425 6 16 6h-1.9q-.525 1.775-1.425 3.45q-.9 1.675-2.225 3.15l2.4 2.45l-.75 2.05L9 14l-4.3 4.3q-.275.275-.7.275q-.425 0-.7-.275q-.275-.275-.275-.7q0-.42
<span class="token class-name">ClassLoader</span><span class="token operator">:</span>
<span class="token class-name">Location</span><span class="token operator">:</span>
<span class="token comment">/*
* Decompiled with CFR.
*/</span>
<span class="token keyword">package</span> <span class="token namespace">java<span class="token punctuation">.</span>lang</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>io<span class="token punctuation">.</span></span><span class="token class-name">ObjectStreamField</span></span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>io<span class="token punctuation">.</span></span><span class="token class-name">Serializable</span></span><span class="token punctuation">;</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token keyword">public</span> <span class="token keyword">final</span> <span class="token keyword">class</span> <span class="token class-name">String</span>
<span class="token keyword">implements</span> <span class="token class-name">Serializable</span><span class="token punctuation">,</span>
<span class="token class-name">Comparable</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">String</span><span class="token punctuation">&gt;</span></span><span class="token punctuation">,</span>
<span class="token class-name">CharSequence</span> <span class="token punctuation">{</span>
<span class="token keyword">private</span> <span class="token keyword">final</span> <span class="token keyword">char</span><span class="token punctuation">[</span><span class="token punctuation">]</span> value<span class="token punctuation">;</span>
<span class="token keyword">private</span> <span class="token keyword">int</span> hash<span class="token punctuation">;</span>
<span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">final</span> <span class="token keyword">long</span> serialVersionUID <span class="token operator">=</span> <span class="token operator">-</span><span class="token number">6849794470754667710L</span><span class="token punctuation">;</span>
<span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">final</span> <span class="token class-name">ObjectStreamField</span><span class="token punctuation">[</span><span class="token punctuation">]</span> serialPersistentFields <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ObjectStreamField</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
3 years ago
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">final</span> <span class="token class-name">Comparator</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">String</span><span class="token punctuation">&gt;</span></span> <span class="token constant">CASE_INSENSITIVE_ORDER</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">CaseInsensitiveComparator</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token keyword">public</span> <span class="token class-name">String</span><span class="token punctuation">(</span><span class="token keyword">byte</span><span class="token punctuation">[</span><span class="token punctuation">]</span> byArray<span class="token punctuation">,</span> <span class="token keyword">int</span> n<span class="token punctuation">,</span> <span class="token keyword">int</span> n2<span class="token punctuation">,</span> <span class="token class-name">Charset</span> charset<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">/*460*/</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>charset <span class="token operator">==</span> <span class="token keyword">null</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">NullPointerException</span><span class="token punctuation">(</span><span class="token string">&quot;charset&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token comment">/*462*/</span> <span class="token class-name">String</span><span class="token punctuation">.</span><span class="token function">checkBounds</span><span class="token punctuation">(</span>byArray<span class="token punctuation">,</span> n<span class="token punctuation">,</span> n2<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">/*463*/</span> <span class="token keyword">this</span><span class="token punctuation">.</span>value <span class="token operator">=</span> <span class="token class-name">StringCoding</span><span class="token punctuation">.</span><span class="token function">decode</span><span class="token punctuation">(</span>charset<span class="token punctuation">,</span> byArray<span class="token punctuation">,</span> n<span class="token punctuation">,</span> n2<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
3 years ago
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="反编译时只显示源代码" tabindex="-1"><a class="header-anchor" href="#反编译时只显示源代码" aria-hidden="true">#</a> 反编译时只显示源代码</h3><p>默认情况下,反编译结果里会带有<code>ClassLoader</code>信息,通过<code>--source-only</code>选项,可以只打印源代码。方便和<a href="/doc/mc.html" class="">mc</a>/<a href="/doc/retransform.html" class="">retransform</a>命令结合使用。</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code>$ jad <span class="token operator">--</span>source<span class="token operator">-</span>only <span class="token class-name"><span class="token namespace">demo<span class="token punctuation">.</span></span>MathGame</span>
<span class="token comment">/*
* Decompiled with CFR 0_132.
*/</span>
<span class="token keyword">package</span> <span class="token namespace">demo</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>io<span class="token punctuation">.</span></span><span class="token class-name">PrintStream</span></span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">ArrayList</span></span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Iterator</span></span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">List</span></span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span></span><span class="token class-name">Random</span></span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token import"><span class="token namespace">java<span class="token punctuation">.</span>util<span class="token punctuation">.</span>concurrent<span class="token punctuation">.</span></span><span class="token class-name">TimeUnit</span></span><span class="token punctuation">;</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MathGame</span> <span class="token punctuation">{</span>
<span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token class-name">Random</span> random <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Random</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">public</span> <span class="token keyword">int</span> illegalArgumentCount <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
3 years ago
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="反编译指定的函数" tabindex="-1"><a class="header-anchor" href="#反编译指定的函数" aria-hidden="true">#</a> 反编译指定的函数</h3><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code>$ jad <span class="token class-name"><span class="token namespace">demo<span class="token punctuation">.</span></span>MathGame</span> main
<span class="token class-name">ClassLoader</span><span class="token operator">:</span>
<span class="token operator">+</span><span class="token operator">-</span><span class="token class-name"><span class="token namespace">sun<span class="token punctuation">.</span>misc<span class="token punctuation">.</span></span>Launcher</span>$<span class="token class-name">AppClassLoader</span><span class="token annotation punctuation">@232204a1</span>
<span class="token operator">+</span><span class="token operator">-</span><span class="token class-name"><span class="token namespace">sun<span class="token punctuation">.</span>misc<span class="token punctuation">.</span></span>Launcher</span>$<span class="token class-name">ExtClassLoader</span><span class="token annotation punctuation">@7f31245a</span>
<span class="token class-name">Location</span><span class="token operator">:</span>
<span class="token operator">/</span><span class="token keyword">private</span><span class="token operator">/</span>tmp<span class="token operator">/</span>math<span class="token operator">-</span>game<span class="token punctuation">.</span>jar
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">InterruptedException</span> <span class="token punctuation">{</span>
<span class="token class-name">MathGame</span> game <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MathGame</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">/*16*/</span> game<span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
3 years ago
<span class="token comment">/*17*/</span> <span class="token class-name">TimeUnit</span><span class="token punctuation">.</span><span class="token constant">SECONDS</span><span class="token punctuation">.</span><span class="token function">sleep</span><span class="token punctuation">(</span><span class="token number">1L</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
3 years ago
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="反编译时不显示行号" tabindex="-1"><a class="header-anchor" href="#反编译时不显示行号" aria-hidden="true">#</a> 反编译时不显示行号</h3><p><code>--lineNumber</code> 参数默认值为 true显示指定为 false 则不打印行号。</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code>$ jad <span class="token class-name"><span class="token namespace">demo<span class="token punctuation">.</span></span>MathGame</span> main <span class="token operator">--</span>lineNumber <span class="token boolean">false</span>
<span class="token class-name">ClassLoader</span><span class="token operator">:</span>
<span class="token operator">+</span><span class="token operator">-</span><span class="token class-name"><span class="token namespace">sun<span class="token punctuation">.</span>misc<span class="token punctuation">.</span></span>Launcher</span>$<span class="token class-name">AppClassLoader</span><span class="token annotation punctuation">@232204a1</span>
<span class="token operator">+</span><span class="token operator">-</span><span class="token class-name"><span class="token namespace">sun<span class="token punctuation">.</span>misc<span class="token punctuation">.</span></span>Launcher</span>$<span class="token class-name">ExtClassLoader</span><span class="token annotation punctuation">@7f31245a</span>
<span class="token class-name">Location</span><span class="token operator">:</span>
<span class="token operator">/</span><span class="token keyword">private</span><span class="token operator">/</span>tmp<span class="token operator">/</span>math<span class="token operator">-</span>game<span class="token punctuation">.</span>jar
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">InterruptedException</span> <span class="token punctuation">{</span>
<span class="token class-name">MathGame</span> game <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MathGame</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
game<span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
3 years ago
<span class="token class-name">TimeUnit</span><span class="token punctuation">.</span><span class="token constant">SECONDS</span><span class="token punctuation">.</span><span class="token function">sleep</span><span class="token punctuation">(</span><span class="token number">1L</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
3 years ago
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="反编译时指定-classloader" tabindex="-1"><a class="header-anchor" href="#反编译时指定-classloader" aria-hidden="true">#</a> 反编译时指定 ClassLoader</h3><div class="custom-container tip"><p class="custom-container-title">提示</p><p>当有多个 <code>ClassLoader</code> 都加载了这个类时,<code>jad</code> 命令会输出对应 <code>ClassLoader</code> 实例的 <code>hashcode</code>,然后你只需要重新执行 <code>jad</code> 命令,并使用参数 <code>-c &lt;hashcode&gt;</code> 就可以反编译指定 ClassLoader 加载的那个类了;</p></div><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code>$ jad <span class="token class-name"><span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>log4j<span class="token punctuation">.</span></span>Logger</span>
<span class="token class-name">Found</span> more than one <span class="token keyword">class</span> <span class="token keyword">for</span><span class="token operator">:</span> <span class="token class-name"><span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>log4j<span class="token punctuation">.</span></span>Logger</span><span class="token punctuation">,</span> <span class="token class-name">Please</span> use jad <span class="token operator">-</span>c hashcode <span class="token class-name"><span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>log4j<span class="token punctuation">.</span></span>Logger</span>
3 years ago
<span class="token constant">HASHCODE</span> <span class="token constant">CLASSLOADER</span>
<span class="token number">69d</span>caba4 <span class="token operator">+</span><span class="token operator">-</span>monitor&#39;s <span class="token class-name">ModuleClassLoader</span>
<span class="token number">6e51</span>ad67 <span class="token operator">+</span><span class="token operator">-</span><span class="token class-name"><span class="token namespace">java<span class="token punctuation">.</span>net<span class="token punctuation">.</span></span>URLClassLoader</span><span class="token annotation punctuation">@6e51ad67</span>
<span class="token operator">+</span><span class="token operator">-</span><span class="token class-name"><span class="token namespace">sun<span class="token punctuation">.</span>misc<span class="token punctuation">.</span></span>Launcher</span>$<span class="token class-name">AppClassLoader</span><span class="token annotation punctuation">@6951a712</span>
<span class="token operator">+</span><span class="token operator">-</span><span class="token class-name"><span class="token namespace">sun<span class="token punctuation">.</span>misc<span class="token punctuation">.</span></span>Launcher</span>$<span class="token class-name">ExtClassLoader</span><span class="token annotation punctuation">@6fafc4c2</span>
<span class="token number">2</span>bdd9114 <span class="token operator">+</span><span class="token operator">-</span>pandora<span class="token operator">-</span>qos<span class="token operator">-</span>service&#39;s <span class="token class-name">ModuleClassLoader</span>
<span class="token number">4</span>c0df5f8 <span class="token operator">+</span><span class="token operator">-</span>pandora<span class="token operator">-</span>framework&#39;s <span class="token class-name">ModuleClassLoader</span>
<span class="token class-name">Affect</span><span class="token punctuation">(</span>row<span class="token operator">-</span>cnt<span class="token operator">:</span><span class="token number">0</span><span class="token punctuation">)</span> cost in <span class="token number">38</span> ms<span class="token punctuation">.</span>
$ jad <span class="token class-name"><span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>log4j<span class="token punctuation">.</span></span>Logger</span> <span class="token operator">-</span>c <span class="token number">69d</span>caba4
<span class="token class-name">ClassLoader</span><span class="token operator">:</span>
<span class="token operator">+</span><span class="token operator">-</span>monitor&#39;s <span class="token class-name">ModuleClassLoader</span>
<span class="token class-name">Location</span><span class="token operator">:</span>
<span class="token operator">/</span><span class="token class-name">Users</span><span class="token operator">/</span>admin<span class="token operator">/</span>app<span class="token operator">/</span>log4j<span class="token operator">-</span><span class="token number">1.2</span><span class="token number">.14</span><span class="token punctuation">.</span>jar
<span class="token keyword">package</span> <span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>log4j</span><span class="token punctuation">;</span>
<span class="token keyword">import</span> <span class="token import"><span class="token namespace">org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>log4j<span class="token punctuation">.</span>spi<span class="token punctuation">.</span></span><span class="token operator">*</span></span><span class="token punctuation">;</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Logger</span> <span class="token keyword">extends</span> <span class="token class-name">Category</span>
<span class="token punctuation">{</span>
3 years ago
<span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">final</span> <span class="token class-name">String</span> <span class="token constant">FQCN</span><span class="token punctuation">;</span>
<span class="token keyword">protected</span> <span class="token class-name">Logger</span><span class="token punctuation">(</span><span class="token class-name">String</span> name<span class="token punctuation">)</span>
<span class="token punctuation">{</span>
<span class="token keyword">super</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token class-name">Affect</span><span class="token punctuation">(</span>row<span class="token operator">-</span>cnt<span class="token operator">:</span><span class="token number">1</span><span class="token punctuation">)</span> cost in <span class="token number">190</span> ms<span class="token punctuation">.</span>
2 years ago
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>对于只有唯一实例的 ClassLoader 还可以通过<code>--classLoaderClass</code>指定 class name使用起来更加方便</p><p><code>--classLoaderClass</code> 的值是 ClassLoader 的类名,只有匹配到唯一的 ClassLoader 实例时才能工作,目的是方便输入通用命令,而<code>-c &lt;hashcode&gt;</code>是动态变化的。</p></div><!--[--><!--]--></div><footer class="page-meta right-menu-padding" data-v-fdd717e0><div class="meta-item edit-link"><a class="external-link meta-item-label" href="https://github.com/alibaba/arthas/edit/master/site/docs/doc/jad.md" rel="noopener noreferrer" target="_blank" aria-label="在 GitHub 上编辑此页"><!--[--><!--]--><span>在 GitHub 上编辑此页</span><span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">在新窗口打开</span></span><!--[--><!--]--></a></div><div class="meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><div class="meta-item contributors"><span class="meta-item-label">贡献者: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: hengyunabc@gmail.com">hengyunabc</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: i@fatpandac.com">Fatpandac</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: hollowman186@vip.qq.com">Hollow Man</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: hollowman@hollowman.ml">Hollow Man</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: 940375606@qq.com">penguin-wwy</span><!----><!--]--><!--]--></span></div></footer><nav class="page-nav right-menu-padding" data-v-fdd717e0><p class="inner"><span class="prev"><a href="/doc/history.html" class="" aria-label="history"><!--[--><!--]--> history <!--[--><!--]--></a></span><span class="next"><a href="/doc/jfr.html" class="" aria-label="jfr"><!--[--><!--]--> jfr <!--[--><!--]--></a></span></p></nav><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
<script type="module" src="/assets/app.6c27e557.js" defer></script>
</body>
</html>