JDK命令行工具
- jps:虚拟机进程状况工具
- 概念
- JVMProcessStatusTool,显示指定系统内所有的HtoStop虚拟机进程
- 功能:
- 显示正在运行的虚拟机进程,虚拟机执行主类(main()函数所在的类)名称及本地虚拟机唯一ID(LVMID)。
- 本地虚拟机进程: LVMID = 操作系统的进程ID(PID)
- 命令
- -q:只输出LVMID,省略主类名称
- -m:输出虚拟机进程启动时传递给主类main()函数的参数
- -l:输出主类的全名,如果进程执行的jar包,输出jar路径
- -v:输出虚拟机进程启动时的jvm参数
- 概念
- jstat:虚拟机统计信息监视工具
- 概念
- JSVStatisticeMonitoringTool,显示虚拟机运行数据
- 命令
- -class:监视类装载,卸载数量,总空间以及类装载所耗费时间
- -gc:监视java堆状况:Eden区,两个survivor区,老年代,永久代等的容量,已用空间,gc时间合计等信息
- nterval:查询间隔
- Count:查询次数
- 默认:查询一次
- 指定:每250毫秒查询一次,一共查询5次
- -gccapacity:与-gc基本相同,关注java堆各个区域使用到的最大,最小空间
- -gcutil:与-gc基本相同,关注已使用空间占总空间的百分比
- -gccause:与-gcutil基本相同,额外输出导致上一次gc原因。
- -gcnew:监视新生代gc的状况
- -gcnewcapacity:与-gcnew基本相同,关注使用到的最大、最小空间
- -gcold:监视老年代gc状况
- -gcoldcapacity:与-oldgc基本相同,关注使用到的最大,最小空间
- -compiler:输出jit编译器编译方法,耗时等信息
- -printcompilation:输出已被jit编译的方法。
- 概念
- jinfo:Java配置信息工具
- 概念
- ConfigurationInfoForJava,显示虚拟机配置信息,实时查看和调整虚拟机各项参数。
- 命令
- -flags:查询未被显示指定的虚拟机参数(默认值)
- -flag[+|-] name或者-flag name=value:修改一部分运行期可写的虚拟机参数值
- 查看JVMGC相关参数值
- 设置JVMGC相关参数值
- -sysprops:查看Java系统参数(虚拟机进程System.getProperties()内容)
- 概念
- jmap:Java内存映像工具
- 概念
- MemoryMapfotJava,用于生成虚拟机的内存转储快照,heapdump文件或者dump文件。
- 查询finalize执行队列,java堆和永久代详细信息
- 如空间使用率,当前用的那种收集器等
- 命令
- -dump:生成java堆转储快照,格式-dump:[live, ]fomat=b, file=<filename>,
- live子参数说明:是否只dump出存活的对象
- -histo:显示堆中对象统计信息:类,实例变量,合计容量
- Linux/Solaris平台下有效
- -finalizeinfo:显示在F-Queue中等待Finalizer线程执行finalize方法的对象,
- -heap:显示java堆详细信息,如使用哪种回收器,参数配置,分带情况等,
- -permstat:以ClassLoder为统计口径显示永久代内存状态,
- -F:当虚拟机进程对-dump选项没有响应时,可以使用这个选项强制生成dump快照。
- -dump:生成java堆转储快照,格式-dump:[live, ]fomat=b, file=<filename>,
- 概念
- jhat:虚拟机堆转储快照分析工具
- 概念
- JVMHeapDumpBrowser,与jmap命令搭配使用,用于分析heapdump文件,
- 建立一个微型HTTP/HTML服务器,让用户可以在浏览器上查看分析结果。
- 注:一般不会直接使用jhat来分析dump文件:一般不会再部署应用程序的服务器直接分析dump文件,
- 命令
- jhap XX.bin
- 完毕后输入localhost:7000就可以查看分析结果,默认以包为单位进行分组显示。
- jhap XX.bin
- 概念
- jstack:Java堆栈跟踪工具
- 概念
- StackTraceforJava:显示虚拟机线程快照。用于生成虚拟机当前时刻的线程快照,
- 一般称为threaddump或者javacore文件。
- 命令
- -F:当正常输出的请求不被响应时,强制输出线程堆栈
- -l:除堆栈外,显示关于锁的附加信息
- -m:如果调用本地方法的话,可以显示C/C++的堆栈
-
- jdk1.5之中java.lang.Thread类增加了一个getAllStackTraces()方法:用于获取虚拟机中所有线程的StackTraceElement对象。
-
- 概念
- HSDIS:JIT生成代码反汇编:虚拟机规范中的描述逐渐成了虚拟机实现的概念模型:
- 即实现智能保证规范描述等效
JDK的可视化工具
- JConsole:Java监视与管理平台
- 概念
- JConsole是一种基于JMX的可视化监视管理工具
- 针对JMX MBean进行管理。由于MBean可以使用代码,中间件服务器的管理控制台或者所有符合JMX规范的软件进行访问
- 使用
- 1.启动:JConsole工具在JDK/bin目录下,
- 启动JConsole后,将自动搜索本机运行的jvm进程,不需要jps命令来查询指定。
- 双击其中一个jvm进程即可开始监控,也可使用“远程进程”来连接远程服务器。
- 2内存监控
- 概述:显示整个虚拟机主要运行数据的概览
- 内存:相当于可视化的jstat命令,用于监视受收集器管理的虚拟机内存的变化趋势
- 线程:相当于可视化的Jstack命令,遇到线程停顿时可以使用这个页签进行监控
- 线程长时间停顿的主要原因
- 1.等待外部资源(数据库链接,网络资源,设备资源等)
- 2.死循环
- 3.锁等待(活锁,死锁)
- 死锁可激活:正常活锁等待
- 死锁无法激活
- 1.启动:JConsole工具在JDK/bin目录下,
- 概念
- VisualVM:
- 概述
- 多合一故障处理工具 VisualVM是一个集成多个JDK命令行工具的可视化工具。
- VisualVM基于NetBeans平台开发,具备了插件扩展功能
- VisualVM在JDK/bin目录下。
- 作用:
- 1.显示虚拟机进程以及进程的配置
- 2.监视应用程序的CPU,GC,堆,方法区以及线程的信息
- 3.dump自己分析堆转存快照(jmap,jhat)
- 4.方法级的程序运行性能分析,找出被调用最多,运行时间最长的方法
- 5.离线传恒旭快照,收集程序的运行时配置,线程dump,内存dump等信息建立一个快照。可以将快照发送给开发者处进行bug反馈
- 6.其他plugins的无限可能性
- 概述