0

我知道 .net 线程的重量很重,每个都消耗约 1MB 的内存(主要用于堆栈)。现在,如果这是一个用户 .net 类,我知道它可能会将大部分内存放入 LOH。但是,由于它是一个核心类,我想知道它的行为是什么。

这个问题的原因是因为我目前正在对一个(可能长期存在的)应用程序进行内存分析,并且似乎存在缓慢的泄漏。我注意到 VS 显示了 33 个线程(处于各种状态,包括已停止)。我想知道线程的节俭使用是否会导致内存碎片化(以及一些 LOH DTO)。

4

1 回答 1

2

线程的堆栈没有存储在 LOH 上,因为堆栈不是 CLR 对象。当 .NET 请求新线程时,操作系统会分配线程的堆栈。

CLR 线程是围绕操作系统线程的瘦包装器。

如果确实存在内存泄漏,则可以确定它不在线程对象本身中。

于 2013-08-21T21:33:44.507 回答