为了账号安全,请及时绑定邮箱和手机立即绑定

GC压力-列表与数组,类与结构

GC压力-列表与数组,类与结构

C#
梦里花落0921 2021-05-01 10:05:34
假设您需要存储一定数量的数据,这些数据由结构或类表示。您最多只能存储N个元素,如果要添加更多元素,则必须先删除现有元素。您可以使用任何存储数据的方式-列表,数组(如果需要,也可以使用其他任何方式)。在垃圾收集方面,是否使用类或结构表示信息是否有所不同?是否将其存储在列表或数组中会有所不同吗?我的直觉是最好的方法是使用结构数组,因为原则上GC永远不需要在这里收集任何东西(虽然该数组存储在堆中,但其大小保持不变,因此没有任何收集我相信?)。我不完全确定将如何表示结构列表-是否存在与添加/删除结构元素相关联的任何形式的垃圾回收?至于使用类而不是结构,我希望一旦将其从列表中删除或覆盖在数组中,则需要收集旧的引用,因此会给GC造成压力。如果我的直觉在这里是正确的,或者我在任何地方出错了,将不胜感激!谢谢示例代码:public struct SStruct{   int ABC;}public class SClass{  int ABC;}public class Test{   List<SStruct> _data1;   List<SClass> _data2;   SStruct[100] _data3;   SClass[100] _data4;  public void run()  {    var sStruct = new SStruct();    var sClass = new SClass();    if(data1.Count > 0)      _data1.RemoveAt(0);    if(data2.Count > 0)      _data2.RemoveAt(0);    _data1.Add(sStruct);    _data2.Add(sClass);    _data3[0] = sStruct;    _data4[0] = sClass;}
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信