在JDK的安用装目录bin下,有一些有非常实用的小工具,可用于分析JVM初始配置、内存溢出、内存泄漏、硬件资源异常等问题
我们在jdk目录下会看到bin目录,一般这些工具就放在这儿。
1、jps
大家都应该用过jps这个命令吧,通过jps工具我们可以知道当前正在运行的Java进程,以及这些进程初始化的参数配置。
他可以有很多参数
-q:仅输出VM标识符,不包括classname,jar name,arguments in main method
-m:输出main method的参数
-l:输出完全的包名,应用主类名,jar的完全路径名
-v:输出jvm参数
-V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件
-Joption:传递参数到vm,例如:-J-Xms512m
2、jstart
1、使用jstat可以看到GC的统计信息。命令如下:jstat -gcutil
也可以使用:jstat -gc
参数表示有:
S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间2、类加载数量统计
命令如下:jstat -class
2、编译数量统计
命令如下:jstat -compiler
3、jmap
jmap客户查看当前进程堆内存的初始化时的大小,分配比率。命令如下:./jmap -heap
图形化虚拟机监控工具JConsole
Console是JDK自带的图形化性能监控工具,通过它可以监控堆信息、永久区信息、类加载信息、线程信息、JVM信息等。
连接JAVA程序
JConsole在JAVA_HOME/bin目录下,启动后,会出现新建连接对话框,可以连接本地应用程序,也可以连接远程程序。针对远程程序,需要远程程序在启动时,增加如下参数:
写代码不能为了完成任务而完成任务的。