查看: 1045|回复: 3
|
task manager的CPU问题
[复制链接]
|
|
我用.net做了一个程式,但我run program的时候,我就看task manager里的CPU tab,我发现到数量有是减少有时增加,suppose it become 0 if i din perform any function。我想问问各位有经验的programmer,这是什么原因??要怎样reduce to 0 after i din perform any function when i running the program...thanks |
|
|
|
|
|
|
|
发表于 13-9-2006 12:05 AM
|
显示全部楼层
CPU Tab? 你是说CPU column吗?
这个栏是自前一次刷新以来,程式所占用的CPU時間百分比。我猜想,大概是這樣算的:
-在View | Update Speed是Normal的時候,Task Manager大概每2秒刷新一次。
-若在这2秒间,程式A佔用了1秒,其CPU栏就顯示为50。意即在这2秒间,程式A共用了50%的CPU時間。
程式的任何一个线程(thread),執行任何指令都会佔用CPU時間。一些看似芝麻綠豆的動作,如滑鼠在程式的窗口範圍移動,其實也会執行指令,如處理WM_MouseMove等,從而佔用CPU時間。Garbage Collector清理記憶时会佔用CPU時間,程式所使用的timer在fire的時候也会執行指令。所使用的DLL,也可能有timer或在idle的時候進行一些動作。这一切都会佔用CPU時間。 |
|
|
|
|
|
|
|
楼主 |
发表于 13-9-2006 08:35 AM
|
显示全部楼层
请问要怎样做才能clear cpu usage。我有用garbage collector to flush memory |
|
|
|
|
|
|
|
发表于 14-9-2006 11:13 PM
|
显示全部楼层
在自動的情況下,garbage collector也只是间中有動作而已。除非你時常手动(比如用
timer)叫它做事。
如果程式在看似沒進行任何功能的當兒仍佔用CPU,你就要檢查程式了,看是否有timer或Application.Idle的event。需注意的是,就算自己写的程式沒有動作,所使用的component仍可能有。另一点就是上面说的,有些表面很無辜的事情其實都会讓沈睡中的程式苏醒,移動程式窗口(程式需處理WM_Move),滑鼠在程式窗口範圍移動(程式需處理WM_MouseMove),其它窗口在程式窗口上移来移去(程式需處理WM_Paint)等等。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|