您的位置:首页 > 编程语言 > Java开发

Java常用命令工具

2016-11-30 15:59 323 查看
下面是自己常用到的命令,列个表忘记时过来查下,之后继续补录

系统状态

磁盘空间:df -h
目录占用空间:du -h --max-depth=1 [目录或者文件]
内存:free -m
系统负载及cpu:top -c
cpu各核状态:mpstat -P ALL
进程状态:ps aux | grep xxx
进程内线程数:pstree -p [pid]| wc -l
进程打开文件数:lsof -p [pid]| wc -l 打开文件数排行榜:lsof | 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内存映射


堆视图:jmap -heap $PID

内存占用柱状图(前20):jmap -F -histo $PID | head -20

存活对象占用柱状图(前20):jmap -histo:live $PID | head -20

进程僵死时,需要增加-F参数

dump文件分析。

jmap -dump:format=b,file=文件名 [pid]

jmap -F -dump:live,format=b,file=head.hprof $PID

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 内存