jps是JVM进程查找工具,类似于linux的ps命令。我们使用这个命令主要是为了找到当前正在运行的JVM及其进程ID。
jps支持的参数选项:
jstat是用于监视JVM各种运行时的状态信息的命令行工具,包括类加载、内存、垃圾收集、即时编译等运行时数据。
D:\workspace\python\cloud_print>jstat -gc 27044 500 10
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT CGC CGCT GCT
0.0 15360.0 0.0 15360.0 148480.0 9216.0 96256.0 9598.0 49456.0 47304.6 6784.0 5894.4 8 0.058 0 0.000 4 0.006 0.064
0.0 15360.0 0.0 15360.0 148480.0 9216.0 96256.0 9598.0 49456.0 47304.6 6784.0 5894.4 8 0.058 0 0.000 4 0.006 0.064
0.0 15360.0 0.0 15360.0 148480.0 9216.0 96256.0 9598.0 49456.0 47304.6 6784.0 5894.4 8 0.058 0 0.000 4 0.006 0.064
0.0 15360.0 0.0 15360.0 148480.0 9216.0 96256.0 9598.0 49456.0 47304.6 6784.0 5894.4 8 0.058 0 0.000 4 0.006 0.064
0.0 15360.0 0.0 15360.0 148480.0 9216.0 96256.0 9598.0 49456.0 47304.6 6784.0 5894.4 8 0.058 0 0.000 4 0.006 0.064
0.0 15360.0 0.0 15360.0 148480.0 9216.0 96256.0 9598.0 49456.0 47304.6 6784.0 5894.4 8 0.058 0 0.000 4 0.006 0.064
0.0 15360.0 0.0 15360.0 148480.0 9216.0 96256.0 9598.0 49456.0 47304.6 6784.0 5894.4 8 0.058 0 0.000 4 0.006 0.064
0.0 15360.0 0.0 15360.0 148480.0 9216.0 96256.0 9598.0 49456.0 47304.6 6784.0 5894.4 8 0.058 0 0.000 4 0.006 0.064
0.0 15360.0 0.0 15360.0 148480.0 9216.0 96256.0 9598.0 49456.0 47304.6 6784.0 5894.4 8 0.058 0 0.000 4 0.006 0.064
0.0 15360.0 0.0 15360.0 148480.0 9216.0 96256.0 9598.0 49456.0 47304.6 6784.0 5894.4 8 0.058 0 0.000 4 0.006 0.064
上述-gc表示查看垃圾收集状况,其中各列的含义如下(内存空间单位:KB,时间单位:秒):
jstat支持的参数选项:
jinfo用于查看JVM参数信息,并可以实时调整少量可以在运行时改变的参数。
jinfo的输出内容有三部分,分别是:
可以使用jinfo -sysprops 只查看JVM运行时的环境变量。
可以使用jinfo -flags 只查看生效的虚拟机参数配置,比如jinfo -flags 10517。
可以使用jinfo -flag 查看指定参数的值,比如jinfo -flag MaxHeapSize 10517。
可以使用jinfo -flag [+|-] 实时开启或关闭某个可以在运行时改变的参数,比如jinfo -flag +HeapDumpOnOutOfMemoryError 10517。
可以使用jinfo -flag =实时修改某个可以在运行时改变的参数的值,比如jinfo -flag MaxHeapFreeRatio=75 10517。
jmap是java内存映像工具,主要用于查询当前堆和方法区的详细信息,生成堆的快照文件等
可以使用jmap -histo[:live] 分析当前对中对象,例如./jmap -histo:live 10517。
可以使用jmap -dump:[live,]format=b,file= 对目标JVM进行快照转储。
jstack用于生成虚拟机当前时刻的线程快照。生成线程快照主要是为了定位长时间停顿的线程,比如线程间死锁、死循环、请求外部资源超时等等。通过jstack可以查看到各个线程的调用堆栈信息,就可以知道线程目前运行在哪一句代码,在做什么事情或者等待什么资源。
jhsdb除了命令以外,还提供了图形化功能来监视分析JVM状况。
jhsdb使用如下命令开启目标JVM的图形化分析界面:
jhsdb hsdb --pid <pid>
jconsole是一款对JVM的可视化监视管理工具,通过它我们可以实时地监视JVM的内存、线程、类加载等信息的变化趋势。
使用下面的命令启动:
jconsole