记录一下在java运行环境中一些有用的命令和方法。
最近本身比较忙外加熬夜看欧洲杯,感觉身体被掏空了 (⊙_⊙)
jps [options] [hostid]
常用参数说明
-m 输出传递给main方法的参数,如果是内嵌JVM则输出null
-l 输出应用程序主类的完整包名,或者是应用程序JAR文件的完整路径
-v 输出传给JVM的参数
例如:jps -lvm
查看java程序的java stack和native stack信息,如果正在运行的java程序呈现hung状态,非常有用。
把java应用的堆内存信息导出来,配合mat或者jhat来分析查看。
例如:jmap -J-d64 -heap pid
1.jps获取java进程的pid
2.jstack pid >> java.txt 导出该进程的线程
3.top -H -p PID 查看对应进程的哪个线程占用CPU过高
4.echo "obase=16;${PID}"|bc 将线程PID转换为16进制,因为jstack导出的内容中就是16进制的
5.在java.txt中查找转换为16进制的线程PID,找到对应的线程栈。
6.分析负载高的线程栈是什么业务操作。优化并处理问题。
可以用windows下装jdk用jconsole查看或者是用jvisualvm添加主机后添加jmx查看
在catalina.sh中配置
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=123456 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.1.122" ----监控主机的hostname
查看jvm垃圾回收的情况,可以用jstat -gcutil PID 1000 1000看 如果要看老年代和持久带的容量的话可以用 jstat -gcold PID 1000 1000
PC PU OC PU 分别是持久的容量 持久带使用量 老年代容量 老年代使用量
Cloudhu 个人随笔|built by django|
沪ICP备16019452号-1