文章目录
jps-查看Java进程
Jps命令作用是列出系统中所有的Java应用程序。通过Jps命令可以方便的查看Java进程的启动类、传入参数和Java虚拟机参数等。
Jps命令参数:
- 参数 -q :指定jps只输入进程id
- 参数 -m:用于输出传递给Java进程(主函数)的参数
- 参数 - l :输出主函数的完整路径
- 参数 - v:可以显示传递给Java虚拟机的参数
jstat-查看虚拟机运行时信息
Jstat命令是一个可以观察Java应用程序运行时相关信息的工具,可查看堆信息的详细信息
jstat -help|-options
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]
使用 jstat -options
获取 option的参数列表:
- class:获取ClassLoader的相关信息
- compiler:显示JIT编译的相关信息
- gc:显示与GC相关的堆信息
- gccapacity:显示各个代的容量及使用情况
- gccause:显示垃圾回收相关信息(同-gcutil),同时显示最后一次或当前正在发生的垃圾回收的诱发原因
- gcmetacapacity:显示永久代的大小
- gcnew:显示新生代信息
- gcnewcapacity:显示新生代大小与使用情况
- gcold:显示老年代和永久代的信息
- gcoldcapacity:显示老年代的大小。
- gcutil:显示垃圾回收信息
- printcompilation:输出JIT编译的方法信息
其他参数 - t:可以在输出信息前加上一个Timestamp列,显示程序的运行时间
- h:可以指定在周期性数据输出时,输出多少行数据后输出一个表头信息
- interval参数用于指定输出统计数据的周期,单位为毫秒
- count参数用于指定一共输出多少次数据
jinfo-查看虚拟机参数
jinfo命令可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时修改部分参数。
相关参数
- -flag:打印指定Java虚拟机的参数值
- -flag [+|-]:设置指定Java虚拟机参数的布尔值。
- flag=:设置指定Java虚拟机参数的值。
jmap-导出堆到文件
jmap命令是一个多功能的命令。它可以生成Java程序的堆Dump文件,也可以查看堆内对象实例的统计信息、查看ClassLoader的信息及finalizer队列
参数
- -histo[:live] :java对象的统计信息(:live存活)
- -dump:导出堆到文件(jmap -dump:live,format=b,file=heap.bin pid)
- -finalizerinfo: 查看finalizer队列
- -permstat:查看类加载器信息和父子关系
jhat-jdk自带的堆分析工具
使用jhat命令可以分析Java应用程序的堆快照内容
jhat /opt/heap.bin
7000端口可访问。
jcmd-多功能命令行
是一个多功能的工具,可以用来导出堆、查看Java进程、导出线程信息、执行GC等
- -l:列出当前系统所有虚拟机-> jcmd -l
- help:针对每一个虚拟机,列出所支持的命令-> jcmd 2420 help
格式:jcmd [port] [command] jcmd 2420 VM.uptime
jconsole-图形化虚拟机监控工具
JConsole是JDK自带的图形化性能监控工具。通过JConsole工具,可以查看Java应用程序的运行概况,可以监控堆信息、永久区使用情况、类加载情况
JConsole远程连接配置
//无口令
java
-Djava.rmi.server.hostname=172.17.168.161 #远程服务器ip,即本机ip
-Dcom.sun.management.jmxremote #允许JMX远程调用
-Dcom.sun.management.jmxremote.port=8888 #自定义jmx 端口号
-Dcom.sun.management.jmxremote.ssl=false # 是否需要ssl 安全连接方式
-Dcom.sun.management.jmxremote.authenticate=false #是否需要秘钥
HoldIOMain
Visual VM-可视化性能监控工具
Visual VM是一个功能强大的多合一故障诊断和性能监控可视化工具,它集成了多种性能统计工具的功能,使用Visual VM可以代替jstat、jmap、jhat、jstack,甚至代替JConsole。在JDK6升级到JDK7以后,Visual VM便作为JDK的一部分发布,即它完全免费。
简单介绍下能做什么
- 概述:查看JVM参数、版本和系统属性
- 监视:监控CPU、内存、类和线程信息,可执行GC和 堆Dump
- 线程: 监控线程的桩体和运行时间 和线程Dump
- 采样器:实时监控CPU和内存的占用情况,CPU采样可以定位到方法,可以设置采样的条件
内存快照分析
文件->装入->选择文件
- 概要展示了当前内存的整体信息,包括内存大小、实例总数、类总数等
- 类页面中,以类为索引,显示了每个类的实例数和占用空间。在类页面中,还可以对两个不同的内存快照文件进行比较,这个功能可以帮助开发者快速分析同一应用程序在运行的不同时刻,内存数据产生的变化。在这个类展示的页面中,如果需要获取指定类的更多信息,可以单击右键,进入该类的实例页面
- 在实例数页面中,将显示指定类的所有实例。开发者可以查看当前内存中的实际内容。
- OQL控制台提供了更强大的对象查询功能。(需要了解OQL语法)
MAT(MemoryAnalyzer)
File->open heap dump…选择堆转储文件。打开后 选择泄漏分析报告、 打开堆转储时显示此对话框 Finish
先到这里挖个坑,后头来补。当然还有阿里的arthas也没说。