有没有机会,我们可以想象在一个进程(可能是c#)中啥都进入堆栈,啥都进入堆?

Posted

技术标签:

【中文标题】有没有机会,我们可以想象在一个进程(可能是c#)中啥都进入堆栈,啥都进入堆?【英文标题】:By any chance, can we visualize what all goes to stack and what all goes to heap in a process (may be c#)?有没有机会,我们可以想象在一个进程(可能是c#)中什么都进入堆栈,什么都进入堆? 【发布时间】:2018-01-17 04:58:56 【问题描述】:

我开始探索 Clrmd 以可视化进入堆栈和堆的所有变量,最后在堆中发现了一组 (>1000) 个对象,其中大多数是字符串类型,不是由进程中的我和一个堆栈跟踪,它只提供有关每个线程中的方法(堆栈帧)的信息,但不提供有关方法中存在的变量和其他属性的信息。

我的问题是:

    为什么以及如何在堆中创建这些字符串对象,即使我没有在我的程序中使用任何字符串(c# 代码)。 是否有任何方法可以过滤堆对象,以便仅使用 clrmd 或任何其他 nuget 包或工具显示程序使用的对象(我的 c# 代码留下程序内部创建的对象)。李> 我可以在另一个进程中使用进程的堆栈帧(我的 C# 代码)显示在方法中使用的变量集(局部变量)。

【问题讨论】:

【参考方案1】:

亲爱的 Ganesh,您可以尝试 Red-gate [ANTS Memory Profiler] 来跟踪内存中的对象并按任何类型过滤它们...点击下面的链接

here

【讨论】:

我刚刚阅读了有关 ant memory profiler 的信息,但它无法回答我的问题(1,2,3),无论如何我会尝试一下。感谢您的考虑。

以上是关于有没有机会,我们可以想象在一个进程(可能是c#)中啥都进入堆栈,啥都进入堆?的主要内容,如果未能解决你的问题,请参考以下文章

C#的对接库[关闭]

c#进程间获取/释放资源计数[关闭]

*可以*为静态的C#方法应该是静态的吗? [关闭]

c# 设置窗体句柄

.NET - 密集调试的第一次机会异常侦听器?

C#中你想象的Task,很简单?