我有必須使用我沒有寫,我沒有改變它的功率庫的應用程序。基本上存在內存泄漏,所以運行時間越長,泄漏越多;它基本上只是寫一些陳舊的頁面文件,我沒有權力刪除。內存泄漏實際上並不會導致程序崩潰,它只是簡單地吞噬所有的內存。當它使用所有系統的memeory時,操作系統將開始刪除舊的頁面文件,並且一切正常運行。設置最大內存使用C#
如果我2GB的系統上運行我的應用程序,它會使用2 GB和繼續運行;對於16GB系統也是如此。
有沒有一種方法來設置內存的應用程序可以使用的金額是多少?
我有必須使用我沒有寫,我沒有改變它的功率庫的應用程序。基本上存在內存泄漏,所以運行時間越長,泄漏越多;它基本上只是寫一些陳舊的頁面文件,我沒有權力刪除。內存泄漏實際上並不會導致程序崩潰,它只是簡單地吞噬所有的內存。當它使用所有系統的memeory時,操作系統將開始刪除舊的頁面文件,並且一切正常運行。設置最大內存使用C#
如果我2GB的系統上運行我的應用程序,它會使用2 GB和繼續運行;對於16GB系統也是如此。
有沒有一種方法來設置內存的應用程序可以使用的金額是多少?
這是Windows中的每個進程限制。每個進程在32位機器上獲得〜2GB的虛擬地址空間(這是Heap使用的)。我擔心你能做的事情不多。
粗略地說,CLR能夠保持高達內存中的對象〜1.6GB。對於大多數應用程序來說,這應該足夠了。如果沒有,那麼你需要處理你的應用程序。
在我的情況下,我遇到了類似的問題,然後使用SqlDataReader來獲取指定塊大小的對象,處理它,計算它,從內存中清除它,然後獲取另一塊。
還有MSDN上詳細的文章 - Investigating Memory Issues
希望這將是有益的。
我基本上只是玩了我不在乎的牌。我用Process.MaxWorkingSet進行了攻擊,並沒有做我想做的事情,所以我把它打包了。有一些更復雜的方法,但我希望有一些微不足道的東西。 – Mark
也看一看過程總督:http://lowleveldesign.wordpress.com/2013/11/21/set-process-memory-limit-with-process-governor/。我編寫了這個工具來測試我的應用程序中的內存泄漏。運行內存限制的進程如果超過它,將會拋出OutOfMemory。
我想你想找到一種方法來解決內存泄漏,或使用其他庫,而不是更改的內存使用量... [限制.NET應用程序的內存使用(HTTP的 –
可能重複:// stackoverflow.com/questions/5956556/limiting-memory-usage-of-a-net-application) –