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

假设您需要存储一定数量的数据,这些数据由结构或类表示。您最多只能存储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;

}


梦里花落0921
浏览 129回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP