【问题标题】:Is a thread's stack reported as memory used in Task Manager?线程堆栈是否报告为任务管理器中使用的内存?
【发布时间】:2010-11-17 00:41:53
【问题描述】:

我和我的同事正在尝试跟踪应用程序中的内存问题,在我的研究中,我发现了一个blog entry,它讨论了每个线程如何默认获得 1MB 堆栈。我们的应用程序碰巧创建了很多线程,因此我们编写了一个快速测试程序来确保我们准确理解正在发生的事情。测试应用程序 (C#) 刚刚创建了 300 个线程,但任务管理器仍然只显示 22MB 内存。任务管理器没有计算堆栈内存,还是发生了其他事情?

【问题讨论】:

    标签: memory-management taskmanager


    【解决方案1】:

    任务管理器不是确定内存消耗的最佳工具。相反,请下载免费试用版工具,例如 MemProfilerRedGate's Memory Profiler

    不要使用任务管理器中的内存使用列进行诊断或分析。使用 Perfmon 计数器,尤其是 Private Bytes 和特定的 .NET 计数器,它们会显示内存泄漏等问题。

    也可能感兴趣:Memory Usage Auditing For .NET Applications

    【讨论】:

    • 是的,我意识到这一点 - 这是关于 .NET 内存的最夸张的事情之一。但是,它根本没有回答我的问题。问题很简单 - 堆栈内存是否被任务管理器报告为“正在使用的内存”?
    • “任务管理器”是微软广告团队的一个应用,用来证明“Windows 不慢,你一定是在想象中的事情”;)
    • @Michael Bray:你的问题没有实际意义。为手头的任务使用更好的工具。
    • 非 .NET 应用程序呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2012-03-07
    • 1970-01-01
    • 2017-07-14
    相关资源
    最近更新 更多