2011-06-16 54 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;