@ -40,6 +40,12 @@ Arthas was built to solve these issues. A developer can trouble-shoot your produ
* Supports JDK 6+
* Supports JDK 6+
* Supports Linux/Mac/Windows
* Supports Linux/Mac/Windows
### Online Tutorials(Recommend)
* [Arthas Basics ](https://alibaba.github.io/arthas/arthas-tutorials?language=en&id=arthas-basics )
* [Arthas Advanced ](https://alibaba.github.io/arthas/arthas-tutorials?language=en&id=arthas-advanced )
### Quick start
### Quick start
#### Use `arthas-boot` (Recommend)
#### Use `arthas-boot` (Recommend)
@ -72,6 +78,7 @@ You can enter its interactive interface by executing `as.sh`, or execute `as.sh
### Documentation
### Documentation
* [Online Tutorials(Recommend) ](https://alibaba.github.io/arthas/arthas-tutorials?language=en )
* [User manual ](https://alibaba.github.io/arthas/en )
* [User manual ](https://alibaba.github.io/arthas/en )
* [Installation ](https://alibaba.github.io/arthas/en/install-detail.html )
* [Installation ](https://alibaba.github.io/arthas/en/install-detail.html )
* [Quick start ](https://alibaba.github.io/arthas/en/quick-start.html )
* [Quick start ](https://alibaba.github.io/arthas/en/quick-start.html )
@ -96,7 +103,7 @@ You can enter its interactive interface by executing `as.sh`, or execute `as.sh
See what is eating your cpu (ranked by top cpu usage) and what is going on there in one glance:
See what is eating your cpu (ranked by top cpu usage) and what is going on there in one glance:
```
```bash
$ thread -n 3
$ thread -n 3
"as-command-execute-daemon" Id=29 cpuUsage=75% RUNNABLE
"as-command-execute-daemon" Id=29 cpuUsage=75% RUNNABLE
at sun.management.ThreadImpl.dumpThreads0(Native Method)
at sun.management.ThreadImpl.dumpThreads0(Native Method)
@ -162,11 +169,28 @@ public interface Servlet {
}
}
```
```
#### mc
Memory compiler, compiles `.java` files into `.class` files in memory.
```bash
mc /tmp/Test.java
```
#### redefine
Load the external `*.class` files to re-define the loaded classes in JVM.
```bash
redefine /tmp/Test.class
redefine -c 327a647b /tmp/Test.class /tmp/Test\$Inner.class
```
#### sc
#### sc
Search any loaded class with detailed information.
Search any loaded class with detailed information.
```
```bash
$ sc -d org.springframework.web.context.support.XmlWebApplicationContext
$ sc -d org.springframework.web.context.support.XmlWebApplicationContext
class-info org.springframework.web.context.support.XmlWebApplicationContext
class-info org.springframework.web.context.support.XmlWebApplicationContext
code-source /Users/xxx/work/test/WEB-INF/lib/spring-web-3.2.11.RELEASE.jar
code-source /Users/xxx/work/test/WEB-INF/lib/spring-web-3.2.11.RELEASE.jar
@ -202,7 +226,7 @@ $ sc -d org.springframework.web.context.support.XmlWebApplicationContext
View the call stack of `test.arthas.TestStack#doGet` :
View the call stack of `test.arthas.TestStack#doGet` :
```
```bash
$ stack test.arthas.TestStack doGet
$ stack test.arthas.TestStack doGet
Press Ctrl+C to abort.
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 286 ms.
Affect(class-cnt:1 , method-cnt:1) cost in 286 ms.
@ -243,7 +267,7 @@ See what is slowing down your method invocation with trace command:
Watch the first parameter and thrown exception of `test.arthas.TestWatch#doGet` only if it throws exception.
Watch the first parameter and thrown exception of `test.arthas.TestWatch#doGet` only if it throws exception.
```
```bash
$ watch test.arthas.TestWatch doGet {params[0], throwExp} -e
$ watch test.arthas.TestWatch doGet {params[0], throwExp} -e
Press Ctrl+C to abort.
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 65 ms.
Affect(class-cnt:1 , method-cnt:1) cost in 65 ms.
@ -257,7 +281,7 @@ ts=2018-09-18 10:26:28;result=@ArrayList[
Monitor a specific method invocation statistics, including total number of invocations, average response time, success rate, every 5 seconds:
Monitor a specific method invocation statistics, including total number of invocations, average response time, success rate, every 5 seconds:
```
```bash
$ monitor -c 5 org.apache.dubbo.demo.provider.DemoServiceImpl sayHello
$ monitor -c 5 org.apache.dubbo.demo.provider.DemoServiceImpl sayHello
Press Ctrl+C to abort.
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 109 ms.
Affect(class-cnt:1 , method-cnt:1) cost in 109 ms.
@ -278,7 +302,7 @@ Affect(class-cnt:1 , method-cnt:1) cost in 109 ms.
Record method invocation data, so that you can check the method invocation parameters, returned value and thrown exception later. It works as if you could come back and replay the past method invocation via time tunnel.
Record method invocation data, so that you can check the method invocation parameters, returned value and thrown exception later. It works as if you could come back and replay the past method invocation via time tunnel.
```
```bash
$ tt -t org.apache.dubbo.demo.provider.DemoServiceImpl sayHello
$ tt -t org.apache.dubbo.demo.provider.DemoServiceImpl sayHello
Press Ctrl+C to abort.
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 75 ms.
Affect(class-cnt:1 , method-cnt:1) cost in 75 ms.
@ -297,7 +321,7 @@ Affect(class-cnt:1 , method-cnt:1) cost in 75 ms.
#### Classloader
#### Classloader
```
```bash
$ classloader
$ classloader
name numberOfInstances loadedCountTotal
name numberOfInstances loadedCountTotal
BootstrapClassLoader 1 3346
BootstrapClassLoader 1 3346