0

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

这个问题的原因是因为我在内存分析一个(可能长寿命)的应用程序,并且似乎有一个缓慢的泄漏。我注意到VS显示了33个线程(在各种状态下,包括停止)。我想知道线程的节约使用是否会碎片化内存(以及一些LOH DTO)。

+0

你怎么样分析?你使用什么工具?这听起来像猜测......猜测是无法调试内存泄漏。如果你有一个配置文件,那么配置文件 - 关于漏洞来自哪里(如果它存在的话)应该没有歧义。 –

+0

@J ...我知道。这是猜测,因此我要求提供更多信息。我并没有说我确定源是线程,我所要求的可能是因为线程。至于性能分析,我正在使用ANTS 7.哪个不给我任何有关线程内存使用情况的信息。 – Aron

+0

当然是的。实例保留应该显示任何根植的东西。你是否使用任何本地代码(外部DLL等?)。这是C#还是VB.NET或其他东西? –

回答

2

线程的堆栈未存储在LOH中,因为该堆栈不是CLR对象。当.NET要求一个新的线程时,线程的堆栈由操作系统分配。

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

如果你真的有内存泄漏,你可以确定它不在线程对象本身。