1)jps命令
功能介绍:
jps是用来查看JVM里面所有进程的具体状态,包括进程ID,进程启动的路径等等。与unix上的ps类似,用来显示本地java进程,可以查看本地运行着几个java程序,并显示他们的进程号。注意是显示当前用户有访问权限的进程。
2)jconsole
功能介绍:
jconsole是基于java Management Extensions(JMX)的实时图形检测工具,这个工具利用了内建到JVM里面的JMX指令来提供实时的性能和资源监控,包括了java程序的内存使用,Heap size,线程的状态,类的份配状态和空间使用等等。
3)jinfo(仅linux有)
功能介绍:
jinfo可以从core文件里面知道奔溃的java应用程序的配置信息,目前只有在Solaris和Linux的JDK版本里面才有。观察运行中的java程序运行环境参数:参数包括java System属性和JVM命令行参数
范例
jinfo 2159
其中25159就是java进程id号,可以用前面的jps命令得到这个id号。
4)jstack(仅linux有)
功能介绍:
通过jstack可以观察到jvm中当前所有线程的运行情况和线程当前状态
如果java程序奔溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松知道java程序是如何奔溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息,如果现在运行的java程序呈现hung状态,jstack是非常有用的。目前只有在Solaris和linux的jdk版本中才有。
###################################################
最近系统总是每隔一周左右就莫名其妙down掉。于是研究了一下jdk下面几个常用的查看
jvm运行时状态的参数,很快找出了问题所在。现在把几个命令记录一下:
1. jstat
这个命令对于查看Jvm的堆栈信息很有用。能够查看eden,survivor,old,perm等heap的capacity,utility信息
对于查看系统是不是有能存泄漏以及参数设置是否合理有不错的意义
2. jstack
这个是用来查看jvm当前的thread dump的。可以看到当前Jvm里面的线程状况。
这个对于查找blocked线程比较有意义
3. jmap .
这个是用来查看jvm当前的heap dump的。可以看出当前jvm中各种对象的数量,所占空间等等。
尤其值得一提的是这个命令可以到处一份binary heap dump的bin文件,这个文件能够直接用
Eclipse Memory Anayliser来分析,并找出潜在的内存泄漏的地方。
4. 还有一个比较有用的非jvm命令--netstat
通过这个命令可以看到linux系统当前在各个端口的链接状态,比如查看数据库连接数等等
转载于:https://blog.51cto.com/jinyan2049/1220919