命令行工具与参数调优

从实战角度了解JVM内存管理的世界


运行日志、异常堆栈、GC日志、线程快照、堆转储快照都是我们定位系统信息的信息

jdk/bin中“赠送”的应用程序具有很大的作用,这些命令行工具大多数是jdk/lib/tools.jar类库的包装,即这些工具都是tools类库用Java实现的,Windows下Shift+右键快速进入指定文件夹,下面概述重要的命令行工具,详情参见ORACLE文档

jps

JVM process status Tool,显示指定系统内所有的Hotpot虚拟机进程,和Linux中ps类似,列出名称和进程唯一ID

  • -q:只输处ID,忽略名字
  • -m:输出进程启动时传递给main()的参数
  • -l:输出主类全名
  • -v:出书进行启动时的JVM参数
1
2
3
4
5
6
7
8
9
10
11
12
PS C:\Program Files\Java\jdk1.8.0_201\bin> jps -l
15680
17508 org.jetbrains.jps.cmdline.Launcher
18644 org.jetbrains.jps.cmdline.Launcher
2980 jdk.jcmd/sun.tools.jps.Jps
4408
PS C:\Program Files\Java\jdk1.8.0_201\bin> jps -q
15680
17508
18644
4408
8812

jstat

JVM Statistics Monitoring Tool,收集虚拟机的类装载、内存、垃圾收集、JIT编译等运行数据,命令格式jstat -option -id -interval -countoption表示查询信息类型,id表示查询进程,interval表示查询间隔,count表示查询次数

  • -class:监视类装载、卸载数量和字节数以及所花费的时间
  • -gc:监视堆状况,包括Eden区、两个survivor区,老年代、永久代等容量、已用空间、GC时间合计等
  • -gcnew:新生代GC状况
  • -gcold:老年代GC状态
  • -compiler:输出JIT编译过的方法、耗时等信息
  • -printcompilation:输出编译过的方法名称

jinfo

Configuration Info For Java,显示JVM配置信息

jmap

Memory Map for Java,生成JVM内存转储快照

jhat

JVM Heap Dump Browser,用于分析上面生成的快照,可在浏览器查看

jstack

Stack Trace for Java,显示虚拟机的线程快照