jvm学习-JDK工具

java.exe  javac.exe是咱们熟悉的命令,这个目录下面还有其余不少命令,有时候咱们程序部署在服务器上就只能借助这些命令来定位咱们程序问题,这些命令一般都很轻巧,由于这些命令的核心功能代码是在lib/tools.jar中实现了,看几个经常使用的工具:java

命令行工具:

jps服务器

功能:虚拟机进程情况工具主要用来查询虚拟机进程信息jvm

命令: jps [options] [hostid]函数

参数: -m 输出main函数参数,-v输出启动时jvm参数,-l输出主类全名工具

例子:输出当前机器上java进程的id和主类名:jps -lspa

jinfo命令行

功能:java配置信息工具查看虚拟机参数,也能够动态修改虚拟机参数线程

命令:jinfo [option] pidcode

参数:-flag name 显示参数,-flag [+|-] name 启用或禁用参数,-flag name=value给指定参数设定值,-flags打印jvm命令行参数,-sysprops打印java系统属性orm

例子:在系统运行期打印垃圾回收信息:

        jinfo -flag +PrintGC 23890
        jinfo -flag +PrintGCDetails 23890

jstat

功能:虚拟机统计信息监控收集虚拟机进程运行数据

命令:jstat [option vmid [interval[s|ms] [count]]],interval 表明间隔,count表明统计次数

参数:

class 类加载器的行为统计
compiler HotSpot即时编译器的行为统计
gc 堆的垃圾回收器的行为统计
gccapacity Java各代区域以及对应空间的容量统计
gccause 垃圾回收的摘要信息(等同于-gcutil), 以及最后的和当前的(如适用)垃圾回收事件的缘由。
gcnew new generation的行为统计
gcnewcapacity new generation及其对应空间的大小统计。
gcold old和permanent generation的行为统计。
gcoldcapacity old generation的大小统计。
gcpermcapacity permanent generation的大小统计。
gcutil 垃圾回收统计的摘要信息。
printcompilation HotSpot汇编方法统计。

例子:查看进程id为23812的垃圾回收摘要信息:jstat -gcutil 23812 1000 

jmap

功能:内存映像工具,查看内存快照

命令:jmap [option] vmid

参数:-heap 显示堆详细信息,如使用哪一种回收器、参数配置、分代内存情况,  -histo 统计对象信息, -dump:[live,]format=b,file=<filename>转存为快照

例子:查看进程id为23812 的内存分配状况,jmap -heap 23812

jstack

功能:堆栈跟踪工具,主要查询线程快照,经常使用于线程挂住、死锁分析 ,结合top -Hp pid命令能够找出cpu占用最多的线程

命令:jstack [option] vmid

参数:-l 显示锁的附加信息

可视化工具:

Jconsole.exe:把上面命令行信息图形化展现出来,主要包含四个部分,堆、线程、类、cpu
Jvisualvm.exe:Jconsole的升级版,把更多命令行工具整合了进来

远程监控
1. Jmx:
setenv.sh
-Djava.rmi.server.hostname=192.168.1.110
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8081
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false'

2.jstatd.exe 创建jstatd.all.policy文件,内容: grant codebase "file:/usr/java/jdk1.8.0_45/lib/tools.jar" {    permission java.security.AllPermission; }; jstatd -J-Djava.security.policy=jstatd.all.policy

相关文章
相关标签/搜索