当前位置: 首页 > news >正文

C#开发的OpenRA使用TrimExcess方法

C#开发的OpenRA使用TrimExcess方法

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

foreach (var nodes in levels)

nodes.TrimExcess();

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

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

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

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

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

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

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

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

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

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

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

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

整个例子的代码如下:

http://www.lryc.cn/news/4634.html

相关文章:

  • ImageMagick任意文件读取漏洞(CVE-2022-44268)
  • 第十九篇 ResNet——论文翻译
  • RiProRiProV2主题美化顶部增加一行导航header导航通知
  • RT-Thread MSH_CMD_EXPORT分析
  • 电脑麦克风没声音怎么办?这3招就可以解决!
  • 【C++】运算符重载
  • 什么是眼图?(扫盲向)
  • 【C++】类与对象(二)
  • 【软考】系统集成项目管理工程师(二十一)项目收尾管理
  • 关于公钥与私钥的一点看法
  • 深入React源码揭开渲染更新流程的面纱
  • 32个关于FPGA的学习网站
  • 5分钟快速上手Promise使用
  • 大客户市场:阿里云、腾讯云、华为云“贴身肉搏”
  • 华为OD机试 - 求字符串中所有整数的最小和(Python)| 真题+思路+代码
  • 企业电子招投标采购系统源码之首页设计
  • 浅谈一下前端工作中全流程多层次的四款测试工具
  • 【运算放大器】反相放大电路仿真应用
  • 数组的操作
  • Python - 文件基础操作
  • react的useState源码分析
  • SharpImpersonation:一款基于令牌和Shellcode注入的用户模拟工具
  • 华为OD机试 - 最大相连男生数(Python)| 真题+思路+代码
  • GIS在地质灾害危险性评估与灾后重建中的实践技术应用及python机器学习灾害易发性评价模型建立与优化
  • 2.13、进程互斥的硬件实现方法
  • Leetcode力扣秋招刷题路-2335
  • C语言深度解剖-关键字(6)
  • [多线程进阶]CAS与Synchronized基本原理
  • 【Linux系统编程】02:文件操作
  • 华为OD机试 - 去除多余空格(Python)| 真题+思路+代码