首页 > 图灵资讯 > 技术篇>正文

Java程序CPU消耗分析之找出最耗CPU线程

2023-06-27 15:02:48

Java程序CPU消耗过高一般有两种情况:1、 US过高,应用占用CPU资源过高,需要找出占用CPU线程的具体代码,分析定位问题的原因。分析步骤如下: (1) 使用top命令找出占用cpu最高的JAVA进程      (2) 找出占用cpu最高的线程 top -Hp 1781     (3) CPU最高线程17596转换为16进制对应线程44bc命令printff "%x\n" 17596     (4) CPU最高JAVA流程1781的堆栈信息 jstack 1781> stackdump.txt     代码如下:public class CPUConsumeTest {    public static void main(String[] args) {        int count = Runtime.getRuntime().availableProcessors();        System.out.println("processors " + count);            new Thread(new ConsumeCPUTest()).start();        }               for(int i=0; i<100; i++) {            new Thread(new NotConsumeCPUTest()).start();        }    }   }class ConsumeCPUTest implements Runnable {    public void run() {        while(true) {            for(int i=0; i<10000000; i++) {                long l = 1000000;                Math.acos(l);            }            try {                Thread.currentThread().sleep(20);            } catch (InterruptedException e) {                Thread.currentThread().interrupt();            }        }    }}class NotConsumeCPUTest implements Runnable {    public void run() {        while(true) {            try {                Thread.currentThread().sleep(50);            } catch (InterruptedException e) {                Thread.currentThread().interrupt();            }        }    }}   2、sy过高,经常切换上下文,打印线程栈,看看哪个锁竞争是否太激烈。

上一篇 骑士周游问题及优化
下一篇 list对象转换Set

文章素材均来源于网络,如有侵权,请联系管理员删除。