diff --git a/core/src/main/java/com/taobao/arthas/core/command/basic1000/VMOptionCommand.java b/core/src/main/java/com/taobao/arthas/core/command/basic1000/VMOptionCommand.java index 49d5b4f2e..fcc235209 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/basic1000/VMOptionCommand.java +++ b/core/src/main/java/com/taobao/arthas/core/command/basic1000/VMOptionCommand.java @@ -29,10 +29,16 @@ import com.taobao.middleware.cli.annotations.Summary; * @author hengyunabc 2019-09-02 * */ +// @formatter:off @Name("vmoption") @Summary("Display, and update the vm diagnostic options.") -@Description("\nExamples:\n" + " vmoption\n" + " vmoption PrintGCDetails\n" + " vmoption PrintGCDetails true\n" - + Constants.WIKI + Constants.WIKI_HOME + "vmoption") +@Description("\nExamples:\n" + + " vmoption\n" + + " vmoption PrintGC\n" + + " vmoption PrintGC true\n" + + " vmoption PrintGCDetails true\n" + + Constants.WIKI + Constants.WIKI_HOME + "vmoption") +//@formatter:on public class VMOptionCommand extends AnnotatedCommand { private static final Logger logger = LoggerFactory.getLogger(VMOptionCommand.class); diff --git a/site/src/site/sphinx/en/vmoption.md b/site/src/site/sphinx/en/vmoption.md index d3194c586..64e1f548d 100644 --- a/site/src/site/sphinx/en/vmoption.md +++ b/site/src/site/sphinx/en/vmoption.md @@ -40,16 +40,26 @@ vmoption #### View individual option ```bash -[arthas@56963]$ vmoption PrintGCDetails - KEY VALUE ORIGIN WRITEABLE ---------------------------------------------------------------------------------------------- - PrintGCDetails false MANAGEMENT true +$ vmoption PrintGC + KEY VALUE ORIGIN WRITEABLE +--------------------------------------------------------------------------------- + PrintGC false MANAGEMENT true ``` #### Update individual option ```bash -[arthas@56963]$ vmoption PrintGCDetails true +$ vmoption PrintGC true Successfully updated the vm option. -PrintGCDetails=true + NAME BEFORE-VALUE AFTER-VALUE +------------------------------------ + PrintGC false true ``` + +```bash +$ vmoption PrintGCDetails true +Successfully updated the vm option. + NAME BEFORE-VALUE AFTER-VALUE +------------------------------------------- + PrintGCDetails false true +``` \ No newline at end of file diff --git a/site/src/site/sphinx/en/vmtool.md b/site/src/site/sphinx/en/vmtool.md index b30dde9db..f44eab10b 100644 --- a/site/src/site/sphinx/en/vmtool.md +++ b/site/src/site/sphinx/en/vmtool.md @@ -79,4 +79,6 @@ vmtool --action getInstances --classLoaderClass org.springframework.boot.loader. ```bash vmtool --action forceGc -``` \ No newline at end of file +``` + +* Use the [`vmoption`](vmoption.md) command to dynamically turn on the `PrintGC` option. \ No newline at end of file diff --git a/site/src/site/sphinx/vmoption.md b/site/src/site/sphinx/vmoption.md index 265a0ffec..b56665b6c 100644 --- a/site/src/site/sphinx/vmoption.md +++ b/site/src/site/sphinx/vmoption.md @@ -40,16 +40,26 @@ vmoption #### 查看指定的option ```bash -[arthas@56963]$ vmoption PrintGCDetails - KEY VALUE ORIGIN WRITEABLE ---------------------------------------------------------------------------------------------- - PrintGCDetails false MANAGEMENT true +$ vmoption PrintGC + KEY VALUE ORIGIN WRITEABLE +--------------------------------------------------------------------------------- + PrintGC false MANAGEMENT true ``` #### 更新指定的option ```bash -[arthas@56963]$ vmoption PrintGCDetails true +$ vmoption PrintGC true Successfully updated the vm option. -PrintGCDetails=true + NAME BEFORE-VALUE AFTER-VALUE +------------------------------------ + PrintGC false true +``` + +```bash +$ vmoption PrintGCDetails true +Successfully updated the vm option. + NAME BEFORE-VALUE AFTER-VALUE +------------------------------------------- + PrintGCDetails false true ``` diff --git a/site/src/site/sphinx/vmtool.md b/site/src/site/sphinx/vmtool.md index 59ab1f514..e78a0a822 100644 --- a/site/src/site/sphinx/vmtool.md +++ b/site/src/site/sphinx/vmtool.md @@ -80,4 +80,6 @@ vmtool --action getInstances --classLoaderClass org.springframework.boot.loader. ```bash vmtool --action forceGc -``` \ No newline at end of file +``` + +* 可以结合 [`vmoption`](vmoption.md) 命令动态打开`PrintGC`开关。 \ No newline at end of file diff --git a/tutorials/katacoda/command-vmoption-cn/vmoption.md b/tutorials/katacoda/command-vmoption-cn/vmoption.md index c6adf6028..872ddf910 100644 --- a/tutorials/katacoda/command-vmoption-cn/vmoption.md +++ b/tutorials/katacoda/command-vmoption-cn/vmoption.md @@ -13,8 +13,8 @@ Examples: vmoption - vmoption PrintGCDetails - vmoption PrintGCDetails true + vmoption PrintGC + vmoption PrintGC true WIKI: https://arthas.aliyun.com/doc/vmoption @@ -61,35 +61,53 @@ ### 查看指定的option -`vmoption PrintGCDetails`{{execute T2}} +`vmoption PrintGC`{{execute T2}} ```bash -[arthas@56963]$ vmoption PrintGCDetails - KEY VALUE ORIGIN WRITEABLE ---------------------------------------------------------------------------------------------- - PrintGCDetails false MANAGEMENT true +$ vmoption PrintGC + KEY VALUE ORIGIN WRITEABLE +--------------------------------------------------------------------------------- + PrintGC false MANAGEMENT true ``` ### 更新指定的option +`vmoption PrintGC true`{{execute T2}} + +```bash +$ vmoption PrintGC true +Successfully updated the vm option. + NAME BEFORE-VALUE AFTER-VALUE +------------------------------------ + PrintGC false true +``` + +再使用`vmtool`命令执行强制GC,则可以在`Terminal 1`看到打印出GC日志: + +`vmtool --action forceGc`{{execute T2}} + +``` +[GC (JvmtiEnv ForceGarbageCollection) 33752K->19564K(251392K), 0.0082960 secs] +[Full GC (JvmtiEnv ForceGarbageCollection) 19564K->17091K(166912K), 0.0271085 secs] +``` + +### 配置打印GC详情 + `vmoption PrintGCDetails true`{{execute T2}} ```bash -[arthas@56963]$ vmoption PrintGCDetails true +$ vmoption PrintGCDetails true Successfully updated the vm option. -PrintGCDetails=true + NAME BEFORE-VALUE AFTER-VALUE +------------------------------------------- + PrintGCDetails false true ``` -此时,切换到arthas demo 运行所在的`Terminal`,使用`Ctrl+c`退出,发现比之前多打印了GC垃圾回收信息: +再使用`vmtool`命令执行强制GC,则可以在`Terminal 1`看到打印出GC详情: + +`vmtool --action forceGc`{{execute T2}} -```bash -Heap - def new generation total 10432K, used 5682K [0x00000000f4800000, 0x00000000f5350000, 0x00000000f8550000) - eden space 9280K, 61% used [0x00000000f4800000, 0x00000000f4d8cad0, 0x00000000f5110000) - from space 1152K, 0% used [0x00000000f5110000, 0x00000000f5110000, 0x00000000f5230000) - to space 1152K, 0% used [0x00000000f5230000, 0x00000000f5230000, 0x00000000f5350000) - tenured generation total 22992K, used 13795K [0x00000000f8550000, 0x00000000f9bc4000, 0x0000000100000000) - the space 22992K, 59% used [0x00000000f8550000, 0x00000000f92c8cc8, 0x00000000f92c8e00, 0x00000000f9bc4000) - Metaspace used 14926K, capacity 15128K, committed 15360K, reserved 1062912K - class space used 1895K, capacity 1954K, committed 2048K, reserved 1048576K ``` +[GC (JvmtiEnv ForceGarbageCollection) [PSYoungGen: 4395K->352K(76288K)] 21487K->17443K(166912K), 0.0013122 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] +[Full GC (JvmtiEnv ForceGarbageCollection) [PSYoungGen: 352K->0K(76288K)] [ParOldGen: 17091K->16076K(88064K)] 17443K->16076K(164352K), [Metaspace: 20651K->20651K(1069056K)], 0.0251548 secs] [Times: user=0.15 sys=0.01, real=0.02 secs] +``` \ No newline at end of file diff --git a/tutorials/katacoda/command-vmoption-en/vmoption.md b/tutorials/katacoda/command-vmoption-en/vmoption.md index 19c66d7b1..10400c897 100644 --- a/tutorials/katacoda/command-vmoption-en/vmoption.md +++ b/tutorials/katacoda/command-vmoption-en/vmoption.md @@ -13,8 +13,8 @@ Display, and update the vm diagnostic options. Examples: vmoption - vmoption PrintGCDetails - vmoption PrintGCDetails true + vmoption PrintGC + vmoption PrintGC true WIKI: https://arthas.aliyun.com/doc/vmoption @@ -71,25 +71,42 @@ Display, and update the vm diagnostic options. ``` ### Update individual option +`vmoption PrintGC true`{{execute T2}} + +```bash +$ vmoption PrintGC true +Successfully updated the vm option. + NAME BEFORE-VALUE AFTER-VALUE +------------------------------------ + PrintGC false true +``` + +Then use the `vmtool` command to force GC, you can see the GC log printed in `Terminal 1`: + +`vmtool --action forceGc`{{execute T2}} + +``` +[GC (JvmtiEnv ForceGarbageCollection) 33752K->19564K(251392K), 0.0082960 secs] +[Full GC (JvmtiEnv ForceGarbageCollection) 19564K->17091K(166912K), 0.0271085 secs] +``` + +### Configure print GC details `vmoption PrintGCDetails true`{{execute T2}} ```bash -[arthas@56963]$ vmoption PrintGCDetails true +$ vmoption PrintGCDetails true Successfully updated the vm option. -PrintGCDetails=true + NAME BEFORE-VALUE AFTER-VALUE +------------------------------------------- + PrintGCDetails false true ``` -Now,if we switch to the `Terminal` where arthas demo is running,and use `Ctrl+c` to exit,you will find it prints out Garbage Collection details: +Then use the `vmtool` command to force GC, you can see the GC details printed in `Terminal 1`: + +`vmtool --action forceGc`{{execute T2}} -```bash -Heap - def new generation total 10432K, used 5682K [0x00000000f4800000, 0x00000000f5350000, 0x00000000f8550000) - eden space 9280K, 61% used [0x00000000f4800000, 0x00000000f4d8cad0, 0x00000000f5110000) - from space 1152K, 0% used [0x00000000f5110000, 0x00000000f5110000, 0x00000000f5230000) - to space 1152K, 0% used [0x00000000f5230000, 0x00000000f5230000, 0x00000000f5350000) - tenured generation total 22992K, used 13795K [0x00000000f8550000, 0x00000000f9bc4000, 0x0000000100000000) - the space 22992K, 59% used [0x00000000f8550000, 0x00000000f92c8cc8, 0x00000000f92c8e00, 0x00000000f9bc4000) - Metaspace used 14926K, capacity 15128K, committed 15360K, reserved 1062912K - class space used 1895K, capacity 1954K, committed 2048K, reserved 1048576K ``` +[GC (JvmtiEnv ForceGarbageCollection) [PSYoungGen: 4395K->352K(76288K)] 21487K->17443K(166912K), 0.0013122 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] +[Full GC (JvmtiEnv ForceGarbageCollection) [PSYoungGen: 352K->0K(76288K)] [ParOldGen: 17091K->16076K(88064K)] 17443K->16076K(164352K), [Metaspace: 20651K->20651K(1069056K)], 0.0251548 secs] [Times: user=0.15 sys=0.01, real=0.02 secs] +``` \ No newline at end of file