1. JVM常用命令
jps | 显示系统中所有Hotspot虚拟机进程 |
---|---|
jstat | 收集Hotspot虚拟机各方面运行数据 |
jstack | 显示虚拟机的线程的栈信息 |
jinfo | 显示和修改虚拟机的各项配置信息 |
jmap | 生成虚拟机的堆内存的快照信息,查询finalize执行队列,Java堆和永久代详细信息 |
javap | 查看经javac之后产生的JVM字节码代码 |
jcmd | 一个多功能工具,可以用来导出堆,查看java进程,导出线程信息,执行GC、查看性能相关数据 |
jconsole | 基于JMX的可视化监视、管理工具 |
jvisualvm | JDK中最强大运行监视和故障处理工具 |
(1). jps命令
JVM Process Status Tool,该命令用于列出正在运行的虚拟机进程,显示main类的名称和虚拟机进程id。该命令受当前用户的访问权限影响,比如linux下非root用户只列出当前用户启动的虚拟机进程。
常用参数:
-l | 输出主类全名 |
---|---|
-v | 输出虚拟机进程启动的jvm参数 |
-m | 输出启动时传递给main函数的参数 |
(2). jstack命令
用于生成虚拟机当前的线程快照信息,包含每一条线程的堆栈信息。该命令通常用于定位线程停顿原因,当出现线程停顿时,可通过stack查看每个线程的堆栈信息,进而分析停顿原因。
常用参数:
-l | 除堆栈外,显示锁的附加信息 |
---|---|
-F | 当请求不被响应时,强制输出线程堆栈 |
-m | 混合模式,打印java和本地C++调用的堆栈信息 |
(3). jstat命令
用于监控各种运行状态信息的命令。在只有文本控制台的环境中(如企业中的生产环境),该工具非常有用。 可以用来显示系统中类装载、垃圾回收、运行期编译状况等运行数据。
常用参数:
class | 类装载相关信息. |
---|---|
compiler | JIT编译器编译过的方法、耗时等. |
gc | java堆信息和垃圾回收状况. |
gccapacity | 关注java堆各个区的最大和最小空间. |
gccause | 类似gcutil,额外输出导致上一次gc的原因. |
gcnew | 新生代gc状况. |
gcnewcapacity | 关注新生代gc使用的最大和最小空间. |
gcold | 老年代gc状况. |
gcoldcapacity | 关注老年代gc使用的最大和最小空间. |
gcpermcapacity | 关注持久代gc使用的最大和最小空间. |
gcutil | 关注已使用空间占总空间比例. |
printcompilation | 输出已经被JIT编译的方法. |
(4). jinfo命令
用于查看和修改虚拟机的各项参数信息
(5). jmap命令
可以产生堆dump文件,查询堆和持久代的详细信息等。
常用参数:
-dump | 生成堆dump文件,格式为: -dump:[live,]format=b,file=<filename> |
---|---|
-heap | 显示java堆的详细信息,包括垃圾回收期、堆配置和分代信息等 |
-histo | 显示堆中对象的统计信息,包括类名称,对应的实例数量和总容量 |
-permstat | 统计持久代中各ClassLoader的统计信息。 |