我原以为托管代码中的内存分配是否比本机代码中的更快是明确的 -但似乎存在一些争议。由于没有对操作系统的上下文交换调用,虚拟机下的内存管理可能会更快,但后来我看到虚拟机本身需要定期调用操作系统以获得更多内存,并且它具有内存本身的管理开销而不是操作系统。
与其像我一样做出未经证实的断言,请提供指向支持您立场的参考资料的链接。
我原以为托管代码中的内存分配是否比本机代码中的更快是明确的 -但似乎存在一些争议。由于没有对操作系统的上下文交换调用,虚拟机下的内存管理可能会更快,但后来我看到虚拟机本身需要定期调用操作系统以获得更多内存,并且它具有内存本身的管理开销而不是操作系统。
与其像我一样做出未经证实的断言,请提供指向支持您立场的参考资料的链接。
阅读http://msdn.microsoft.com/en-us/library/ms973852.aspx
它详细介绍了 .NET 中内存分配的工作原理,并将其与 C++ 模型进行了简要比较。
总之,.NET 中的内存分配涉及获取当前堆栈点作为对象的地址并将对象的数据大小添加到堆栈指针。相比之下,C++ 必须在已释放指针列表中搜索足够大的堆区域以容纳对象。因此,在大多数情况下,.NET 会更快。
听听 Wintellect 的 Jeff Richter 的话,他是这方面的权威: