① java怎樣獲取CPU佔用率和硬碟佔用率
通過jmx可以監控vm內存使用,系統內存使用等,以下是網上某博客代碼,特點是通過window和linux命令獲得CPU使用率。
利用java程序實現獲取計算機cpu利用率和內存使用信息。
packagecom.amgkaka.performance;
/***//**
*監視信息的JavaBean類.
*@authoramg
*@version1.0
*Creationdate:2008-4-25-上午10:37:00
*/
publicclassMonitorInfoBean{
/***//**可使用內存.*/
privatelongtotalMemory;
/***//**剩餘內存.*/
privatelongfreeMemory;
/***//**最大可使用內存.*/
privatelongmaxMemory;
/***//**操作系統.*/
privateStringosName;
/***//**總的物理內存.*/
privatelongtotalMemorySize;
/***//**剩餘的物理內存.*/
;
/***//**已使用的物理內存.*/
privatelongusedMemory;
/***//**線程總數.*/
privateinttotalThread;
/***//**cpu使用率.*/
privatedoublecpuRatio;
publiclonggetFreeMemory(){
returnfreeMemory;
}
publicvoidsetFreeMemory(longfreeMemory){
this.freeMemory=freeMemory;
}
(){
returnfreePhysicalMemorySize;
}
(longfreePhysicalMemorySize){
this.freePhysicalMemorySize=freePhysicalMemorySize;
}
publiclonggetMaxMemory(){
returnmaxMemory;
}
publicvoidsetMaxMemory(longmaxMemory){
this.maxMemory=maxMemory;
}
publicStringgetOsName(){
returnosName;
}
publicvoidsetOsName(StringosName){
this.osName=osName;
}
publiclonggetTotalMemory(){
returntotalMemory;
}
publicvoidsetTotalMemory(longtotalMemory){
this.totalMemory=totalMemory;
}
publiclonggetTotalMemorySize(){
returntotalMemorySize;
}
publicvoidsetTotalMemorySize(longtotalMemorySize){
this.totalMemorySize=totalMemorySize;
}
publicintgetTotalThread(){
returntotalThread;
}
publicvoidsetTotalThread(inttotalThread){
this.totalThread=totalThread;
}
publiclonggetUsedMemory(){
returnusedMemory;
}
publicvoidsetUsedMemory(longusedMemory){
this.usedMemory=usedMemory;
}
publicdoublegetCpuRatio(){
returncpuRatio;
}
publicvoidsetCpuRatio(doublecpuRatio){
this.cpuRatio=cpuRatio;
}
}
② 怎麼用JAVA實現監控LINUX下CPU的使用率 windows下怎麼查看呢用什麼方法 請高手指教,謝謝!
用java的話,有兩個方法:
1.利用java直接調用shell命令查看cpu的參數(系統不同命令也不同)
類似代碼:
可以查考http://aimer311.javaeye.com/blog/347908
2.利用軟體linux下可以安裝net-snmp實現遠程和本地監控
具體方法的話比較負責你網上查查
因為不知道你的linux到底是什麼系統所有我沒法給你寫命令
③ java如何實現對集群的監控
用Open-falcon,Open-falcon是小米運維團隊從互聯網公司的需求出發,根據多年的運維經驗,結合SRE、SA、DEVS的使用經驗和反饋,開發的一套面向互聯網的企業級開源監控產品。
④ 怎麼用JAVA實現監控LINUX下CPU的使用率
我們在使用Windows XP操作系統的時候,用著用著系統就變慢了,一看「 任務管理器 」才發現CPU佔用達到100%。這是怎麼回事情呢?遇到病毒了,硬體有問題,還是系統設置有問題,在本文中筆者將從硬體,軟體和病毒三個方面來講解系統資源佔用率為什麼會達到100%。
經常出現CPU佔用100%的情況,主要問題可能發生在下面的某些方面:
CPU佔用率高 的九種可能
1、防殺毒軟體造成 故障
由於新版的 KV 、金山、 瑞星 都加入了對網頁、 插件 、郵件的隨機監控,無疑增大了系統負擔。處理方式:基本上沒有合理的處理方式,盡量使用最少的監控服務吧,或者,升級你的硬體配備。
2、驅動沒有經過認證,造成CPU資源佔用100%
大量的測試版的驅動在網上泛濫,造成了難以發現的故障原因。 處理方式:尤其是 顯卡驅動 特別要注意,建議使用 微軟認證 的或由官方發布的驅動,並且嚴格核對型號、版本。
3、 病毒、木馬 造成
大量的蠕蟲病毒在系統內部迅速復制,造成CPU佔用資源率據高不下。解決辦法:用可靠的殺毒軟體徹底清理系統內存和本地硬碟,並且打開系統設置軟體,察看有無異常啟動的程序。經常性更新升級殺毒軟體和防火牆,加強防毒意識,掌握正確的防殺毒知識。
4、控制面板— 管理工具 —服務—RISING REALTIME MONITOR SERVICE 點滑鼠右鍵,改為手動。
5、開始->運行->msconfig->啟動,關閉不必要的啟動項,重啟。
6、查看「 svchost 」進程。
svchost . exe 是Windows XP系統 的一個核心進程。 svchost.exe 不單單只出現 在Window s XP中,在使用 NT 內核的 Windows系統 中都會有svchost.exe的存在。一般在 Windows 2000 中 svchost.exe進程 的數目為2個,而 在Windows XP中svchost.exe進程的數目就上升到了4個及4個以上。
7、查看 網路連接 。主要是網卡。
8、查看網路連接
當安裝了Windows XP的計算機做伺服器的時候,收到埠 445 上的連接請求時,它將分配內存和少量地調配 CPU資源來為這些連接提供服務。當負荷過重的時候,CPU佔用率可能過高,這是因為在工作項的數目和響應能力之間存在固有的權衡關系。你要確定合適的 MaxWorkItems 設置以提高系統響應能力。如果設置的值不正確,伺服器的響應能力可能會受到影響,或者某個用戶獨占太 多系統 資源。
要解決此問題,我們可以通過修改注冊表來解決:在 注冊表編輯器 中依次展開[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver ]分支,在右側窗口中 新建 一個名為「maxworkitems」的 DWORD值 。然後雙擊該值,在打開的窗口中鍵入下列數值並保存退出:
如果計算機有512MB以上的內存,鍵入「1024」;如果計算機內存小於 512 MB,鍵入「256」。
9、看看是不是Windows XP使用滑鼠右鍵引起CPU佔用100%
前不久的報到說在資源管理器裡面使用滑鼠右鍵會導致CPU資源100%佔用,我們來看看是怎麼回事?
徵兆:
在資源管理器裡面,當你右鍵點擊一個目錄或一個文件,你將有可能出現下面所列問題:
任何文件的拷貝操作在那個時間將有可能停止相應
網路連接速度將顯著性的降低
所有的流輸入/輸出操作例如使用Windows Media Player 聽音樂將有可能是音樂失真成因:
當你在資源管理器裡面右鍵點擊一個文件或目錄的時候,當快捷 菜單顯示 的時候,CPU佔用率將增加到100%,當你關閉快捷菜單的時候才返回正常水平。
解決方法:
方法一:關閉「為菜單和工具提示使用過渡效果」
1、點擊「開始」--「控制面板」
2、在「控制面板」裡面雙擊「顯示」
3、在「顯示」屬性裡面點擊「外觀」標簽頁
4、在「外觀」標簽頁裡面點擊「效果」
5、在「效果」對話框裡面,清除「為菜單和工具提示使用過渡效果」前面的復選框接著點擊兩次「確定」按鈕。
方法二:在使用滑鼠右鍵點擊文件或目錄的時候先使用滑鼠左鍵選擇你的目標文件或目錄。然後再使用滑鼠右鍵彈出快捷菜單。
CPU佔用100%解決辦法
一般情況下CPU佔了100%的話我們的電腦總會慢下來,而很多時候我們是可以通過做 一點點 的改動就可以解決,而不必問那些大蝦了。
當機器慢下來的時候,首先我們想到的當然是任務管理器了,看看到底是哪個程序佔了較搞的比例,如果是某個大程序那還可以原諒,在關閉該程序後只要CPU正常了那就沒問題;如果不是,那你就要看看是什幺程序了,當你查不出這個進程是什幺的時候就去google或者 搜。有時只結束是沒用的,在 xp下 我們可以結合msconfig里的啟動項,把一些不用的項給關掉。在2000下可以去下個winpatrol來用。
一些常用的軟體,比如瀏覽器佔用了很搞的CPU,那幺就要升級該軟體或者乾脆用別的同類軟體代替,有時軟體和系統會有點不兼容,當然我們可以試下xp系統下給我們的那個兼容項,右鍵點該. exe文件 選兼容性。
svchost.exe有時是比較頭痛的,當你看到你的某個svchost.exe佔用很大CPU時你可以去下個aports或者fport來檢查其對應的程序路徑,也就是什幺東西在掉用這個svchost.exe,如果不是c:\Windows\ system32 (xp)或c:\winnt\system32(2000)下的,那就可疑。升級殺毒軟體殺毒吧。
右擊 文件導致100%的CPU佔用我們也會遇到,有時點右鍵停頓可能就是這個問題了。官方的解釋:先點左鍵選中,再右鍵(不是很理解)。非官方:通過在桌面點右鍵-屬性-外觀-效果,取消」為菜單和工具提示使用下列過度效果(U)「來解決。還有某些殺毒軟體對文件的監控也會有所影響,可以 關閉殺毒軟體 的文件監控;還有就是對網頁,插件,郵件的監控也是同樣的道理。
一些驅動程序有時也可能出現這樣的現象,最好是選擇微軟認證的或者是官方發布的驅動來裝,有時可以適當的升級驅動,不過記得最新的不是最好的。
CPU降溫軟體 ,由於軟體在運行時會利用所以的CPU空閑時間來進行降溫,但Windows不能分辨普通的CPU佔用和 降溫軟體 的降溫指令 之間的區別 ,因此CPU始終顯示100%,這個就不必擔心了,不影響正常的系統運行。
在處理較大的 word文件 時由於word的拼寫和語法檢查會使得CPU累,只要打開word的工具-選項-拼寫和語法把」檢查拼寫和檢查語法「勾去掉。
單擊 avi視頻 文件後CPU佔用率高是因為系統要先掃描該文件,並檢查文件所有部分,並建立索引;解決辦法:右擊保存視頻文件的文件夾-屬性-常規-高級,去掉為了快速搜索,允許索引服務編制該文件夾的索引的勾。
CPU佔用100%案例分析
1、 dllhost進程造成CPU使用率佔用100%
特徵:伺服器正常CPU消耗應該在75%以下,而且CPU消耗應該是上下起伏的,出現這種問題的伺服器,CPU會突然一直處100%的水平,而且不會下降。查看任務管理器,可以發現是DLLHOST.EXE消耗了所有的CPU空閑時間,管理員在這種情況下,只好重新啟動IIS服務,奇怪的是,重新啟動IIS服務後一切正常,但可能過了一段時間後,問題又再次出現了。
直接原因:
有一個或多個ACCESS資料庫在多次讀寫過程中損壞,微軟的 MDAC 系統在寫入這個損壞的ACCESS文件時,ASP線程處於BLOCK狀態,結果其它線程只能等待,IIS被死鎖了,全部的CPU時間都消耗在DLLHOST中。
解決辦法:
安裝「一流信息監控攔截系統」,使用其中的「首席文件檢查官IIS健康檢查官」軟體,
啟用」查找死鎖模塊」,設置:
--wblock=yes
監控的目錄,請指定您的主機的文件所在目錄:
--wblockdir=d:\test
監控生成的日誌的文件保存位置在安裝目錄的log目錄中,文件名為:logblock.htm
停止IIS,再啟動「首席文件檢查官IIS健康檢查官」,再啟動IIS,「首席文件檢查官IIS健康檢查官」會在logblock.htm中記錄下最後寫入的ACCESS文件的。
過了一段時間後,當問題出來時,例如CPU會再次一直處100%的水平,可以停止IIS,檢查logblock.htm所記錄的最後的十個文件,注意,最有問題的往往是計數器類的ACCESS文件,例如:」**COUNT. MDB 」,」**COUNT.ASP」,可以先把最後十個文件或有所懷疑的文件刪除到回收站中,再啟動IIS,看看問題是否再次出現。我們相信,經過仔細的查找後,您肯定可以找到這個讓您操心了一段時間的文件的。
找到這個文件後,可以刪除它,或下載下來,用ACCESS2000修復它,問題就解決了。
2、 svchost.exe造成CPU使用率佔用100%
在win.ini文件中,在[Windows]下面,「run=」和「load=」是可能載入「木馬」程序的途徑,必須仔細留心它們。一般情況下,它們的等號後面什幺都沒有,如果發現後面跟有路徑與文件名不是你熟悉的啟動文件,你的計算機就可能中上「木馬」了。當然你也得看清楚,因為好多「木馬」,如「AOL Trojan木馬」,它把自身偽裝成command.exe文件,如果不注意可能不會發現它不是真正的系統啟動文件。
在system.ini文件中,在[BOOT]下面有個「shell=文件名」。正確的文件名應該是「explorer.exe」,如果不是「explorer.exe」,而是「shell= explorer.exe 程序名」,那幺後面跟著的那個程序就是「木馬」程序,就是說你已經中「木馬」了。
在注冊表中的情況最復雜,通過regedit命令打開注冊表編輯器,在點擊至:「HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run」目錄下,查看鍵值中有沒有自己不熟悉的自動啟動文件,擴展名為EXE,這里切記:有的「木馬」程序生成的文件很像系統自身文件,想通過偽裝矇混過關,如「Acid Battery v1.0木馬」,它將注冊表「HKEY-LOCAL-MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run」下的Explorer 鍵值改為Explorer=「C:\Windows\expiorer.exe」,「木馬」程序與真正的Explorer之間只有「i」與「l」的差別。當然在注冊表中還有很多地方都可以隱藏「木馬」程序,如:「HKEY-CURRENT-USER\Software\Microsoft\Windows\CurrentVersion\Run」、「HKEY-USERS\****\Software\Microsoft\Windows\CurrentVersion\Run」的目錄下都有可能,最好的辦法就是在「HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run」下找到「木馬該病毒也稱為「Code Red II(紅色代碼2)」病毒,與早先在西方英文系統下流行「紅色代碼」病毒有點相反,在國際上被稱為VirtualRoot(虛擬目錄)病毒。該蠕蟲病毒利用Microsoft已知的溢出漏洞,通過80埠來傳播到其它的Web頁伺服器上。受感染的機器可由黑客們通過Http Get的請求運行scripts/root.exe來獲得對受感染機器的完全控制權。
當感染一台伺服器成功了以後,如果受感染的機器是中文的系統後,該程序會休眠2天,別的機器休眠1天。當休眠的時間到了以後,該蠕蟲程序會使得機器重新啟動。該蠕蟲也會檢查機器的月份是否是10月或者年份是否是2002年,如果是,受感染的伺服器也會重新啟動。當Windows NT系統啟動時,NT系統會自動搜索C盤根目錄下的文件explorer.exe,受該網路蠕蟲程序感染的伺服器上的文件explorer.exe也就是該網路蠕蟲程序本身。該文件的大小是8192位元組,VirtualRoot網路蠕蟲程序就是通過該程序來執行的。同時,VirtualRoot網路蠕蟲程序還將cmd.exe的文件從Windows NT的system目錄拷貝到別的目錄,給黑客的入侵敞開了大門。它還會修改系統的注冊表項目,通過該注冊表項目的修改,該蠕蟲程序可以建立虛擬的目錄C或者D,病毒名由此而來。值得一提的是,該網路蠕蟲程序除了文件explorer.exe外,其餘的操作不是基於文件的,而是直接在內存中來進行感染、傳播的,這就給捕捉帶來了較大難度。
」程序的文件名,再在整個注冊表中搜索即可。
我們先看看微軟是怎樣描述svchost.exe的。在微軟知識庫314056中對svchost.exe有如下描述:svchost.exe 是從動態鏈接庫 (DLL) 中運行的服務的通用主機進程名稱。
其實svchost.exe是Windows XP系統的一個核心進程。svchost.exe不單單只出現在Windows XP中,在使用NT內核的Windows系統中都會有svchost.exe的存在。一般在Windows 2000中svchost.exe進程的數目為2個,而在Windows XP中svchost.exe進程的數目就上升到了4個及4個以上。所以看到系統的進程列表中有幾個svchost.exe不用那幺擔心。
svchost.exe到底是做什幺用的呢?
首先我們要了解一點那就是Windows系統的中的進程分為:獨立進程和共享進程這兩種。由於Windows系統中的服務越來越多,為了節約有限的系統資源微軟把很多的系統服務做成了共享模式。那svchost.exe在這中間是擔任怎樣一個角色呢?
svchost.exe的工作就是作為這些服務的宿主,即由svchost.exe來啟動這些服務。svchost.exe只是負責為這些服務提供啟動的條件,其自身並不能實現任何服務的功能,也不能為用戶提供任何服務。svchost.exe通過為這些系統服務調用動態鏈接庫(DLL)的方式來啟動系統服務。
svchost.exe是病毒這種說法是任何產生的呢?
因為svchost.exe可以作為服務的宿主來啟動服務,所以病毒、木馬的編寫者也挖空心思的要利用svchost.exe的這個特性來迷惑用戶達到入侵、破壞計算機的目的。
如何才能 辨別 哪些是正常的svchost.exe進程,而哪些是 病毒進程 呢?
svchost.exe的鍵值是在「HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost」,如圖1所示。圖1中每個鍵值表示一個獨立的svchost.exe組。
微軟還為我們提供了一種察看系統正在運行在svchost.exe列表中的服務的方法。以Windows XP為例:在「運行」中輸入:cmd,然後在命令行模式中輸入:tasklist /svc。系統列出如圖2所示的服務列表。圖2中紅框包圍起來的區域就是svchost.exe啟動的服務列表。如果使用的是Windows 2000系統則把前面的「tasklist /svc」命令替換為:「tlist -s」即可。如果你懷疑計算機有可能被病毒感染,svchost.exe的服務出現異常的話通過搜索 svchost.exe文件 就可以發現異常情況。一般只會找到一個在:「C:\Windows\System32」目錄下的svchost.exe程序。如果你在其它目錄下發現svchost.exe程序的話,那很可能就是中毒了。
還有一種確認svchost.exe是否中毒的方法是在任務管理器中察看進程的執行路徑。但是由於在Windows系統自帶的任務管理器不能察看進程路徑,所以要使用第三方的進程察看工具。
上面簡單的介紹了svchost.exe進程的相關情況。總而言之,svchost.exe是一個系統的核心進程,並不是病毒進程。但由於svchost.exe進程的特殊性,所以病毒也會千方百計的入侵svchost.exe。通過察看svchost.exe進程的執行路徑可以確認是否中毒。
3、 Services.exe造成CPU使用率佔用100%
症狀
在基於 Windows 2000 的計算機上,Services.exe 中的 CPU 使用率可能間歇性地達到100 %,並且計算機可能停止響應(掛起)。出現此問題時,連接到該計算機(如果它是文件伺服器或域控制器)的用戶會被斷開連接。您可能還需要重新啟動計算機。如果 Esent.dll 錯誤地處理將文件刷新到磁碟的方式,則會出現此症狀。
解決方案
Service Pack 信息
要解決此問題,請獲取最新的 Microsoft Windows 2000 Service Pack。有關其它信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
260910 如何獲取最新的 Windows 2000 Service Pack
修復程序信息
Microsoft 提供了受支持的修補程序,但該程序只是為了解決本文所介紹的問題。只有計算機遇到本文提到的特定問題時才可應用此修補程序。此修補程序可能還會接受其它一些測試。因此,如果這個問題沒有對您造成嚴重的影響,Microsoft 建議您等待包含此修補程序的下一個 Windows 2000 Service Pack。
要立即解決此問題,請與「Microsoft 產品支持服務」聯系,以獲取此修補程序。有關「Microsoft 產品支持服務」電話號碼和支持費用信息的完整列表,請訪問 Microsoft Web 站點:
注意 :特殊情況下,如果 Microsoft 支持專業人員確定某個特定的更新程序能夠解決您的問題,可免收通常情況下收取的電話支持服務費用。對於特定更新程序無法解決的其它支持問題和事項,將正常收取支持費用。
下表列出了此修補程序的全球版本的文件屬性(或更新的屬性)。這些文件的日期和時間按協調通用時間 (UTC) 列出。查看文件信息時,它將轉換為本地時間。要了解 UTC 與本地時間之間的時差,請使用「控制面板」中的「日期和時間」工具中的 時區 選項卡。
狀態
Microsoft 已經確認這是在本文開頭列出的 Microsoft 產品中存在的問題。此問題最初是在 Microsoft Windows 2000 Service Pack 4 中更正的。
4、正常軟體造成CPU使用率佔用100%
首先,如果是從開機後就發生上述情況直到關機。那幺就有可能是由某個隨系統同時登陸的軟體造成的。可以通過運行輸入「msconfig」打開「系統實用配置工具」,進入「啟動」選項卡。接著,依次取消可疑選項前面的對鉤,然後重新啟動電腦。反復測試直到找到造成故障的軟體。或者可以通過一些優化軟體如「優化大師」達到上述目的。另:如果鍵盤內按鍵卡住也可能造成開機就出現上述問題。
如果是使用電腦途中出項這類問題,可以調出任務管理器(WINXP CTRL+ALT+DEL WIN2000 CTRL+SHIFT「ESC),進入」進程「選項卡,看」CPU「欄,從裡面找到佔用資源較高的程序(其中SYSTEM IDLE PROCESS是屬於正常,它的值一般都很高,它的作用是告訴當前你可用的CPU資源是多少,所以它的值越高越好)通過搜索功能找到這個進程屬於哪個軟體。然後,可以通過升級、關閉、卸載這個軟體或者乾脆找個同類軟體替換,問題即可得到解決。
5、病毒、木馬、間諜軟體造成CPU使用率佔用100%
出現CPU佔用率100% 的故障經常是因為病毒木馬造成的,比如震盪波病毒。應該首先更新病毒庫,對電腦進行全機掃描 。接著,在使用反間諜軟體Ad—Aware,檢查是否存在間諜軟體。論壇上有不少朋友都遇到過svchost.exe佔用CPU100%,這個往往是中毒的表現。
svchost.exe Windows中的系統服務是以動態鏈接庫(DLL)的形式實現的,其中一些會把可執行程序指向svchost.exe,由它調用相應服務的動態鏈接庫並加上相應參數來啟動服務。正是因為它的特殊性和重要性,使它更容易成為了一些病毒木馬的宿主。
6、 explorer.exe進程造成CPU使用率佔用100%
在system.ini文件中,在[BOOT]下面有個「shell=文件名」。正確的文件名應該是「explorer.exe」,如果不是「explorer.exe」,而是「shell= explorer.exe 程序名」,那幺後面跟著的那個程序就是「木馬」程序,就是說你已經中「木馬」了。
在注冊表中的情況最復雜,通過regedit命令打開注冊表編輯器,在點擊至:「HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run」目錄下,查看鍵值中有沒有自己不熟悉的自動啟動文件,擴展名為EXE,這里切記:有的「木馬」程序生成的文件很像系統自身文件,想通過偽裝矇混過關,如「Acid Battery v1.0木馬」,它將注冊表「HKEY-LOCAL-MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run」下的
Explorer 鍵值改為Explorer=「C:\Windows\expiorer.exe」,「木馬」程序與真正的Explorer之間只有「i」與「l」的差別。當然在注冊表中還有很多地方都可以隱藏「木馬」程序,如:「HKEY-CURRENT-USER\Software\Microsoft\Windows\CurrentVersion\Run」、「HKEY-USERS\****\Software\Microsoft\Windows\CurrentVersion\Run」的目錄下都有可能,最好的辦法就是在「HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVersion\Run」下找到「木馬」程序的文件名,再在整個注冊表中搜索即可。
7、超線程導致CPU使用率佔用100%
這類故障的共同原因就是都使用了具有超線程功能的P4 CPU。我查找了一些資料都沒有明確的原因解釋。據一些網友總結超線程似乎和天網防火牆有沖突,可以通過卸載天網並安裝其它防火牆解決,也可以通過在BIOS中關閉超線程功能解決。
8、AVI視頻文件造成CPU使用率佔用100%
在Windows XP中,單擊一個較大的AVI視頻文件後,可能會出現系統假死現象,並且造成exploere.exe進程的使用率100%,這是因為系統要先掃描該文件,並檢查文件所有部分,建立索引。如果文件較大就會需要較長時間並造成CPU佔用率100%。解決方法:右鍵單擊保存視頻文件的文件夾,選擇」屬性—>常規—>高級「,去掉」為了快速搜索,允許索引服務編制該文件夾的索引「前面復選框的對鉤即可。
9、殺毒軟體CPU使用率佔用100%
現在的殺毒軟體一般都加入了,對網頁、郵件、個人隱私的即時監空功能,這樣無疑會加大系統的負擔。比如:在玩游戲的時候,會非常緩慢。關閉該殺毒軟體是解決得最直接辦法。
10、處理較大的Word文件時CPU使用率過高
上述問題一般還會造成電腦假死,這些都是因為WORD的拼寫和語法檢查造成的,只要打開WORD的「工具—選項」,進入「拼寫和語法」選項卡,將其中的「鍵入時檢查拼寫」和「鍵入時檢查語法」兩項前面的復選框中的鉤去掉即可。
11、網路連接導致CPU使用率佔用100%
當你的Windows2000/xp作為伺服器時,收到來自埠445上的連接請求後,系統將分配內存和少量CPU資源來為這些連接提供服務,當負荷過重,就會出現上述情況。要解決這個問題可以通過修改注冊表來解決,打開注冊表,找到HKEY—LOCAL—MACHNE\SYSTEM\CurrentControlSet\Services\lanmanserver,在右面新建一個名為";maxworkitems";的DWORD值.然後雙擊該值,如果你的電腦有512以上內存,就設置為";1024";,如果小於512,就設置為256.
一些不完善的驅動程序也可以造成CPU使用率過高
經常使用待機功能,也會造成系統自動關閉硬碟DMA模式。這不僅會使系統性能大幅度下降,系統啟動速度變慢,也會使是系統在運行一些大型軟體和游戲時CPU使用率100%,產生停頓。
⑤ 如何監視計算機的CPU,內存和磁碟使用情況在Java中
使用sigar來監控,簡單方便!
使用說明:以下代碼需要配合sigar的dll文件來用,需要將dll文件放到JDK下的bin文件夾下,供sigar程序調用,還需要sigarjar包。以下程序經過測試,完全可用!
有關jar包跟dll文件我上傳不了,私信我,我發你importjava.net.InetAddress;
importjava.net.UnknownHostException;
importjava.util.Map;
importjava.util.Properties;
importjava.util.Timer;
importjava.util.TimerTask;
importorg.hyperic.sigar.CpuInfo;
importorg.hyperic.sigar.CpuPerc;
importorg.hyperic.sigar.FileSystem;
importorg.hyperic.sigar.FileSystemUsage;
importorg.hyperic.sigar.Mem;
importorg.hyperic.sigar.NetFlags;
importorg.hyperic.sigar.NetInterfaceConfig;
importorg.hyperic.sigar.NetInterfaceStat;
importorg.hyperic.sigar.OperatingSystem;
importorg.hyperic.sigar.Sigar;
importorg.hyperic.sigar.SigarException;
importorg.hyperic.sigar.Swap;
importorg.hyperic.sigar.Who;
publicclassRuntimeTest{
publicstaticvoidmain(String[]args){
try{
Timertimer=newTimer();//定時器
TimerTasktask=newTimerTask(){
publicvoidrun(){
try{
memory();
}catch(SigarExceptione){
e.printStackTrace();
}
}
};
try{
timer.schele(task,0,3000);//每3秒取一次
}catch(Exceptionex){
ex.printStackTrace();
}
//System信息,從jvm獲取
//property();//根據自己的需求,都可以放到定時器中定時獲取
//cpu信息
//cpu();
//內存信息
//memory();
//操作系統信息
//os();
//用戶信息
//who();}catch(Exceptione1){
e1.printStackTrace();
}
}
privatestaticvoidproperty()throwsUnknownHostException{
Runtimer=Runtime.getRuntime();
Propertiesprops=System.getProperties();
InetAddressaddr;
addr=InetAddress.getLocalHost();
Stringip=addr.getHostAddress();
Map<String,String>map=System.getenv();
StringuserName=map.get("USERNAME");//獲取用戶名
StringcomputerName=map.get("COMPUTERNAME");//獲取計算機名
StringuserDomain=map.get("USERDOMAIN");//獲取計算機域名
System.out.println("用戶名:"+userName);
System.out.println("計算機名:"+computerName);
System.out.println("計算機域名:"+userDomain);
System.out.println("本地ip地址:"+ip);
System.out.println("本地主機名:"+addr.getHostName());
System.out.println("JVM可以使用的總內存:"+r.totalMemory());
System.out.println("JVM可以使用的剩餘內存:"+r.freeMemory());
System.out.println("JVM可以使用的處理器個數:"+r.availableProcessors());
System.out.println("Java的運行環境版本:"+props.getProperty("java.version"));
System.out.println("Java的運行環境供應商:"+props.getProperty("java.vendor"));
System.out.println("Java供應商的URL:"+props.getProperty("java.vendor.url"));
System.out.println("Java的安裝路徑:"+props.getProperty("java.home"));
System.out.println("Java的虛擬機規范版本:"+props.getProperty("java.vm.specification.version"));
System.out.println("Java的虛擬機規范供應商:"+props.getProperty("java.vm.specification.vendor"));
System.out.println("Java的虛擬機規范名稱:"+props.getProperty("java.vm.specification.name"));
System.out.println("Java的虛擬機實現版本:"+props.getProperty("java.vm.version"));
System.out.println("Java的虛擬機實現供應商:"+props.getProperty("java.vm.vendor"));
System.out.println("Java的虛擬機實現名稱:"+props.getProperty("java.vm.name"));
System.out.println("Java運行時環境規范版本:"+props.getProperty("java.specification.version"));
System.out.println("Java運行時環境規范供應商:"+props.getProperty("java.specification.vender"));
System.out.println("Java運行時環境規范名稱:"+props.getProperty("java.specification.name"));
System.out.println("Java的類格式版本號:"+props.getProperty("java.class.version"));
System.out.println("Java的類路徑:"+props.getProperty("java.class.path"));
System.out.println("載入庫時搜索的路徑列表:"+props.getProperty("java.library.path"));
System.out.println("默認的臨時文件路徑:"+props.getProperty("java.io.tmpdir"));
System.out.println("一個或多個擴展目錄的路徑:"+props.getProperty("java.ext.dirs"));
System.out.println("操作系統的名稱:"+props.getProperty("os.name"));
System.out.println("操作系統的構架:"+props.getProperty("os.arch"));
System.out.println("操作系統的版本:"+props.getProperty("os.version"));
System.out.println("文件分隔符:"+props.getProperty("file.separator"));
System.out.println("路徑分隔符:"+props.getProperty("path.separator"));
System.out.println("行分隔符:"+props.getProperty("line.separator"));
System.out.println("用戶的賬戶名稱:"+props.getProperty("user.name"));
System.out.println("用戶的主目錄:"+props.getProperty("user.home"));
System.out.println("用戶的當前工作目錄:"+props.getProperty("user.dir"));
}
privatestaticvoidmemory()throwsSigarException{
Sigarsigar=newSigar();
Memmem=sigar.getMem();
floattotal=mem.getTotal();
floatused=mem.getUsed();
//內存總量
System.out.println("內存總量:"+mem.getTotal()/1024L/1024L+"Mav");
//當前內存使用量
System.out.println("當前內存使用量:"+mem.getUsed()/1024L/1024L+"Mused");
//當前內存剩餘量
System.out.println("當前內存剩餘量:"+mem.getFree()/1024L/1024L+"Mfree");
//當前內存使用率
System.out.println("內存使用率:"+used/total*100+"%");
Swapswap=sigar.getSwap();
//交換區總量
System.out.println("交換區總量:"+swap.getTotal()/1024L/1024L+"Mav");
//當前交換區使用量
System.out.println("當前交換區使用量:"+swap.getUsed()/1024L/1024L+"Mused");
//當前交換區剩餘量
System.out.println("當前交換區剩餘量:"+swap.getFree()/1024L/1024L+"Mfree");
}
privatestaticvoidcpu()throwsSigarException{
Sigarsigar=newSigar();
CpuInfoinfos[]=sigar.getCpuInfoList();
CpuPerccpuList[]=null;
cpuList=sigar.getCpuPercList();
for(inti=0;i<infos.length;i++){//不管是單塊CPU還是多CPU都適用
CpuInfoinfo=infos[i];
System.out.println("第"+(i+1)+"塊CPU信息");
System.out.println("CPU的總量MHz:"+info.getMhz());//CPU的總量MHz
System.out.println("CPU生產商:"+info.getVendor());//獲得CPU的賣主,如:Intel
System.out.println("CPU類別:"+info.getModel());//獲得CPU的類別,如:Celeron
System.out.println("CPU緩存數量:"+info.getCacheSize());//緩沖存儲器數量
printCpuPerc(cpuList[i]);
}
}
privatestaticvoidprintCpuPerc(CpuPerccpu){
System.out.println("CPU用戶使用率:"+CpuPerc.format(cpu.getUser()));//用戶使用率
System.out.println("CPU系統使用率:"+CpuPerc.format(cpu.getSys()));//系統使用率
System.out.println("CPU當前等待率:"+CpuPerc.format(cpu.getWait()));//當前等待率
System.out.println("CPU當前錯誤率:"+CpuPerc.format(cpu.getNice()));//
System.out.println("CPU當前空閑率:"+CpuPerc.format(cpu.getIdle()));//當前空閑率
System.out.println("CPU總的使用率:"+CpuPerc.format(cpu.getCombined()));//總的使用率
}
privatestaticvoidos(){
OperatingSystemOS=OperatingSystem.getInstance();
//操作系統內核類型如:386、486、586等x86
System.out.println("操作系統:"+OS.getArch());
System.out.println("操作系統CpuEndian():"+OS.getCpuEndian());//
System.out.println("操作系統DataModel():"+OS.getDataModel());//
//系統描述
System.out.println("操作系統的描述:"+OS.getDescription());
//操作系統類型
//System.out.println("OS.getName():"+OS.getName());
//System.out.println("OS.getPatchLevel():"+OS.getPatchLevel());//
//操作系統的賣主
System.out.println("操作系統的賣主:"+OS.getVendor());
//賣主名稱
System.out.println("操作系統的賣主名:"+OS.getVendorCodeName());
//操作系統名稱
System.out.println("操作系統名稱:"+OS.getVendorName());
//操作系統賣主類型
System.out.println("操作系統賣主類型:"+OS.getVendorVersion());
//操作系統的版本號
System.out.println("操作系統的版本號:"+OS.getVersion());
}
privatestaticvoidwho()throwsSigarException{
Sigarsigar=newSigar();
Whowho[]=sigar.getWhoList();
if(who!=null&&who.length>0){
for(inti=0;i<who.length;i++){
//System.out.println("當前系統進程表中的用戶名"+String.valueOf(i));
Who_who=who[i];
System.out.println("用戶控制台:"+_who.getDevice());
System.out.println("用戶host:"+_who.getHost());
//System.out.println("getTime():"+_who.getTime());
//當前系統進程表中的用戶名
System.out.println("當前系統進程表中的用戶名:"+_who.getUser());
}
}
}
}
⑥ java能遠程監控linux主機的cpu和內存使用情況么
能的.你打開其他機器的 SNMP協議.然後用你的機器去訪問其他機器,獲取SNMP信息, 就能得到 CPU使用率,硬碟使用率,內存使用率,網卡流量等等信息了
⑦ 怎麼能用JAVA對進程CPU,內存等進行監控。
TOP命令,不能只監控進程的CPU和內存的使用量,並且也不能看到使用量總和,還是用腳本吧,類型這樣:
ps -aux|grep java|awk ''|awk 'BEGIN END'
就可以,CPU同樣。
⑧ 如何用java代碼來監控系統內存·cpu·線程佔用情況,並生成日誌
可以學習軟體包 java.lang.management
提供管理介面,用於監視和管理 Java 虛擬機以及 Java 虛擬機在其上運行的操作系統。
ClassLoadingMXBean
用於 Java 虛擬機的類載入系統的管理介面。
CompilationMXBean
用於 Java 虛擬機的編譯系統的管理介面。
GarbageCollectorMXBean
用於 Java 虛擬機的垃圾回收的管理介面。
MemoryManagerMXBean
內存管理器的管理介面。
MemoryMXBean
Java 虛擬機內存系統的管理介面。
MemoryPoolMXBean
內存池的管理介面。
OperatingSystemMXBean
用於操作系統的管理介面,Java 虛擬機在此操作系統上運行。
RuntimeMXBean
Java 虛擬機的運行時系統的管理介面。
ThreadMXBean
Java 虛擬機線程系統的管理介面。
更多請訪問(bug315)
⑨ 如何測量java程序的cpu佔用情況
在JDK的bin目錄有一個工具,叫jconsole.exe,雙擊打開後,連接你需要監控的JVM,然後就可以來查看CPU、內存佔用情況。
還有JDK提供的jvisualvm.exe,功能更強大。