Java中常用命令

时间:2023-02-25 09:00:08

查看系统状态:

  • 磁盘空间:df -h
  • 目录占用空间:du -h --max-depth=1[目录或者文件]
  • 内存:free -m
  • 系统负载及CPU:top -c
  • CPU各核状态:mpstat -p All
  • 进程状态:ps aux | grep xxx
  • 进程内线程数:patree -p [pid]| wc -1
  • 进程打开文件数:lsof -p [pid]| wc -1 
  • 打开文件数排行榜:lsod | awk '{print $1,$2,$NF}' |sort -n |uniq -c |sort -nr | head -n 100
  • 端口状态:netstat -tln | grep [port]
jstat

  •      jstat -gc 59726 1000
  • jstat -gc 59726 1000 10
  • jstat -gcutil [pid] 1000
  • 进程内存及GC状况。第一个参数是PID,第二个频率,第三个是次数。

jmap内存映射

  1. 堆视图:jmap -heap $PID
  • 内存占用柱状图(前20):jmap -F -histo $PID | head -20
  • 存活对象占用柱状图(前20):jmap -histo:live $PID | head -20
  • 进程僵死时,需要增加-F参数

  1. dump文件分析。
  • jmap -dump:format=b,file=文件名 [pid]
  • jmap -F -dump:live,format=b,file=head.hprof $PID
  1. dump 文件里,值得关注的线程状态有:

  • 死锁,Deadlock(重点关注)
  • 执行中,Runnable
  • 等待资源,Waiting on condition(重点关注)
  • 等待获取监视器,Waiting on monitor entry(重点关注)
  • 暂停,Suspended
  • 对象等待中,Object.wait() 或 TIMED_WAITING
  • 阻塞,Blocked(重点关注)
  • 停止,Parked
jps

Java进程列表

jstack

jstack [pid] | grep waiting
如果在连续几次输出线程堆栈信息都存在于同一个或多个线程上时,则说明系统中有锁竞争激烈,死锁,或锁饿死的现象
进程处于hung死状态可以用-F强制打出
进程内的线程数:pstree -p [pid] | wc -l

kill

  • kill -3 [pid]或者kill -QUIT [pid]    线程的相关信息就输出到console
  • kill -15 [pid]
  • kill -9 [pid]

内存分析工具
  • Memory Analyzer
  • VisualVM