欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在windows下揪出java程序占用cpu很高的線程并完美解決

 更新時(shí)間:2021年01月21日 08:55:01   作者:本人純屬虛構(gòu)  
這篇文章主要介紹了在windows下揪出java程序占用cpu很高的線程并完美解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

我的一個(gè)java程序偶爾會(huì)出現(xiàn)cpu占用很高的情況

一直不知道什么原因

今天終于抽時(shí)間解決了

系統(tǒng)是win2003

jvisualvm 和 jconsole貌似都只能看到總共占用的cpu 看不到每個(gè)線程分別占用的cpu呢所以在windows平臺(tái)上要找出到底是哪個(gè)線程占用的cpu還不那么容易,linux用top就簡(jiǎn)單多了

最后的解決方法:

1.找到j(luò)ava進(jìn)程對(duì)應(yīng)的pid。

找pid的方法是:打開任務(wù)管理器,然后點(diǎn)擊 "查看" 菜單,然后點(diǎn)擊 "選擇列",把pid勾上,然后就可以在任務(wù)管理器里面看到所有進(jìn)程的pid值了。(也可以用第三步中提到的工具直接查看)

2.然后把java進(jìn)程導(dǎo)出快照。直接運(yùn)行命令。

jstack -l 31372 > c:/31372.stack

我這里是指定把java所有的信息導(dǎo)出到c盤的31372.stack的文件里。

3.在windows下只能查看進(jìn)程的cpu占用率,要查看線程的cpu占用率要借助其他的工具,我這里用的是微軟提供的 Process Explorer v15.3

下載地址http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

下載完后解壓運(yùn)行

右鍵點(diǎn)擊需要查看的進(jìn)程---properties

4.然后選擇 Threads 選項(xiàng)卡,找到占用cpu的線程的tid,比如我這里是 31876 的線程

5.把pid轉(zhuǎn)換成16進(jìn)制,我這里直接用系統(tǒng)自帶的計(jì)算器轉(zhuǎn)換,置于為什么要轉(zhuǎn)換,是因?yàn)橄惹坝胘stack導(dǎo)出的信息里面線程對(duì)應(yīng)的tid是16進(jìn)制的。

最后得到的線程pid的16進(jìn)制的值為 7C84

6.在 c盤的31372.stack文件中查找 7C84

由于是我的程序已經(jīng)該過(guò)了,這里沒(méi)有異常的東西,所以這里沒(méi)有什么異常內(nèi)容。

我的問(wèn)題沒(méi)解決之前,找到到這里的內(nèi)容為:

"Thread-23" prio=6 tid=0x03072400 nid=0x1b68 runnable [0x0372f000]
 java.lang.Thread.State: RUNNABLE
 at com.horn.util.MyEncrypt.encode(MyEncrypt.java:17)
 at com.horn.common.OrderUtil.hisExp(OrderUtil.java:228)
 at com.horn.util.MsgManage.receiveMsg(MsgManage.java:961)
 at com.horn.util.PollMessageThread.run(PollMessageThread.java:74)
 
 Locked ownable synchronizers:
 - None

于是 打開 t com.horn.util.MyEncrypt.encode(MyEncrypt.java:17)

分析了下代碼,問(wèn)題找到了。

問(wèn)題代碼為:

// 100-999的隨機(jī)數(shù)
int random = (int) (Math.random() * 1000);
while (random < 100) {
 random = random * 10;
}

這樣票眼看 是沒(méi)問(wèn)題

當(dāng)時(shí)我寫這段代碼也沒(méi)注意

關(guān)鍵在于 Math.random()的取值范圍是大于0小于1 是吧?

如果Math.random() 的值為 0.00009以下... 就成死循環(huán)了...

現(xiàn)在修改為了

// 100-999的隨機(jī)數(shù)
int random = new Random().nextInt(900) + 100;

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Java?EasyExcel導(dǎo)出合并單元格的示例詳解

    Java?EasyExcel導(dǎo)出合并單元格的示例詳解

    EasyExcel是阿里巴巴開源的一個(gè)excel處理框架,以使用簡(jiǎn)單、節(jié)省內(nèi)存著稱,這篇文章主要為大家介紹了如何利用EasyExcel導(dǎo)出合并單元格,需要的可以參考下
    2023-09-09
  • Nacos負(fù)載均衡策略總結(jié)

    Nacos負(fù)載均衡策略總結(jié)

    Nacos 作為目前主流的微服務(wù)中間件,包含了兩個(gè)頂級(jí)的微服務(wù)功能:配置中心和注冊(cè)中心,本文給大家總結(jié)了幾種Nacos負(fù)載均衡策略,通過(guò)圖文結(jié)合介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Java使用數(shù)組實(shí)現(xiàn)ArrayList的動(dòng)態(tài)擴(kuò)容的方法

    Java使用數(shù)組實(shí)現(xiàn)ArrayList的動(dòng)態(tài)擴(kuò)容的方法

    這篇文章主要介紹了Java使用數(shù)組實(shí)現(xiàn)ArrayList的動(dòng)態(tài)擴(kuò)容的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • SpringBoot獲取配置文件內(nèi)容的幾種方式總結(jié)

    SpringBoot獲取配置文件內(nèi)容的幾種方式總結(jié)

    大家都知道SpringBoot獲取配置文件的方法有很多,下面這篇文章主要給大家介紹了關(guān)于SpringBoot獲取配置文件內(nèi)容的幾種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • FastDFS分布式文件系統(tǒng)環(huán)境搭建及安裝過(guò)程解析

    FastDFS分布式文件系統(tǒng)環(huán)境搭建及安裝過(guò)程解析

    這篇文章主要介紹了FastDFS分布式文件系統(tǒng)環(huán)境搭建及安裝過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Spring Boot Admin 快速入門詳解

    Spring Boot Admin 快速入門詳解

    這篇文章主要介紹了SpringBoot Admin 使用指南(推薦),Spring Boot Admin 是一個(gè)管理和監(jiān)控你的 Spring Boot 應(yīng)用程序的應(yīng)用程序,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2021-11-11
  • 貪心算法原理及在Java中的使用

    貪心算法原理及在Java中的使用

    我們可能在好多地方都會(huì)聽到貪心算法這一概念,并且它的算法思想也比較簡(jiǎn)單就是說(shuō)算法只保證局部最優(yōu),進(jìn)而達(dá)到全局最優(yōu)。但我們實(shí)際編程的過(guò)程中用的并不是很多,究其原因可能是貪心算法使用的條件比較苛刻,所要解決的問(wèn)題必須滿足貪心選擇性質(zhì)
    2021-05-05
  • Spring實(shí)戰(zhàn)之使用c:命名空間簡(jiǎn)化配置操作示例

    Spring實(shí)戰(zhàn)之使用c:命名空間簡(jiǎn)化配置操作示例

    這篇文章主要介紹了Spring實(shí)戰(zhàn)之使用c:命名空間簡(jiǎn)化配置操作,結(jié)合實(shí)例形式詳細(xì)分析了Spring使用c:命名空間簡(jiǎn)化配置的相關(guān)接口與配置操作技巧,需要的朋友可以參考下
    2019-12-12
  • Java零基礎(chǔ)教程之do-while循環(huán)語(yǔ)句實(shí)例

    Java零基礎(chǔ)教程之do-while循環(huán)語(yǔ)句實(shí)例

    Java中的do-while循環(huán)是一種后測(cè)試循環(huán)語(yǔ)句,它類似于while循環(huán),但它先執(zhí)行循環(huán)體中的代碼,然后再進(jìn)行條件判斷,無(wú)論條件是否滿足,至少會(huì)執(zhí)行一次循環(huán)體中的代碼,這篇文章主要給大家介紹了關(guān)于Java零基礎(chǔ)教程之do-while循環(huán)語(yǔ)句的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • 如何加密配置文件里的敏感數(shù)據(jù)

    如何加密配置文件里的敏感數(shù)據(jù)

    這篇文章主要介紹了加密配置文件里的敏感數(shù)據(jù)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評(píng)論