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/assets/vmtool.html.328ad748.js

29 lines
8.3 KiB
JavaScript

import{_ as i,o as c,c as r,a as e,b as n,w as l,e as s,d,r as o}from"./app.391b0e4e.js";const p={},u=e("h1",{id:"vmtool",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#vmtool","aria-hidden":"true"},"#"),s(" 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/doc/arthas-tutorials.html?language=en&id=command-vmtool",target:"_blank",rel:"noopener noreferrer"},v=e("code",null,"vmtool",-1),b=s(" online tutorial"),g=e("p",null,[e("code",null,"vmtool"),s(" uses the "),e("code",null,"JVMTI"),s(" to support "),e("code",null,"getInstances"),s(" in jvm and "),e("code",null,"forceGc"),s(".")],-1),f={href:"https://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.html",target:"_blank",rel:"noopener noreferrer"},k=s("JVM Tool Interface"),x=d(`<h3 id="getinstances" tabindex="-1"><a class="header-anchor" href="#getinstances" aria-hidden="true">#</a> getInstances</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ vmtool --action getInstances --className java.lang.String --limit <span class="token number">10</span>
@String<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">[</span>
@String<span class="token punctuation">[</span>com/taobao/arthas/core/shell/session/Session<span class="token punctuation">]</span>,
@String<span class="token punctuation">[</span>com.taobao.arthas.core.shell.session.Session<span class="token punctuation">]</span>,
@String<span class="token punctuation">[</span>com/taobao/arthas/core/shell/session/Session<span class="token punctuation">]</span>,
@String<span class="token punctuation">[</span>com/taobao/arthas/core/shell/session/Session<span class="token punctuation">]</span>,
@String<span class="token punctuation">[</span>com/taobao/arthas/core/shell/session/Session.class<span class="token punctuation">]</span>,
@String<span class="token punctuation">[</span>com/taobao/arthas/core/shell/session/Session.class<span class="token punctuation">]</span>,
@String<span class="token punctuation">[</span>com/taobao/arthas/core/shell/session/Session.class<span class="token punctuation">]</span>,
@String<span class="token punctuation">[</span>com/<span class="token punctuation">]</span>,
@String<span class="token punctuation">[</span>java/util/concurrent/ConcurrentHashMap<span class="token variable">$ValueIterator</span><span class="token punctuation">]</span>,
@String<span class="token punctuation">[</span>java/util/concurrent/locks/LockSupport<span class="token punctuation">]</span>,
<span class="token punctuation">]</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="custom-container tip"><p class="custom-container-title">TIP</p><p>Through the <code>--limit</code> 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.</p></div><h3 id="specify-classloader-name" tabindex="-1"><a class="header-anchor" href="#specify-classloader-name" aria-hidden="true">#</a> Specify classloader name</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>vmtool --action getInstances --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader --className org.springframework.context.ApplicationContext
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="specify-classloader-hash" tabindex="-1"><a class="header-anchor" href="#specify-classloader-hash" aria-hidden="true">#</a> Specify classloader hash</h3><p>The classloader that loads the class can be found through the <code>sc</code> command.</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ sc -d org.springframework.context.ApplicationContext
class-info org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext
code-source file:/private/tmp/demo-arthas-spring-boot.jar<span class="token operator">!</span>/BOOT-INF/lib/spring-boot-1.5.13.RELEASE.jar<span class="token operator">!</span>/
name org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext
<span class="token punctuation">..</span>.
class-loader +-org.springframework.boot.loader.LaunchedURLClassLoader@19469ea2
+-sun.misc.Launcher<span class="token variable">$AppClassLoader</span>@75b84c92
+-sun.misc.Launcher<span class="token variable">$ExtClassLoader</span>@4f023edb
classLoaderHash 19469ea2
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Then use the <code>-c</code>/<code>--classloader</code> parameter to specify:</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>vmtool --action getInstances -c 19469ea2 --className org.springframework.context.ApplicationContext
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="specify-the-number-of-expanded-layers-of-returned-results" tabindex="-1"><a class="header-anchor" href="#specify-the-number-of-expanded-layers-of-returned-results" aria-hidden="true">#</a> Specify the number of expanded layers of returned results</h3><div class="custom-container tip"><p class="custom-container-title">TIP</p><p>The return result of the <code>getInstances</code> action is bound to the <code>instances</code> variable, which is an array.</p><p>The expansion level of the result can be specified by the <code>-x</code>/<code>--expand</code> parameter, the default value is 1.</p></div><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>vmtool --action getInstances -c 19469ea2 --className org.springframework.context.ApplicationContext -x <span class="token number">2</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="execute-expression" tabindex="-1"><a class="header-anchor" href="#execute-expression" aria-hidden="true">#</a> Execute expression</h3><div class="custom-container tip"><p class="custom-container-title">TIP</p><p>The return result of the <code>getInstances</code> action is bound to the <code>instances</code> variable, which is an array. The specified expression can be executed through the <code>--express</code> parameter.</p></div><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>vmtool --action getInstances --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader --className org.springframework.context.ApplicationContext --express<span class="token string">&#39;instances[0].getBeanDefinitionNames()&#39;</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="force-gc" tabindex="-1"><a class="header-anchor" href="#force-gc" aria-hidden="true">#</a> Force GC</h3><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>vmtool --action forceGc
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,18),_=s("Use the "),S=e("code",null,"vmoption",-1),L=s(" command to dynamically turn on the "),C=e("code",null,"PrintGC",-1),y=s(" option.");function I(T,w){const a=o("ExternalLinkIcon"),t=o("RouterLink");return c(),r("div",null,[u,h,e("p",null,[e("a",m,[v,b,n(a)])]),g,e("ul",null,[e("li",null,[e("a",f,[k,n(a)])])]),x,e("ul",null,[e("li",null,[_,n(t,{to:"/en/doc/vmoption.html"},{default:l(()=>[S]),_:1}),L,C,y])])])}var N=i(p,[["render",I],["__file","vmtool.html.vue"]]);export{N as default};