网站建设的重点,营销型网站建设的原则,网站建设培训深圳,网站制作教程百度云C#开发的OpenRA使用TrimExcess方法 当你在细看OpenRA的代码,就会发现在下面这段代码添加了一个方法: foreach (var nodes in levels) nodes.TrimExcess(); 在上面代码里遍历整个节点列表,把所有节点都调用TrimExcess方法处理一下, 这样做的意义何在?为什么我们在一般的代码… C#开发的OpenRA使用TrimExcess方法 当你在细看OpenRA的代码,就会发现在下面这段代码添加了一个方法: foreach (var nodes in levels) nodes.TrimExcess(); 在上面代码里遍历整个节点列表,把所有节点都调用TrimExcess方法处理一下, 这样做的意义何在?为什么我们在一般的代码不会调用这个呢? 要回答这个问题,就需要了解List类型存储的内存分配机制。 简单来说,就是当List类型创建一块储存空间时, 它会分配一个适合内存管理大小的内存,当你只保存一个元素时, 它也可以会分配8个元素的储存空间。 这样做的意义就是提高整个代码的运行速度,不过有一个缺点, 就是会多占用了内存,导致系统内存占用大。 对于平时的应用来说,创建List对象是比较少的,所以不用关心浪费内存的空间。 但是这样,由于使用List来分析并保存yaml文件, 由于保存的节点较多,那么这样浪费的内存就非常可观了。 所以在这里为了减少内存的占用,就调用了方法TrimExcess来进行压缩列表刚好等于列表里元素的实际数量。 整个例子的代码如下: