【问题标题】:Thread local storage memory usage线程本地存储内存使用
【发布时间】:2011-09-16 01:39:18
【问题描述】:

.NET 中有没有办法确定线程本地存储占用的内存量?

具体来说,我正在寻找 ThreadStatic 对象使用的内存量以及分配给 Thread 数据槽中的对象的内存量(例如,通过调用 Thread.SetData)。

澄清一下:

线程本地存储: http://msdn.microsoft.com/en-us/library/6sby1byh.aspx

线程本地存储:线程相关的静态字段和数据槽 http://msdn.microsoft.com/en-us/library/6sby1byh.aspx

【问题讨论】:

  • 如何定义“线程本地存储占用的内存量”?
  • 我的猜测是插槽将占用非常小的空间,您真正感兴趣的是插槽引用的堆中的数据量,计算即非常棘手,因为您必须遍历对象图。
  • @Sam 正是我想要的。但我什至没有看到允许我列出插槽内容的 API。

标签: c# thread-local-storage


【解决方案1】:

您可以按如下方式获取内存使用情况。您可以使用其他几种内存测量方法here。但是,我不太确定是否有办法通过线程获取内存使用情况。进程有Threads property,它由ProcessThreads 的集合组成,这正是您感兴趣的,但不是直接获取内存使用情况的方法。

// 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2012-04-05
    • 2015-05-16
    相关资源
    最近更新 更多