专栏名称: ImportNew
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
目录
相关文章推荐
Java编程精选  ·  async/await 到底要不要加 ... ·  22 小时前  
Java编程精选  ·  突然崩了!很多人以为手机坏了!官方紧急回应 ·  2 天前  
Java编程精选  ·  AI 公司董事长。。十几刀。。刺死 CTO。。。 ·  昨天  
芋道源码  ·  如何应对消息堆积? ·  3 天前  
芋道源码  ·  DeepSeek 秒变智能客服,咨询效率翻倍!!! ·  3 天前  
51好读  ›  专栏  ›  ImportNew

JVM 诊断调优 CheatSheet

ImportNew  · 公众号  · Java  · 2017-04-16 12:01

正文

(点击 上方公众号 ,可快速关注)


来源:飒然Hang,

www.rowkey.me/blog/2017/03/23/java-profile-cheatsheet/

如有好文章投稿,请点击 → 这里了解详情


常用Shell命令


查看网络状况


netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'


使用top去获取进程cpu使用率;使用/proc文件查看进程所占内存。


#!/bin/bash

for i in `ps -ef | egrep -v "awk|$0" | awk '/'$1'/{print $2}'`

do

mymem=`cat /proc/$i/status 2> /dev/null | grep VmRSS | awk '{print $2" " $3}'`

cpu=`top -n 1 -b |awk '/'$i'/{print $9}'`

done


常用JDK命令


查看类的一些信息,如字节码的版本号、常量池等


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


第三方工具


========awesome-scripts========


安装:


curl -s "https://raw.githubusercontent.com/superhj1987/awesome-scripts/master/self-installer.sh" | bash -s


使用:


显示最繁忙的java线程: -c -p


opscipts show-busy-java-threads [-c] [-p]


使用greys跟踪方法耗时


opscripts greys [@IP:PORT]


ga?: trace [class] [method]








请到「今天看啥」查看全文