常用java命令

命令简介

对象信息

jmap -histo:live ${pid} |sort -k2 -nr |less

jmap命令在使用前会报Can't attach to the process: ptrace(PTRACE_ATTACH, ..), 参见该篇文章解决即可

jstat -gcutil pid 600 10

jvm 总览

https://my.oschina.net/feichexia/blog/196575

系统资源

系统资源 http://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html

vmstat 2

top

参考

https://my.oschina.net/goldwave/blog/168516

运用实例

java线程突然内存占用 90% 找出问题所在

  • 找到java进程
    1
    pid=`ps -elf |grep appname |grep -v grep`
  • 找到进程中最耗时间的线程

pid2=top -Hp ${pid}

  • 将对应的线程pid转化为 16进制
    nid=printf "%x \n " ${pid2}

  • jstack生成进程的线程快照
    jstack ${pid}

  • 从线程快照中定位对应的 java类 和对应方法
    jstack ${pid} |grep ${nid}

  • 最后查看指定类的代码