java程序问题排查常用命令行命令

一、linux

1、uptime 或 w

uptime命令显示系统总共运行了多长时间和系统的平均负载。依次显示为:现在时间、已经运行时长、当前登陆用户数、系统在过去的1分钟、5分钟和15分钟内的平均负载。
系统平均负载是指在特定时间间隔内运行队列中的平均进程数。

Linux w命令用于显示目前登入系统的用户信息。
执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序。
单独执行 w 指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

2、top

查看cpu和内存占用
命令详解参见Linux top命令详解

3、top -Hp {pid}

观察进程中的线程,哪个线程CPU和内存占比高

4、printf ‘%0x\n’ {tid}

利用linux命令将线程ID转换为16进制(jvm日志以16进制显示)

5、sar

sar 命令很强大,是分析系统性能的重要工具之一,通过该命令可以全面地获取系统的 CPU、运行队列、磁盘读写(I/O)、分区(交换区)、内存、CPU 中断和网络等性能数据。

二、java

1、jps

查看java进程

2、jinfo {pid}

查看java进程的系统参数;VM Flags;Command line

3、jstack

查询线程信息;堆栈跟踪信息
如:

  • jstack {pid} | grep {txid} 查看某一线程对应的堆栈信息
  • jstack -l {pid} -l:会打印出额外的锁信息,在发生死锁时可用来观察锁持有情况

4、jstat

对java程序资源和性能进行实时监控,包括GC活动。
如:

  • jstat -gc {pid} 3s 每隔3s打印一次GC信息

5、jmap

查看堆内存和生成堆转储快照

  • jmap -J-d64 -heap {pid} 查看堆信息(当指定的进程在64位Java虚拟机上运行时,可能需要指定-J-d64选项)
  • jmap -J-d64 -histo {pid}查看堆内存中的对象数量及大小,-histo:live:查看存活对象。
    说明: 其中class name中B 代表 byte,C 代表 char,D 代表 double,F 代表 float,I 代表 int,J 代表
    long,Z 代表 boolean,前边有 [ 代表数组, [I 就相当于 int[],对象用 [L+ 类名表示
  • jmap -dump:format=b,file=heapDump {pid} 堆dump
    注:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path JVM启动参数,让JVM在遇到OOM时自动生成dump文件

6、jhat

jhat与jmap搭配使用,用于分析jmap生成的heap dump文件
如:
jhat -port 5000 heapDump

7、jvisualvm

8、jconsole

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值