Java基础-排查调优工具

问题

  • linux查看进程的线程信息
    • ps -T -p $pid
    • top -H -p $pid
      • VIRT:申请内存
      • RES:常驻内存(含进程共享;不包含swap out)
      • SHR:共享内存
      • 实际占用物理内存:RES-SHR
    • htop - F2 - 设置 - 显示选项 - 树状视图+显示自定义线程名

常用工具

  • JProfiler
    • java程序性能调试方面表现优越,推荐使用
JDK自带
  • 所有工具都在JDK/bin下,jvisualvm和jconsole为GUI,其他为命令行
  • jstack
    • 进程的线程信息

jstack -l $pid > jstack.log
  • jvisualvm
    • 可监控、性能评估、故障诊断主机上所有java进程的cpu,内存,线程使用情况,类似于JProfiler,严重推荐
  • jconsole
    • java开发,以图表化形式显示cpu,内存,线程数据,并可远程连接监视远程JVM
  • jinfo
    • 可输出并修改运行中java进程的opts

jinfo -opt $pid  
jinfo -flag MaxPermSize $pid # 查看MaxPermSize大小
  • jps
    • 类似unix的ps,显示本地java进程,含pid
  • jmap
    • 打印java进程(pid)内所有对象情况
      • dump:堆转储快照
      • heap:堆详细信息
      • histo:堆中对象统计信息

jmap -dump:format=b,file=dump.bin $pid # 生成的bin文件可用MAT进行分析
# 似乎已经改成jhsdb jmap --heap --pid $pid
jmap -heap $pid # 显示各分区使用量
jmap -histo $pid # 显示所有对象的数量统计

[root@localhost logs]# jhsdb jmap --heap --pid 8863
Attaching to process ID 8863, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 9.0.4+11

using thread-local object allocation.
Garbage-First (G1) GC with 2 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 40
   MaxHeapFreeRatio         = 70
   MaxHeapSize              = 482344960 (460.0MB)
   NewSize                  = 1363144 (1.2999954223632812MB)
   MaxNewSize               = 289406976 (276.0MB)
   OldSize                  = 5452592 (5.1999969482421875MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 1048576 (1.0MB)

Heap Usage:
G1 Heap:
   regions  = 460
   capacity = 482344960 (460.0MB)
   used     = 1048576 (1.0MB)
   free     = 481296384 (459.0MB)
   0.21739130434782608% used
G1 Young Generation:
Eden Space:
   regions  = 1
   capacity = 8388608 (8.0MB)
   used     = 1048576 (1.0MB)
   free     = 7340032 (7.0MB)
   12.5% used
Survivor Space:
   regions  = 0
   capacity = 0 (0.0MB)
   used     = 0 (0.0MB)
   free     = 0 (0.0MB)
   0.0% used
G1 Old Generation:
   regions  = 0
   capacity = 23068672 (22.0MB)
   used     = 0 (0.0MB)
   free     = 23068672 (22.0MB)
   0.0% used

3366 interned Strings occupying 234592 bytes.
  • jstat
    • JVM内存工具,用来监视堆和非堆大小,使用量,以及加载类信息

jstat -class $pid # 加载类数量,及所占空间
jstat -compiler $pid # JVM实时编译信息
jstat -util $pid # gc信息统计
jstat -gc $pid # gc信息,最后五项分别是young gc次数,young gc时间,full gc次数,full gc时间,gc总时间
# JVM中young,old,perm三代对象使用和占用大小
# PGCMN表示perm最小使用量,PGCMX表示perm最大使用量,PGC是当前新生成对象的perm占用量,PC是当前perm占用量;其他以此类推
jstat -gccapacity $pid
jstat -gcnew $pid # new对象信息
jstat -gcnewcapacity $pid # new对象信息及占用量
jstat -gcold $pid # old对象信息
jstat -gcoldcapacity $pid # old对象信息及占用量
jstat -gcpermcapacity $pid # perm对象信息及占用量
jstat -printcompilation $pid # 当前JVM解释执行信息
jstat -printcompilation $pid 250 6 -h3 # 每250毫秒打印,打印6次,每三行显示一下标题
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eddy咸鱼

感谢大佬加鸡蛋~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值