jvm学习-JDK工具
2016-06-13 00:00
387 查看
摘要: 介绍主要使用的几种JDK工具
java.exe javac.exe是我们熟悉的命令,这个目录下面还有其他很多命令,有时候我们程序部署在服务器上就只能借助这些命令来定位我们程序问题,这些命令通常都很轻巧,因为这些命令的核心功能代码是在lib/tools.jar中实现了,看几个常用的工具:
功能:虚拟机进程状况工具,主要用来查询虚拟机进程信息
命令: jps [options] [hostid]
参数: -m 输出main函数参数,-v输出启动时jvm参数,-l输出主类全名
例子:输出当前机器上java进程的id和主类名:jps -l
jinfo
功能:java配置信息工具,查看虚拟机参数,也可以动态修改虚拟机参数
命令:jinfo [option] pid
参数:-flag name 显示参数,-flag [+|-] name 启用或禁用参数,-flag name=value给指定参数设定值,-flags打印jvm命令行参数,-sysprops打印java系统属性
例子:在系统运行期打印垃圾回收信息:
jinfo -flag +PrintGC 23890
jinfo -flag +PrintGCDetails 23890
jstat
功能:虚拟机统计信息监控,收集虚拟机进程运行数据
命令:jstat [option vmid [interval[s|ms] [count]]],interval 代表间隔,count代表统计次数
参数:
例子:查看进程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 显示锁的附加信息
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
java.exe javac.exe是我们熟悉的命令,这个目录下面还有其他很多命令,有时候我们程序部署在服务器上就只能借助这些命令来定位我们程序问题,这些命令通常都很轻巧,因为这些命令的核心功能代码是在lib/tools.jar中实现了,看几个常用的工具:
[b]命令行工具:[/b]
jps功能:虚拟机进程状况工具,主要用来查询虚拟机进程信息
命令: jps [options] [hostid]
参数: -m 输出main函数参数,-v输出启动时jvm参数,-l输出主类全名
例子:输出当前机器上java进程的id和主类名:jps -l
jinfo
功能:java配置信息工具,查看虚拟机参数,也可以动态修改虚拟机参数
命令:jinfo [option] pid
参数:-flag name 显示参数,-flag [+|-] name 启用或禁用参数,-flag name=value给指定参数设定值,-flags打印jvm命令行参数,-sysprops打印java系统属性
例子:在系统运行期打印垃圾回收信息:
jinfo -flag +PrintGC 23890
jinfo -flag +PrintGCDetails 23890
jstat
功能:虚拟机统计信息监控,收集虚拟机进程运行数据
命令:jstat [option vmid [interval[s|ms] [count]]],interval 代表间隔,count代表统计次数
参数:
class | 类加载器的行为统计 |
compiler | <|
gc | 堆的垃圾回收器的行为统计 |
gccapacity | Java各代区域以及对应空间的容量统计 |
gccause | 垃圾回收的摘要信息(等同于-gcutil), 以及最后的和当前的(如适用)垃圾回收事件的原因。 |
gcnew | new generation的行为统计 |
gcnewcapacity | new generation及其对应空间的大小统计。 |
gcold | old和permanent generation的行为统计。 |
gcoldcapacity | old generation的大小统计。 |
gcpermcapacity | permanent generation的大小统计。 |
gcutil | 垃圾回收统计的摘要信息。 |
printcompilation | HotSpot汇编方法统计。 |
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 显示锁的附加信息
[b]可视化工具:[/b]
Jconsole.exe:把上面命令行信息图形化展示出来,主要包含四个部分,堆、线程、类、cpuJvisualvm.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
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树