欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
揭穿號稱(chēng)內存占用極低軟件的詭計(ZT)
物理內存和虛擬內存

  物理內存,在應用中,自然是顧名思義,物理上,真實(shí)的插在板子上的內存是多大就是多大了.看機器配置的時(shí)候,看的就是這個(gè)物理內存.  


  如果執行的程序很大或很多,就會(huì )導致物理內存消耗殆盡.為了解決這個(gè)問(wèn)題,Windows中運用了虛擬內存技術(shù),即拿出一部分硬盤(pán)空間來(lái)充當內存使用,當內存占用完時(shí),電腦就會(huì )自動(dòng)調用硬盤(pán)來(lái)充當內存,以緩解內存的緊張.

  一個(gè)程序,不可避免地要用到虛擬內存,因為不頻繁執行或者已經(jīng)很久沒(méi)有執行的代碼,沒(méi)有必要留在物理內存中,只會(huì )造成浪費;放在虛擬內存中,等執行這部分代碼的時(shí)候,再調出來(lái).

  Windows 的任務(wù)管理器可以幫助我們看到進(jìn)程的虛擬內存.調出任務(wù)管理器,點(diǎn)擊菜單“查看”-“選擇列”,在出現的窗口中,鉤上“虛擬內存大小”,如圖1: 



  點(diǎn)“確定”,這個(gè)時(shí)候,進(jìn)程列表中已經(jīng)顯示各進(jìn)程的虛擬內存大小,如圖2:  



  一個(gè)程序到底應該使用多少虛擬內存呢?不一定,但是應該以恰到好處的符合虛擬內存原本作用為最好.

  下面將揭穿表面看起來(lái)調用了大量圖片、大量運行庫的程序,為什么才“占用”不到 1 MB 的內存的詭計.

原來(lái)是 SetProcessWorkingSetSize 函數  


MSDN對該函數的表述(翻譯):使用這個(gè)函數來(lái)設置應用程序最小和最大的運行空間,只會(huì )保留需要的內存.當應用程序被閑置或系統內存太低時(shí),操作系統會(huì )自動(dòng)調用這個(gè)機制來(lái)設置應用程序的內存.應用程序也可以使用 VirtualLock來(lái)鎖住一定范圍的內存不被系統釋放;當你加大運行空間給應用程序,你能夠得到的物理內存取決于系統,這會(huì )造成其他應用程序降低性能或系統總體降低性能,這也可能導致請求物理內存的操作失敗,例如:建立 進(jìn)程,線(xiàn)程,內核池,就必須小心的使用該函數.  

  也就是說(shuō),該函數不是節省內存,而是強制把進(jìn)程的物理內存搬到虛擬內存中.  

  另外有一些資料上說(shuō),該函數“將有可能導致缺頁(yè)中斷,嚴重影響性能”.

  函數原型:

  BOOL SetProcessWorkingSetSize(

  HANDLE hProcess,

  SIZE_T dwMinimumWorkingSetSize,

  SIZE_T dwMaximumWorkingSetSize

  );

  我們用 VB 來(lái)做這么一個(gè)簡(jiǎn)單的例子,是程序占用 300 KB 內存吧.  

  建立一個(gè)標準的 VB 工程,在 Form1 中放置一個(gè) Timer1 ,把 Interval 屬性設置為 1000 (即 1 秒).然后在代碼編輯框中輸入以下代碼:  

Private Declare Function SetProcessWorkingSetSize Lib "kernel32"(ByVal hProcess As Long, ByVal dwMinimumWorkingSetSize As Long, ByValdwMaximumWorkingSetSize As Long) As Long

  Private Declare Function GetCurrentProcess Lib "kernel32" () As Long

  Private Sub Timer1_Timer()

  SetProcessWorkingSetSize GetCurrentProcess(), 50000, 100000

  End Sub

  然后生成 工程1.exe,執行,調出任務(wù)管理器查看,發(fā)現內存占用才 320 KB.如果把定時(shí)器關(guān)閉,這進(jìn)程的內存一般 4 MB左右.

  必須定時(shí)執行該函數,否則虛擬內存會(huì )慢慢被調出來(lái),恢復原來(lái)的內存大小.

  如果要使一個(gè)本來(lái)需要占用大量?jì)却娴某绦驕p低到幾百 KB ,使用同樣的方法即可.

詭計帶來(lái)的危害  

如果 SetProcessWorkingSetSize函數被正常使用,是非常有用處的.但是為了蒙騙用戶(hù)的眼睛,每秒,甚至幾十毫秒就把大量?jì)却嫱摂M內存里面壓,就會(huì )帶來(lái)無(wú)可預計的危害.看看這篇文章怎么說(shuō):“因為他只是暫時(shí)的將應用程序占用的內存移至虛擬內存,一旦,應用程序被激活或者有操作請求時(shí),這些內存又會(huì )被重新占用.如果你強制使用該方法來(lái)設置程序占用的內存,那么可能在一定程度上反而會(huì )降低系統性能,因為系統需要頻繁的進(jìn)行內存和硬盤(pán)間的頁(yè)面交換.”.  

  沒(méi)錯,如果你使用了這類(lèi)軟件,意味著(zhù)你的硬盤(pán)將每秒將 I/O 大量數據;硬盤(pán)的磁針將拼命旋轉...(當然硬盤(pán)磁針不可能不旋轉^_^,只是選擇得更厲害而已).  

不是說(shuō) BT 很傷內存嗎?不然,因為現在大多 BT 軟件都有緩存技術(shù).且看 Bitcomet官方對緩存技術(shù)的說(shuō)明:“傳統BT高速下載時(shí)硬盤(pán)會(huì )響得很厲害,這是大量的隨機讀取造成的.... BitComet可以由用戶(hù)設置緩存大小....可以明顯地看出犧牲一小部分內存作緩存對硬盤(pán)的保護作用.”  

  是不是有種心寒的感覺(jué)?一類(lèi)軟件寧愿犧牲內存,也要減少保護硬盤(pán);而另外一類(lèi)軟件,卻為了欺騙用戶(hù),讓CPU、硬盤(pán)更加奔波......  

  抓一個(gè)兇手  

  這類(lèi)軟件不少,我以其中一個(gè)桌面工具為例,揭穿它的假面具(不點(diǎn)名字了).運行該軟件后,隨意操作一下,然后打開(kāi)進(jìn)程管理器,把虛擬內存列調出來(lái),找到該進(jìn)程,如圖3:  



OK,20 MB 虛擬內存,而只有 632 KB 物理內存.細心的你會(huì )發(fā)現,大概每 1 秒,該行都有閃爍的感覺(jué),沒(méi)錯,這正是每秒調用SetProcessWorkingSetSize 的結果.另外,我們打開(kāi) Norton Process Viewer ,查看該進(jìn)程的 CPU占用情況. 

  可以看到,就算沒(méi)有操作該軟件,但是每秒,都有 3%的CPU占用起伏(雖然這并不能說(shuō)明什么).另外,內存框中可以看到物理內存和虛擬內存的占用,兩者相去甚遠.此外,可以用 Hook API技術(shù)來(lái)證明每秒調用 SetProcessWorkingSetSize 的行為.  

  應該怎么做  

  這篇文章只想讓用戶(hù)了解軟件占用資源的實(shí)際.而程序員應該把下功夫,真正從代碼中減少內存的消耗,而不是一味忽悠用戶(hù).調用 SetProcessWorkingSetSize 會(huì )帶來(lái)某些好處,但是何時(shí)調用、如何調用應該符合兩個(gè)要求:

  1,在程序暫時(shí)不被使用的時(shí)候(例如最小化);

  2,物理內存和虛擬內存應處于一個(gè)合適的比例(而不是 600 KB 比 20 MB 這么荒唐);

  3,或者不調用,讓 Windows 去處理.

  (本人技術(shù)有限,對于文中的錯誤懇請高手給予指正)

附2篇文章的地址:
http://blog.csdn.net/biku/archive/2006/07/06/886038.aspx
http://blog.csdn.net/zlt982001/archive/2005/08/28/466879.aspx
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
軟件也忽悠人-揭穿號稱(chēng)內存占用極低的軟件的詭計
全面理解虛擬內存及優(yōu)化方法
Windows內存清理工具實(shí)現——從現象到本質(zhì)
關(guān)于 SetProcessWorkingSetSize 和內存釋放
內核怎樣管理你的內存
在 Windows CE 下申請大容量物理內存
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久