2011-06-16 63 views
7

.NET中有一種方法可以確定線程本地存儲所佔用的內存量嗎?線程本地存儲內存使用情況

具體來說,我正在尋找ThreadStatic對象使用的內存量以及分配給Thread數據槽中對象的內存量(例如通過調用Thread.SetData)。

澄清:

線程局部存儲: http://msdn.microsoft.com/en-us/library/6sby1byh.aspx

線程本地存儲:螺紋相對靜態字段和數據時隙 http://msdn.microsoft.com/en-us/library/6sby1byh.aspx

+1

如何定義「線程本地存儲佔用的內存量」? – CodesInChaos 2011-06-16 09:57:47

+0

我的猜測是這些插槽佔用的空間非常小,你真正感興趣的是插槽中引用的堆中的數據量,這是非常棘手的,因爲你必須走一個對象圖。 – 2011-06-17 03:01:22

+0

@Sam正是我在找的東西。但是我甚至沒有看到允許我列出插槽內容的API。 – ender 2011-06-21 07:49:46

回答

2

您可以通過工藝得到如下的內存使用情況。有幾種其他記憶測量可以使用here。但是,我不太確定是否有辦法通過線程獲取內存使用情況。進程有Threads property,其中包含一組ProcessThread,這正是您感興趣的內容,但不是直接獲取內存使用情況的方式。

// Get the current process. 
Process currentProcess = System.Diagnostics.Process.GetCurrentProcess(); 

// Gets the amount of physical memory allocated for the associated process. 
long totalNumberOfBytesUsed = currentProcess.WorkingSet64;