- [perfcounter](perfcounter.md) - show JVM Perf Counter information
- [sysenv](sysenv.md) — view system environment variables
- [sysprop](sysprop.md) - view/modify system properties
- [thread](thread.md) - show java thread information
- [vmoption](vmoption.md) - view/modify the vm diagnostic options.
- [vmtool](vmtool.md) - jvm tool, getInstances in jvm, forceGc
## class/classloader - related
- [classloader](classloader.md) - 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.md) - dump the loaded classes in byte code to the specified location
- [jad](jad.md) - decompile the specified loaded classes
- [mc](mc.md) - Memory compiler, compiles `.java` files into `.class` files in memory
- [redefine](redefine.md) - load external `*.class` files and re-define it into JVM
- [retransform](retransform.md) - load external `*.class` files and retransform it into JVM
- [sc](sc.md) - check the info for the classes loaded by JVM
- [sm](sm.md) - check methods info for the loaded classes
## monitor/watch/trace - related
::: warning
**Attention**: commands here are taking advantage of byte-code-injection, which means we are injecting some [aspects](https://en.wikipedia.org/wiki/Aspect-oriented_programming) 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`.
Arthas provides `pipe` to process the result returned from commands further, e.g. `sm java.lang.String * | grep 'index'`. Commands supported in `pipe`:
[async](async.md) 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](base64.md) - Encode and decode using Base64 representation.
- [cat](cat.md) - Concatenate and print files
- [cls](cls.md) - clear the screen
- [echo](echo.md) - write arguments to the standard output