包含诊断调优java应用的各种命令以及jvm配置示例。
查看网络状况
使用top去获取进程cpu使用率;使用/proc文件查看进程所占内存。
查看类的一些信息,如字节码的版本号、常量池等
javap -verbose classname
查看jvm进程
jps jcmd -l
查看进程的gc情况
jstat -gcutil [pid] (显示总体情况) jstat -gc [pid] 1000 10(每隔1秒刷新一次 一共10次)
查看jvm内存使用状况
jmap -heap [pid]
查看jvm内存存活的对象:
jcmd [pid] GC.class_histogram jmap -histo:live [pid]
把heap里所有对象都dump下来,无论对象是死是活
jmap -dump:format=b,file=xxx.hprof [pid]
先做一次full GC,再dump,只包含仍然存活的对象信息:
jcmd [PID] GC.heap_dump [FILENAME] jmap -dump:format=b,live,file=xxx.hprof [pid]
线程dump
jstack [pid] #-m参数可以打印出native栈的信息 jcmd Thread.print kill -3 [pid]
查看目前jvm启动的参数
jinfo -flags [pid] #有效参数 jcmd [pid] VM.flags #所有参数
查看对应参数的值
jinfo -flag [flagName] [pid]
启用/禁止某个参数
jinfo -flag [+/-][flagName] [pid]
设置某个参数
jinfo -flag [flagName=value] [pid]
查看所有可以设置的参数以及其默认值
java -XX:+PrintFlagsInitial
安装:
<code>curl -s "https://raw.githubusercontent.com/superhj1987/awesome-scripts/master/self-installer.sh" | bash -s</code>
使用:
显示最繁忙的java线程: -c <要显示的线程栈数> -p <指定的Java Process>
opscipts show-busy-java-threads [-c] [-p]
使用greys跟踪方法耗时
opscripts greys [@IP:PORT] ga?: trace [class] [method]
显示当前cpu和内存使用状况,包括全局和各个进程的。
opscripts show-cpu-and-memory
进入jvm调试交互命令行,包含对java栈、堆、线程、gc等状态的查看
opscripts jvm [pid]
原文出处:后端技术杂谈
<a href="http://www.rowkey.me/blog/2017/03/23/java-profile-cheatsheet/" target="_blank">原文链接</a>
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。