2012-01-23 42 views
4

我有必須使用我沒有寫,我沒有改變它的功率庫的應用程序。基本上存在內存泄漏,所以運行時間越長,泄漏越多;它基本上只是寫一些陳舊的頁面文件,我沒有權力刪除。內存泄漏實際上並不會導致程序崩潰,它只是簡單地吞噬所有的內存。當它使用所有系統的memeory時,操作系統將開始刪除舊的頁面文件,並且一切正常運行。設置最大內存使用C#

如果我2GB的系統上運行我的應用程序,它會使用2 GB和繼續運行;對於16GB系統也是如此。

有沒有一種方法來設置內存的應用程序可以使用的金額是多少?

+0

我想你想找到一種方法來解決內存泄漏,或使用其他庫,而不是更改的內存使用量... [限制.NET應用程序的內存使用(HTTP的 –

+2

可能重複:// stackoverflow.com/questions/5956556/limiting-memory-usage-of-a-net-application) –

回答

3

這是Windows中的每個進程限制。每個進程在32位機器上獲得〜2GB的虛擬地址空間(這是Heap使用的)。我擔心你能做的事情不多。

粗略地說,CLR能夠保持高達內存中的對象〜1.6GB。對於大多數應用程序來說,這應該足夠了。如果沒有,那麼你需要處理你的應用程序。

在我的情況下,我遇到了類似的問題,然後使用SqlDataReader來獲取指定塊大小的對象,處理它,計算它,從內存中清除它,然後獲取另一塊。

還有MSDN上詳細的文章 - Investigating Memory Issues

希望這將是有益的。

+0

我基本上只是玩了我不在乎的牌。我用Process.MaxWorkingSet進行了攻擊,並沒有做我想做的事情,所以我把它打包了。有一些更復雜的方法,但我希望有一些微不足道的東西。 – Mark