当前位置:  开发笔记 > 编程语言 > 正文

堆与堆栈分配的影响(.NET)

如何解决《堆与堆栈分配的影响(.NET)》经验,为你挑选了1个好方法。

从关于Heap和Stack 的SO回答 1中,它提出了一个问题:为什么知道变量的分配位置很重要?

在另一个答案,有人指出堆栈更快.这是唯一的含义吗?有人可以提供一个代码示例,其中简单的分配位置更改可以解决问题(例如,性能)?

请注意,此问题是特定于.NET的

1问题从SO中删除.



1> Jon Skeet..:

只要您知道语义是什么,堆栈与堆的唯一结果就是确保您不会溢出堆栈,并意识到垃圾收集堆相关的成本.

例如,JIT 可能会注意到新创建的对象从未在当前方法之外使用(引用永远不能在其他地方转义)并在堆栈上分配它.目前它不会这样做,但这是合法的事情.

同样,C#编译器可以决定在堆上分配所有局部变量 - 堆栈只包含对MyMethodLocalVariables实例的引用,并且所有变量访问都将通过它实现.(事实上​​,委托或迭代器块捕获的变量已经具有这种行为.)

你的问题出现了,而Eric Lippert正在深入审查C# - 我有一节解释C#1中的内容,他认为开发人员不应该关心.


埃里克是男人.你很幸运有这么好的评论家.
推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有