「java的cpu快速定位」cpu高了如何定位
本篇文章给大家谈谈java的cpu快速定位,以及cpu高了如何定位对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java 怎么查看服务器的CPU使用率
- 2、查看Java哪个线程占用CPU资源
- 3、如何定位并找出CPU load很高的java线程
- 4、Java开发如何准确的定位到占用内存或CPU最高的一行代码
java 怎么查看服务器的CPU使用率
1、确定当前系统安装的jdk是1.6版本以上
2、windows系统中有获取cpu使用率的可执行文件exe,只要在java中获取该文件的执行路径,通过Java调用即可。
3、获取操作系统可执行文件目录procCmd
4、调用java的Runtime.getRuntime().exec执行cmd应用程序
5、利用java中sleep来计算睡眠前后cpu的忙碌时间与空闲时间,因为sleep不会释放系统资源
6、根据忙碌时间占总时间的比例来计算cpu使用率!
查看Java哪个线程占用CPU资源
以下方法在LINUX下执行通过:
1.先定位占用cpu高的进程
top
2.使用以下命令
ps p 14766 -L -o pcpu,pid,tid,time,tname,stat,psr | sort -n -k1 -r
其中14766是刚才1中cpu占用率高的进程pid
3.2.4 32525 32537 01:58:41 ? Sl 6
0.8 32525 1771 00:43:12 ? Sl 0
0.8 32525 1769 00:39:46 ? Sl 0
0.7 32525 12324 00:33:36 ? Sl 0
0.5 32525 1772 00:27:50 ? Sl 0
0.5 32525 1768 00:25:45 ? Sl 0
0.4 32525 30760 00:19:13 ? Sl 0
0.4 32525 1773 00:22:36 ? Sl 0
0.4 32525 1770 00:20:25 ? Sl 0
0.3 32525 32385 00:00:10 ? Sl 0
0.1 32525 31668 00:00:03 ? Sl 0
0.1 32525 31667 00:00:03 ? Sl 0
0.1 32525 1790 00:07:10 ? Sl 1
其中第3个结果就是此进程中有问题的线程nid
4.通过jstack命令dump出堆栈
"AppController_ThreadPool_L2_Pool Thread" daemon prio=10 tid=0x0000000051c2b000 nid=0x7bb3 in Object.wait() [0x000000005e3c5000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.company.threadpool.ThreadPoolImpl$PoolThread.run(ThreadPoolImpl.java:142)
- locked 0x00002aaca30341a8 (a org.company.threadpool.ThreadPoolImpl$PoolThread)
其中的nid就是线程的编码,只不过是经过了16进制的转换。
即十进制的31776对应的十六进制)0x7bb3,定位到线程后一切好办。
如何定位并找出CPU load很高的java线程
1、首先dump出该进程的所有线程及状态
使用命令 jstack PID 命令打印出CPU占用过高进程的线程栈.
jstack -l56835683.stack
将进程id为5683的线程栈输出到了文件
2、使用top命令找到耗cpu的线程
使用top -H -p PID 命令查看对应进程是哪个线程占用CPU过高.
Java开发如何准确的定位到占用内存或CPU最高的一行代码
要定位到行,代码要debug编译,至少要带上行信息。
线程占用内存高低,可以用jmap做heap dump出来给MomoryAnalysis分析他可以按线程统计,一般也可以用它来找出造成OOM的原因。
线程占用CPU,上述内存的问题是一个方面,另外也可以jstack打线程栈来分析。Linux上ps -T -p可以看底层线程的CPU占用(Windows上需要额外按工具),记得线程编号可以在jstack打出来的线程栈中检查。
java的cpu快速定位的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于cpu高了如何定位、java的cpu快速定位的信息别忘了在本站进行查找喔。
发布于:2022-11-23,除非注明,否则均为
原创文章,转载请注明出处。