jvm调优工具
jps是JVM的一个常用命令,类似linux中的ps命令。jps是查看java进程信息的命令;ps是查看linux系统中进程的命令
格式
jps [ options ] [ hostid ]
参数说明
options
-q 只输出java进程的进程id
-l 输出java进程的进程id和main方法的类全名
-m 输出java进程的进程id和main方法的入参
-v 输出java进程的进程id和jvm的入参
-V 输出java进程的进程id和通过flag文件传入jvm的参数
hostid
命令对应的服务器ip,默认不加参数,代码查看本机
jps
查看所有的jvm进程,包括进程ID,进程启动的路径等等。
我自己也用PS,即:ps -ef | grep java
jstack
观察jvm中当前所有线程的运行情况和线程当前状态。
系统崩溃了?如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。
系统hung住了?jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。
jstat
jstat利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对进程的classloader,compiler,gc情况;
特别的,一个极强的监视内存的工具,可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量,以及加载类的数量。
jmap
监视进程运行中的jvm物理内存的占用情况,该进程内存内,所有对象的情况,例如产生了哪些对象,对象数量;
系统崩溃了?jmap 可以从core文件或进程中获得内存的具体匹配情况,包括Heap size, Perm size等等
jinfo
观察进程运行环境参数,包括Java System属性和JVM命令行参数
系统崩溃了?jinfo可以从core文件里面知道崩溃的Java应用程序的配置信息。
备注
如果能熟练运用这些命令,尤其是在linux下,那么完全可以代替jprofile等监控工具。
用命令的好处就是速度快,并且辅助于其他命令,比如grep gawk sed等,可以组装多种符合自己需求的工具。
|
|