我知道.net线程非常重,每个线程消耗大约1MB的内存(主要用于堆栈)。现在,如果这是一个user.net类,我知道它可能会将大部分内存放入LOH中。然而,由于它是一个核心类,我想知道它的行为是什么
出现这个问题的原因是,我目前正在对一个(可能寿命很长的)应用程序进行内存分析,而且似乎有一个缓慢的泄漏。我注意到VS显示了33个线程(处于各种状态,包括已停止)。我想知道线程的节俭使用是否会使内存碎片化(以及一些LOHDTO)。
线程的堆栈没有存储在LOH上,因为堆栈不是CLR对象。当.NET请求新线程时,操作系统会分配线程的堆栈。
CLR线程是围绕操作系统线程的精简包装。
如果确实存在内存泄漏,可以确定它不在线程对象本身中。