第一张图片中使用的记忆工具来自 Rider。据我所知,它显示了托管堆的分配。第二张图显示了 BenchmarkDotNet 的结果。
为什么 Rider 显示已进行分配,但 BenchmarkDotNet 表明未对堆进行分配?
如果我改用下面的代码示例,BenchmarkDotNet 会选择分配:
var i = new int[0];
Array.Empty
指向框架已经静态分配的数组(请参阅here https://source.dot.net/#System.Private.CoreLib/Array.cs,bc9fd1be0e4f4e70).
你打电话时new int[0]
,实际上是为您分配了一个大小为 0 的新数组。
另请参阅此answer https://stackoverflow.com/a/3102408/1176983.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)