在这张图片中,[Garbage collection]指的是什么?还有“20次调用”是什么意思?
我的意思是,我怎样才能找出为什么垃圾回收花费了这么长时间?是因为收集了很多小对象?还是一个大对象?有没有任何提示可以优化这个问题呢?
相关的代码如下:
private void DeserializeFrom(SerializationInfo info)
{
Width = info.GetInt32("width");
Height = info.GetInt32("height");
var data = (List<byte>)info.GetValue("cells", typeof(List<byte>));
cells = new Cell[physicalSize.Width, physicalSize.Height];
int pos = 0;
for (int x = 0; x < physicalSize.Width; x++)
{
for (int y = 0; y < physicalSize.Height; y++)
{
cells[x, y] = new Cell();
if (x < Width && y < Height)
{
cells[x, y].HasCar = data[pos];
pos++;
}
}
}
}
没有太多花哨的东西。我怀疑罪魁祸首是大型的List<byte>
对象,但我认为收集一个单个的、大的对象应该是瞬间完成的(与收集一堆小对象相比)。