java cpu占用高,该怎么处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java cpu占用高,该怎么处理相关的知识,希望对你有一定的参考价值。

你是自己编写的程序吗?如果是请自查代码
CPU占用过高,一般是因为你线程启动太多或者其中一个或多个线程工作太忙

工作太忙的例子,最简单的,代码太长,执行需要一段时间,CPU就会升高,可以适当地加上sleep(milliseconds)来使其睡眠一小会。
还有就是线程有的时候必须要时刻监听一个值,这个时候简单粗暴的方式就是while(true),然后里面判断一个boolean是否为真,如果是则break,如果不是则继续循环
这样的代码是【非常】【非常】吃CPU的,还是避免它比较好,或者至少加入sleep(1)来让其休息一下,1已经很小了。。

线程太多的话,我们的CPU本来是很闲的,尤其是电脑闲置的时候,基本上是不会干活的,只会监听一下硬件设备,以及自动保存一下未保存的文档等等,它的时间片安排的特别宽松,也就不会出现占用过高的问题,结果假设你的程序给它安排了几十个线程等着执行……
因为CPU可不是给一个单独的线程一堆时间,直到这个线程结束再给下一个线程。
CPU会把自己的时间片资源分配给随机的线程,执行时间结束后强制暂停线程,优先级高的能获得更多处理时间,但不保证必然能得到全部时间。
如果线程太多了,那么sleep方法就没什么用了,因为本来是让线程休息的,结果这个休息了那个立马就开始,所以用处不大了
参考技术A 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。
请排查。。
参考技术B 你内存多少

以上是关于java cpu占用高,该怎么处理的主要内容,如果未能解决你的问题,请参考以下文章

openjdk占cpu高怎么处理

linux java cpu占用过高怎么办

Java程序CPU占用过高怎么解决

Java如何定位占用CPU比较高的问题

Java程序CPU占用过高怎么解决

mysql经常占用cpu100%以上,该怎么解决