有没有机会,我们可以想象在一个进程(可能是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#)中啥都进入堆栈,啥都进入堆?的主要内容,如果未能解决你的问题,请参考以下文章