诗和远方

查询占用CPU的线程

1.top命令获取占用cpu资源较高的进程pid


2.使用 jstack pid > file.txt 命令查看当前java进程的堆栈状态

jstack命令生成的thread dump信息包含了JVM中所有存活的线程,为了分析指定线程,必须找出对应线程的调用栈。


3.查看该进程下占用cpu资源较高的线程pid2s

top -Hp pid


把得到的占用cpu资源较高的线程pid2s转成16进制的值

echo “obase=16; pid2s” | bc

printf "%x\n" 5359

5359 14ef

5360 14f0

5361 14f1

5362 14f2


JVM的GC线程一直在占用大量CPU, 定位代码得出的结论是:Java程序连MySQL频繁new connection而且没有调用close方法,导致GC线程一直占用CPU。


jstat -gc pid 5000 # 垃圾回收统计

jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:

jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]

jstat -printcompilation <pid>:当前VM执行的信息。

jstat -gcpermcapacity<pid>: perm对象的信息及其占用量

新生代:-gcnew

年老代:-gcold


jstack(查看线程)、jmap(查看内存)和jstat(性能分析)

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Catalog
标签列表
最新
最热
常用网站
站点信息
  • 文章总数:2016
  • 页面总数:1
  • 分类总数:17
  • 标签总数:518
  • 评论总数:0
  • 浏览总数:592287
Archives
Copyright © 2017-2019 www.my889.com Some Rights Reserved.
推荐使用 Chrome 浏览器浏览本站
沪ICP备17052342号
Sitemap XML