2012-08-30 31 views
0

我想知道如何設置內.NET 4.0以下值的值(它有一個getter,而不是setter):如何設置Process.GetCurrentProcess()PeakWorkingSet64在C#.NET

Process.GetCurrentProcess()。PeakWorkingSet64();

更新:

我想將它設置爲一個很高的值,以減少其在工作集節目的增長導致軟頁面錯誤。這可能有助於解決我們用探查器確定的延遲問題。

更新:

由於玉秀指出的那樣,你不能設置峯(其相當的觀察)。我真正想要做的是將工作集設置爲64位進程:

Process.GetCurrentProcess()。WorkingSet64()= xxx;

更新:

正確回答這個問題是在How to set MinWorkingSet and MaxWorkingSet in a 64-bit .NET process?

+0

這有點像在你的車上設置里程錶。 – phoog

+0

var setDiff = new byte [Math.Max(0,targetsWS - Process.GetCurrentProcess()。PeakWorkingSet64())]; –

+1

峯值工作集是觀察值,不是配置。只能通過更改數字來改變觀察值。你必須改變潛在的現象本身。對於延遲問題,正確的解決方法是在初始化時將所需的所有內容加載到內存中。 –

回答

1

您是SetProcessWorkingSetSize它通過

Process.GetCurrentProcess().MinWorkingSet = xxx; 

這種方式可以確保出現在.NET後(幾乎)所有的頁面都不會被分頁。當處理延遲時,尋呼只是一個問題。如果你有一個大的對象圖,GC時間也會負面影響延遲時間。本質上大小確實很重要。如果你減少整體內存消耗,你將得到更短的GC時間和更少的工作集,然後更不可能被分頁。

+0

我可以這樣做,但不幸的是它不影響WorkingSet64。 – Contango

+0

我覺得這個Windows API什麼都不做。現在找不到參考。 – usr

+0

這可以設置值,但是,要設置64位工作集,請參閱http://stackoverflow.com/questions/12203969/how-to-set-minworkingset-and-maxworkingset-in-a-64-比特網過程 – Contango

相關問題