我可以編寫一個程序,它會啓動其他小程序留在物理內存中,並避免交換到磁盤?我很好奇Linux和Windows的答案。有沒有辦法強制一個程序留在內存中
1
A
回答
9
POSIX系統可以使用mlock
/munlock
將內存鎖定到RAM中。在Windows上,您可以使用VirtualLock
完成相同的操作。
在幾乎所有情況下,您都希望讓操作系統處理這類事情。
編輯:爲了說明一下,如果您想要做到這一點的原因是性能或響應能力,不要。絕大多數情況下,您想要這樣做的唯一原因就是阻止密碼或加密密鑰意外地寫入磁盤,攻擊者可能會將其寫入磁盤。
1
引用的用戶之一:
是的,有:具有程序調用VirtualLock功能:進程已鎖定
頁保留在物理內存中,直到 過程解鎖它們或終止。這些頁面被保證不會被 鎖定時寫入頁面文件。
我相信SetProcessWorkingSetSize函數也可能有幫助。
對於這些人的想法我是一個異教徒甚至暗示這 可能是有用的:
注意,有可能在 內存鎖定頁面的正當理由。一個正當的原因可能是用戶正在運行CD刻錄機, 並且CD刻錄機不斷頁出,並因此導致緩衝區運行不足,從而創建了一個過山車。在這種情況下, 將鎖定內存緩衝區,以便它們不會被分頁,即使這種情況意味着計算機的其他部分也會減慢抓取速度,因爲這仍然是 優於爲用戶提供過山車。還可以有其他有效的 原因 - 我的觀點是,雖然通常不建議在內存中鎖定 頁,但有效情況仍然存在,並且我不認爲 這個想法會幫助此處的OP。
更新:看看Process Hacker的Reduce Working Set菜單 選項。
相關問題
- 1. 有沒有辦法*真的*強制pydev使用強制內建?
- 2. 有沒有辦法強制JavaFX發佈視頻內存?
- 3. 有沒有辦法強制一個對象釋放可可內存?
- 4. 在Haskell中,有沒有辦法強制強制多態呼叫?
- 5. 有沒有辦法在c#中強制函數內聯?
- 6. 有沒有辦法強制Firefox在新進程中啓動?
- 7. 有沒有辦法強制MonoDevelop構建/加載程序集?
- 8. 有沒有辦法強制cin提交?
- 9. 有沒有辦法強制啓用quicktime?
- 10. git merge:有沒有辦法強制--squash?
- 11. 有沒有辦法強制變量保持緩存在x86(/ _ 64)?
- 12. 有沒有辦法強制程序使用頁面文件虛擬內存時在.net中的RAM用完?
- 13. 有沒有辦法讓我在C#中留下一個數字?
- 14. 有沒有辦法在CSS中保留一個錨?
- 15. 有沒有辦法在WPF TextBlock中強調一個字符?
- 16. 有沒有辦法在Ruby中強制實現接口方法?
- 17. 有沒有辦法強制TextMate緩存文件?
- 18. 有沒有辦法強制瀏覽器不緩存?
- 19. 有沒有辦法強制WebClient,不返回緩存數據?
- 20. 有沒有辦法記錄誰在CC.Net中創建了一個強制構建?
- 21. 有沒有辦法在一個存儲庫中有一個文件,但沒有在另一個存儲庫中?
- 22. 有沒有辦法在內存中加載多個app.configs?
- 23. 有沒有辦法在OllyDbg中打開多個內存轉儲?
- 24. 有沒有辦法強制在iPhone中改變界面方向?
- 25. 有沒有辦法強制在Symfony2中進行表單綁定?
- 26. 有沒有辦法在WSO2 API Manager中強制請求HTTP DELETE?
- 27. 有沒有辦法在JavaScript/jQuery中強制DOM焦點?
- 28. 有沒有辦法強制RestAssured過濾器的順序?
- 29. 有沒有辦法強制參數順序?
爲什麼要用今天的技術來做到這一點?需求的理由是什麼? – 2013-02-22 01:31:13
當然,釘住它。當然,要做到這一點,你需要做一些低級別的系統調用。 – 2013-02-22 01:31:28
對於Windows,一個指針和一些警告:http://stackoverflow.com/questions/1039017/can-i-tell-windows-not-to-swap-out-a-particular-processes-memory – 2013-02-22 01:32:22