在堆栈和堆上分配对象之间的区别

shumach5

这是C#.NET旁边的一个非常普遍的问题。一些有关性能优化的技术总是尽可能地尝试在堆栈上分配对象,而不是在堆上分配对象。使用stackalloc而不是normal Array,或者使用struct type作为局部变量而不是class。我的问题是为什么在堆栈上分配对象可以提高性能?在我看来,内存就是内存,因此分配对象的平均时间是相同的。仅仅是因为避免垃圾回收吗?

佩德罗·科埃略

当讨论涉及非托管代码时,垃圾收集器确实是一个重要因素,因为堆栈分配(使用stackalloc)对它的要求会更少。请注意,在堆的情况下,垃圾回收器将需要对数组进行重新分配。另一方面,对于托管代码,分配是默认设置的(您不能选择方式)-引用类型在堆中分配,而值类型在堆栈中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

指向堆栈分配对象的指针和引用

来自分类Dev

原型被分配对象常量与函数之间的区别

来自分类Dev

父母配对和父母配对之间的区别

来自分类Dev

在堆栈上分配对象的好处?

来自分类Dev

分配对象或为其设置值之间有什么区别

来自分类Dev

C ++:为什么对堆栈分配对象的引用与对堆分配对象的引用一样?

来自分类Dev

评估堆栈和线程堆栈之间的区别

来自分类Dev

了解堆上静态和非静态方法表示之间的区别

来自分类Dev

了解堆上静态和非静态方法表示之间的区别

来自分类Dev

ES6对象方法分配之间的区别:a,'a'和['a']?

来自分类Dev

接口和类对象内存分配之间的区别

来自分类Dev

分配和替换之间的区别

来自分类Dev

分配和替换之间的区别

来自分类Dev

robovm可以在堆栈而不是堆上分配本地方法对象吗?

来自分类Dev

存储分配和内存分配之间的区别?

来自分类Dev

“调用堆栈”和“任务队列”之间的区别

来自分类Dev

未分配对象。

来自分类Dev

多线程中的堆栈和调用堆栈之间的区别?

来自分类Dev

通过在堆上分配堆栈部分来避免堆栈溢出?

来自分类Dev

变量和对象之间的区别

来自分类Dev

对象和类之间的区别

来自分类Dev

对象和实例之间的区别

来自分类Dev

jQuery从值数组分配对象键和值

来自分类Dev

使用扩展语法`...` 和等于`=` 分配对象

来自分类Dev

函数和闭包分配之间的区别

来自分类Dev

Fortran指针分配,“ =>”和“ =“之间的区别

来自分类Dev

用于堆栈分配对象的C ++虚拟析构函数内联

来自分类Dev

在C ++中,RAII是否总是在堆栈上分配对象,还是曾经使用堆?

来自分类Dev

克隆对象和普通对象之间的区别

Related 相关文章

热门标签

归档