C#开发的OpenRA使用TrimExcess方法

Posted caimouse

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#开发的OpenRA使用TrimExcess方法相关的知识,希望对你有一定的参考价值。

C#开发的OpenRA使用TrimExcess方法

当你在细看OpenRA的代码,就会发现在下面这段代码添加了一个方法:

foreach (var nodes in levels)

nodes.TrimExcess();

在上面代码里遍历整个节点列表,把所有节点都调用TrimExcess方法处理一下,

这样做的意义何在?为什么我们在一般的代码不会调用这个呢?

要回答这个问题,就需要了解List<>类型存储的内存分配机制。

简单来说,就是当List<>类型创建一块储存空间时,

它会分配一个适合内存管理大小的内存,当你只保存一个元素时,

它也可以会分配8个元素的储存空间。

这样做的意义就是提高整个代码的运行速度,不过有一个缺点,

就是会多占用了内存,导致系统内存占用大。

对于平时的应用来说,创建List<>对象是比较少的,所以不用关心浪费内存的空间。

但是这样,由于使用List<>来分析并保存yaml文件,

由于保存的节点较多,那么这样浪费的内存就非常可观了。

所以在这里为了减少内存的占用,就调用了方法TrimExcess来进行压缩列表刚好等于列表里元素的实际数量。

整个例子的代码如下:

以上是关于C#开发的OpenRA使用TrimExcess方法的主要内容,如果未能解决你的问题,请参考以下文章

C#开发的OpenRA的扩展方法

C#开发的OpenRA的扩展方法

C#开发的OpenRA的Enumerable.Concat方法应用

C#开发的OpenRA的Enumerable.Concat方法应用

C#开发的OpenRA实现目录搜索

C#开发的OpenRA实现目录搜索