欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

哪些代碼操作可能會導(dǎo)致CPU的使用率增加

傅智翔2年前23瀏覽0評論

哪些代碼操作可能會導(dǎo)致CPU的使用率增加?

我們在項(xiàng)目開發(fā)過程中和上線后,監(jiān)控服務(wù)器資源使用的時候,首先看的是就是CPU和內(nèi)存的使用情況,所以我們在寫代碼的時候,最好也能明白CPU使用率跟啥有關(guān)系,避免CPU不正常的飆升。

列舉一些比較消耗CPU的操作

GC是要占用CPU的,所以如果程序內(nèi)存分配太快,導(dǎo)致需要頻繁的進(jìn)行GC操作,那么會導(dǎo)致CPU的占用率過高;例如Young GC在進(jìn)行垃圾回收操作的時候,會計算內(nèi)存和調(diào)用寄存器,所以如果Young GC很頻繁的話,CPU的占用率也會很高;所以很多時候,Java程序內(nèi)存占用的高了,會導(dǎo)致CPU占用率過高;

順便說一句,https://www.b5b6.com/shujuku/中,大記錄集排序不僅增加了CPU開銷(https://www.b5b6.com/shujuku/服務(wù)器);而且可能會由于內(nèi)存不足發(fā)生硬盤排序的現(xiàn)象,當(dāng)發(fā)生硬盤排序時性能會急劇下降;

序列化和反序列化;

線程上下文切換:如果線程數(shù)量啟用的過多,會導(dǎo)致線程不斷的在阻塞狀態(tài)和執(zhí)行狀態(tài)之間切換;所以線程池的大小也不能瞎設(shè)置;

正則表達(dá)式校驗(yàn);

加密、解密;

死循環(huán):死循環(huán)會調(diào)用寄存器進(jìn)行計數(shù),這個操作就會占用CPU;另外死循環(huán)不會讓出CPU,除非時間片到期,但是死循環(huán)還是會不斷地申請時間片;

如何定位CPU占用率過高的原因

通常我們的應(yīng)用都運(yùn)行在Linux系統(tǒng)上:

登錄到服務(wù)器上后,通過top命令查看CPU使用率高的線程;(top后shift+H)

找到線程號,轉(zhuǎn)成16進(jìn)制;

使用jps命令查看java進(jìn)程號;

使用jstack [進(jìn)程號] 打印當(dāng)前進(jìn)程的堆棧;

在堆棧信息中,看看這個線程號對應(yīng)的線程在做什么操作。

希望我的回答,能夠幫助到你!我將持續(xù)分享Java開發(fā)、架構(gòu)設(shè)計、https://www.b5b6.com職業(yè)發(fā)展等方面的見解,希望能得到你的關(guān)注。

java 代碼結(jié)構(gòu),哪些代碼操作可能會導(dǎo)致CPU的使用率增加