javacpu佔用
⑴ java cpu佔用高,該怎麼處理
換CPU吧,如果是台式可換個i5 4950的,是筆記本的話,重裝系統減少後台程序也是可以騰空運行內存的,本人也是學java的,不過是初學者。
⑵ java cpu佔用高,該怎麼處理
你是自己編寫的程序嗎?如果是請自查代碼
CPU佔用過高,一般是因為你線程啟動太多或者其中一個或多個線程工作太忙
工作太忙的例子,最簡單的,代碼太長,執行需要一段時間,CPU就會升高,可以適當地加上sleep(milliseconds)來使其睡眠一小會。
還有就是線程有的時候必須要時刻監聽一個值,這個時候簡單粗暴的方式就是while(true),然後裡面判斷一個boolean是否為真,如果是則break,如果不是則繼續循環
這樣的代碼是【非常】【非常】吃CPU的,還是避免它比較好,或者至少加入sleep(1)來讓其休息一下,1已經很小了。。
線程太多的話,我們的CPU本來是很閑的,尤其是電腦閑置的時候,基本上是不會幹活的,只會監聽一下硬體設備,以及自動保存一下未保存的文檔等等,它的時間片安排的特別寬松,也就不會出現佔用過高的問題,結果假設你的程序給它安排了幾十個線程等著執行……
因為CPU可不是給一個單獨的線程一堆時間,直到這個線程結束再給下一個線程。
CPU會把自己的時間片資源分配給隨機的線程,執行時間結束後強制暫停線程,優先順序高的能獲得更多處理時間,但不保證必然能得到全部時間。
如果線程太多了,那麼sleep方法就沒什麼用了,因為本來是讓線程休息的,結果這個休息了那個立馬就開始,所以用處不大了
⑶ Java如何定位佔用CPU比較高的問題
一、確定消耗CPU的Java進程
備註:
1、jstack 輸出的堆棧信息,線程id對應的16進制為小寫,查找時要統一按照小寫方式查找
2、jstack輸出為當前瞬間的堆棧信息,如果遇到間斷性出現CPU高的問題時,需要多輸出幾次
從上面方式定位到代碼Test.main(Test.java:4)處導致了CPU偏高的問題,那我們查看下代碼具體如何實現的?
代碼實現:
public class Test {
public static void main(String[] args) {
while(true) {
}
}
}
從代碼層面看該處實現了一個死循環,所以導致了線程佔用CPU偏高的問題。
⑷ Java進程佔用CPU高怎麼解決
如果你使用資料庫的話那就看一下你的資料庫聯接,是否有資源未釋放或獲取connection過於頻繁.如果僅僅是JAVA程序,那就查看一下是否為線程使用不當,你到網上找一下線程相關問題即可
⑸ java佔用cpu高
java進程佔用CPU過高常見的兩種情況:
1,代碼中有死循環或者接近死循環的操作
2,快速創建大量臨時變數,導致頻繁觸發gc回收
⑹ java 如何查看伺服器的CPU使用率
(){
try{
StringprocCmd=System.getenv("windir")+"\system32\wbem\wmic.exeprocessgetCaption,CommandLine,KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";
//取進程信息
long[]c0=readCpu(Runtime.getRuntime().exec(procCmd));
Thread.sleep(CPUTIME);
long[]c1=readCpu(Runtime.getRuntime().exec(procCmd));
if(c0!=null&&c1!=null){
longidletime=c1[0]-c0[0];
longbusytime=c1[1]-c0[1];
return"CPU使用率:"+Double.valueOf(PERCENT*(busytime)*1.0/(busytime+idletime)).intValue()+"%";
}else{
return"CPU使用率:"+0+"%";
}
}catch(Exceptionex){
ex.printStackTrace();
return"CPU使用率:"+0+"%";
}
}
⑺ java程序佔用CPU極高,請問是怎麼回事
多線程最容易造成資源死鎖的,查查看那個沒有釋放資源~!還有緩沖池設置夠不夠大~!垃圾處理機制也要檢查~!
⑻ Java程序CPU佔用過高怎麼解決
Java程序就是這樣的,我去年做了一個桌面軟體,也出現這樣的問題,後來不用java的自動垃圾回收,在必要的時候手動調用System.gc(),這種情況就很少出現了,但是偶爾也還有。另外,CPU佔用率過高的情況一般是編程的問題,重點考慮線程資源共享和網路流處理兩個方面,java大部分的高CPU佔用率都跟這兩點有關系。
⑼ Java中CPU佔用過高問題如何解決
方法1
1.jps 獲取Java進程的PID。
2.jstack pid >> java.txt 導出CPU佔用高進程的線程棧。
3.top -H -p PID 查看對應進程的哪個線程佔用CPU過高。
4.echo 「obase=16; PID」 | bc 將線程的PID轉換為16進制,大寫轉換為小寫。
5.在第二步導出的Java.txt中查找轉換成為16進制的線程PID。找到對應的線程棧。
6.分析負載高的線程棧都是什麼業務操作。優化程序並處理問題。
方法2
1.使用top 定位到佔用CPU高的進程PID
top
通過ps aux | grep PID命令
2.獲取線程信息,並找到佔用CPU高的線程
ps -mp pid -o THREAD,tid,time | sort -rn
3.將需要的線程ID轉換為16進制格式
printf "%x\n" tid
4.列印線程的堆棧信息
jstack pid |grep tid -A 30
⑽ 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使用率!