天天看点

JVM诊断调优CheatSheet

包含诊断调优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 &lt;要显示的线程栈数&gt; -p &lt;指定的Java Process&gt;

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>

转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。