如何找到占用CPU和内存最高的线程
2017-03-01 16:10
441 查看
title: 如何找到占用CPU和内存最高的线程
date: 2017-03-01
tags: java
我们先来写一段代码
随便写了个死循环,然后怎么看下CPU占用情况呢?
TOP命令
先用
然后用TOP命令查看当前所有进程
使用地址中,进入了下面这个界面之后就要按H了
于是你就会看到下面这张图片
![](https://img-blog.csdn.net/20170301160926927?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTQxMDUyOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
CPU占用接近满了,内存占用30M,怎么会占用这么多?OK,我们记住PID 8545
jstack命令
OK,我们在栈里面来找出这段代码,可以直接用jstack把栈里面的东西打出来
直接使用下面的就可以
如何找到有问题的代码呢?
我们刚才拿到了一个CPU最高的进程号8545,OK,转化为16进制,使用下面命令
上面两种都可以拿到16进制的8545,或者你自己去用计算器拿去,这里我们得到的是0x2162或者2161(上面一种可以直接拿到2161,没有0x),我们要的就是2161
可以直接到jstack.log文件里面去搜索,就看到出问题的代码了
想直接看
下面提供一种直接看的方法
得到线程堆栈信息中2162这个线程所在行的后面30行
question
4.1 我使用jstack pid报错了怎么办?
使用jstack pid可能会出现8545 operation permitted之类的错误,解决办法,请切换至root用户执行命令
over
date: 2017-03-01
tags: java
一、如何找到CPU和内存占用最高的线程
代码示例我们先来写一段代码
@Test public void testLinuxTop() throws Exception{ boolean b=true; System.out.println("start the cpu Thread"); while (b){ int i=(int)Math.random()*1000; if (i%3==1){ } if (i==1000){ System.out.println("stop"); b=false; } } }
随便写了个死循环,然后怎么看下CPU占用情况呢?
TOP命令
先用
ps -ef|grep tomcat查看一下你当前tomcat的进程号,比如我看出来我的进程号是8545
然后用TOP命令查看当前所有进程
top -p 8545 top -p 8545 -H //这样也可以
使用地址中,进入了下面这个界面之后就要按H了
于是你就会看到下面这张图片
CPU占用接近满了,内存占用30M,怎么会占用这么多?OK,我们记住PID 8545
jstack命令
OK,我们在栈里面来找出这段代码,可以直接用jstack把栈里面的东西打出来
直接使用下面的就可以
jstack 8545 > stack.log在你的当前目录下面就会出现一个stack.log文件,这是包括所有的栈信息的,这里的8545是tomcat的进程号、tomcat的进程号、tomcat的进程号,重要的事情强调一下
如何找到有问题的代码呢?
我们刚才拿到了一个CPU最高的进程号8545,OK,转化为16进制,使用下面命令
printf "%x\n" 8545 //或者 printf 0x%x 8545
上面两种都可以拿到16进制的8545,或者你自己去用计算器拿去,这里我们得到的是0x2162或者2161(上面一种可以直接拿到2161,没有0x),我们要的就是2161
可以直接到jstack.log文件里面去搜索,就看到出问题的代码了
想直接看
下面提供一种直接看的方法
jstack 8545|grep -A 30 2162
得到线程堆栈信息中2162这个线程所在行的后面30行
question
4.1 我使用jstack pid报错了怎么办?
使用jstack pid可能会出现8545 operation permitted之类的错误,解决办法,请切换至root用户执行命令
over
相关文章推荐
- 如何找到占用cpu最高的java线程?tomcat所在线程是守护线程吗?如何在linux中断一个Java进程中的线程,如何让一个守护线程不被结束
- 如何找到占用CPU最高的是哪一个线程
- linux查找消耗cpu最高的线程(jstack),内存占用最大线程(jmap),线程gc情况(jstat)
- 如何查找占用CPU最高的线程及相关代码
- 如何找到 Java 进程中哪个线程占用了大量 CPU 处理时间
- 找到占用CPU最高的Java线程
- top命令找到占用CPU最高的java线程
- 找到占用cpu最高的线程
- aix如何查看CPU内存占用前十的进程
- 如何快速杀去世占用过多本钱(CPU,内存)的数据库历程
- JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jsta (Linux 如何查看进程的各线程的CPU占用 )
- Linux下查看占用CPU最高的进程和占用内存最高的进程
- windows下揪出java程序占用cpu很高的线程 并找到问题代码 死循环线程代码
- windows下揪出java程序占用cpu很高的线程 并找到问题代码 死循环线程代码
- 如何快速杀死占用过多资源(CPU,内存)的数据库进程
- windows下揪出java程序占用cpu很高的线程 并找到问题代码 死循环线程代码
- 如何降低w3wp.exe进程占用cpu和内存过多的办法
- 如何在程序中找到何处在不断占用内存
- linux如何查看当前占用CPU或内存最多的5个进程
- 如何减少网页的内存与CPU占用