托管代码中的.NET内存管理比本机代码更快吗?

Jos*_*osh 11 .net memory clr performance vm-implementation

我原本以为在托管代码中内存分配是否比本机代码更快是明确的 - 但似乎存在一些争议.也许虚拟机下的内存管理更快,因为没有对操作系统的上下文交换调用,但后来我发现虚拟机本身需要定期调用操作系统以获得更多内存,并且它具有内存本身的管理开销而不是操作系统.

而不是像我一样制作未经证实的断言,请提供支持您职位的参考文献的链接.

Dav*_*rno 6

阅读http://msdn.microsoft.com/en-us/library/ms973852.aspx

它详细介绍了内存分配在.NET中的工作原理,并简要地将其与C++模型进行了比较.

总之,.NET中的内存分配涉及将当前堆栈点作为对象的地址,并将对象的数据大小添加到堆栈指针.相比之下,C++必须搜索一个足够大的对象区域的释放指针列表.因此,在大多数情况下,.NET会更快.


Kev*_*Kev 1

听听 Wintellect 的 Jeff Richter 的说法,他是这个主题的权威:

http://www.dotnetrocks.com/default.aspx?showNum=361