java基础四---jdk内置工具的使用
0x01 JPS的使用
JPS是jdk内置工具,主要用来查看java进程以及机器上的所有jvm实例,默认连接端口为1099
jps <hostid>: <hostname>[:<port>]
-q 只显示pid,不显示class名称,jar文件名和传递给main 方法的参数
-m 输出传递给main 方法的参数,在嵌入式jvm上可能是null
-l 输出应用程序main class的完整package名 或者 应用程序的jar文件完整路径名
-v 输出传递给JVM的参数
0x02 jinfo的使用
jinfo观察运行中的java程序的运行环境参数:参数包括Java System属性和JVM命令行参数,一般搭配jsp使用
用法:
jinfo [option] <pid>
jinfo [option] <executable <core>
jinfo [option] [server_id@]<remote server IP or hostname>
参数:
pid 进程号
executable 产生core dump的java executable
core core file
remote-hostname-or-IP 主机名或ip
server-id 远程主机上的debug server的唯一id
选项:
no option 打印命令行参数和系统属性
-flags 打印命令行参数
-sysprops 打印系统属性
-h 帮助
0x03 jstat的使用
一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。
具体参数如下:
Option | Displays |
class | 用于查看类加载情况的统计 |
compiler | 用于查看HotSpot中即时编译器编译情况的统计 |
gc | 用于查看JVM中堆的垃圾收集情况的统计 |
gccapacity | 用于查看新生代、老生代及持久代的存储容量情况 |
gccause | 用于查看垃圾收集的统计情况(这个和-gcutil选项一样),如果有发生垃圾收集,它还会显示最后一次及当前正在发生垃圾收集的原因。 |
gcnew | 用于查看新生代垃圾收集的情况 |
gcnewcapacity | 用于查看新生代的存储容量情况 |
gcold | 用于查看老生代及持久代发生GC的情况 |
gcoldcapacity | 用于查看老生代的容量 |
gcpermcapacity | 用于查看持久代的容量 |
gcutil | 用于查看新生代、老生代及持代垃圾收集的情况 |
printcompilation | HotSpot编译方法的统计 |
参数:
-t n
用于在输出内容的第一列显示时间戳,这个时间戳代表的时JVM开始启动到现在的时间(注:在IBM JDK5中是没有这个选项的)。
-h n
用于指定每隔几行就输出列头,如果不指定,默认是只在第一行出现列头。
vmid - VM的进程号,即当前运行的java进程号。
interval–间隔时间,单位可以是秒或者毫秒,通过指定s或ms确定,默认单位为毫秒。
count-打印次数,如果缺省则打印无数次。
不同的统计维度(statOption)及输出说明
-class 类加载情况的统计
列名 | 说明 |
Loaded | 加载了的类的数量 |
Bytes | 加载了的类的大小,单为Kb |
Uploaded | 卸载了的类的数量 |
Bytes | 卸载了的类的大小,单为Kb |
Time | 花在类的加载及卸载的时间 |
-compiler HotSpot中即时编译器编译情况的统计
列名 | 说明 |
Compiled | 编译任务执行的次数 |
Failed | 编译任务执行失败的次数 |
Invalid | 编译任务非法执行的次数 |
Time | 执行编译花费的时间 |
FailedType | 最后一次编译失败的编译类型 |
FailedMethod | 最后一次编译失败的类名及方法名 |
-gc JVM中堆的垃圾收集情况的统计
太多了,以后在补吧
http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html