我的應用程序中有內存管理問題。應用程序內存在運行時迅速增長。我在斷開模式下使用數據集。爲了解決這個問題,我經常刷新DS,並使用SetProcessWorkingSetSize
來管理內存使用情況。它在我的開發計算機上工作正常。使用SetProcessWorkingSetSize
有什麼優點和缺點?使用SetProcessWorkingSetSize的優缺點
回答
SetProcessWorkingSetSize()控制您的進程使用的RAM的數量,否則它不會影響進程的虛擬內存大小。 Windows已經非常擅長動態控制它,當另一個進程需要RAM時,可以根據需要交換內存頁面。通過手動這樣做,你的程序變慢了很多,造成大量的頁面錯誤當Windows被迫交換內存頁回。SetProcessWorkingSetSize通常用於增加的RAM分配給一個過程量。或者當應用程序知道它將長時間閒置時強制進行修剪。當您最小化應用程序的主窗口時,也可以由舊版Windows自動完成。
無需BTW PInvoke的這一點,你可以使用Process.GetCurrentProcess.Min/MaxWorkingSet性能。
唯一值得使用情況下,我已經看到了這個電話是當你知道你的過程是要養豬了很多系統的RAM,並要保留它的持續時間。你用它來告訴操作系統「是的,我將在整個運行過程中吃掉很多系統RAM,並且不會妨礙我的工作。」
在這種情況下,保留操作系統的默認行爲是不好的。操作系統爲每個進程(基本上是其工作空間)分配一個默認的MB MB RAM。它的資源管理啓發式算法不是神諭,所以如果他們檢測到一些進程吃的方式比系統資源的份額更多(比如RAM),他們會盡可能地回收儘可能多的餘量。對於你的過程來說,這意味着操作系統會浪費大量的CPU(並因此損害你的性能),在不需要的時候通過分配內存進出你的地址空間。
我們發現,對於使用Delphi for Win32/Win64編寫的GUI應用程序,或者使用在Win32 API(GDI等)之上使用大型和重型庫的類似方式編寫的GUI應用程序,值得調用SetProcessWorkingSetSize一旦。
我們與-1調用它,-1參數,第二級分內後的應用程序已經完全打開,並顯示在主窗口給用戶。在這種情況下,SetProcessWorkingSetSize(... -1,-1)會釋放大量似乎不再需要的啓動代碼。內存很快恢復到沒有SetProcessWorkingSetSize(... -1,-1)時的1/3左右,但不會增長更多。所以我們已經有效地保存了大部分啓動代碼(加載和解析配置文件,初始化GUI等)的2/3內存,這些內容可能並不需要。
如果你有一個GUI應用程序,你可以在測試自己的應用程序以同樣的方式 - 只需要調用一次,看看有多少內存已被釋放肯定。
即使沒有GUI服務器(服務)的應用程序 - 我認爲服務器後調用SetProcessWorkingSetSize一旦完全加載並初始化可能是有用的。
- 1. 使用≠like!=優點/缺點
- 2. 使用Arrays.asList的優缺點
- 3. 使用MessageFormat的優缺點
- 4. 使用log4j的優缺點
- 5. SetProcessWorkingSetSize的用法
- 6. 使用WebServiceHostFactory優缺點
- 7. 使用socketio心跳的優點/缺點
- 8. 使用java rmi的優點和缺點
- 9. 使用ReactJS的優點和缺點
- 10. 使用指針的優點/缺點
- 11. 使用startManagingCursor()的優點和缺點
- 12. 使用SQLDataReader有哪些優點/缺點?
- 13. 使用Maven有什麼優點/缺點?
- 14. StyleCop,優點/缺點
- 15. Android遊戲使用SVG的優缺點
- 16. 使用故事板的優缺點?
- 17. 使用GroovyClassLoader與GroovyShell的優缺點
- 18. 使用Signalr的優缺點是什麼
- 19. 使用不同環境的優缺點
- 20. 使用UISpec4J或FEST的優缺點
- 21. 使用UdpClient優於Socket的優點和缺點
- 22. CouchDB的優缺點
- 23. XCODE4的優缺點?
- 24. CodeSmith的優缺點
- 25. Phonegap的優缺點
- 26. BPMN的優缺點?
- 27. READ_COMMITTED_SNAPSHOT的優缺點
- 28. MongoDB的優缺點?
- 29. Three20的優點和缺點
- 30. smartGWT的缺點和優點
很難想象這樣做會阻礙其他流程的性能,而對您的流程沒有任何收益。 –
這聽起來像你有一個內存泄漏,Win32 API無法爲你解決。使用類似UMDH的東西來獲取內存轉儲並追蹤泄漏。 –