jps
jps 命令和linux中的ps命令比较类似,不过它只会列出所有的Java进程,通过jps命令可以方便的查看java进程的启动类、传入参数和java虚拟机参数等信息。
之前我们可能会通过ps -ef | grep java 查看java进程:
ps
现在我们可以通过Jps来查看java进程,如果想要查看虚拟机参数,可以使用jps -v
jps
jps -v
jstack
jstack 用户打印指定java进程的线程堆栈信息,之前在排查CPU占用率过高的文章中我们使用过。
详细可参考:https://www.jianshu.com/p/5eb2aa94053e
jinfo
jinfo 是 JDK 自带的命令,可以用来查看正在运行的 java 应用程序的扩展参数,包括Java System属性和JVM命令行参数;也可以动态的修改正在运行的 JVM 一些参数。当系统崩溃时,jinfo可以从core文件里面知道崩溃的Java应用程序的配置信息
jinfo
其他参数可以参考 --help:
jinfo --help
jmap
jmap 有两个主要用途:
-
查看堆的情况
使用jmap -heap pid,可以打印一个堆的摘要信息,包括使用的GC算法、堆配置信息和各内存区域内存使用信息
jmap -heap - dump
使用jmap -dump:format=b,file=heapdump.phrof pid命令可以生成堆转储快照dump文件。这个在我们排查内存溢出导致频繁Full GC的情况经常用到。
获取到dump文件之后我们可以下载到本地使用MemoryAnalyzerEclipse工具对文件进行分析,从而找到问题所在。
jstat
jstat是JDK自带的一个轻量级工具,主要对java应用程序的资源和性能进行实时的命令行的监控,包括对Heap Size和来及回收状况的监控。
jstat --help我们可以通过jstat -gc pid interval来监控java应用的gc情况:
jstat -gc
如果其中的FGC(Full GC 次数)过高,并且在短时间内进行了很多次,就说明程序内存可能溢出。
通过jstat -gccause可以显示最后一次或当前正在发生的垃圾回收的诱因:
jstat -gccause
*LGCC:最后一次GC原因
*GCC:当前GC原因(No GC 为当前没有执行GC)
网友评论