Что dotTrace Performance Profiler подразумевает под [сборкой мусора]? - PullRequest
5 голосов
/ 01 сентября 2010

Что означает [Сбор мусора] на этой картинке? А вещь "20 звонков"?

Я имею в виду, как я могу понять, почему GC так долго? Было ли это собирать много мелких предметов? Один большой? Любые намеки относительно того, как оптимизировать это вообще?

Код, о котором идет речь:

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> объект, но я подумал, что сбор одного, большого объекта должен быть мгновенным (в отличие от сбора небольших объектов).

Ответы [ 2 ]

2 голосов
/ 23 февраля 2015

Если вы хотите выяснить, что вызывает GC, какие объекты выделяются и собираются, вы можете сделать это через dotMemory.Вот учебник, который объясняет, как оптимизировать трафик памяти: https://confluence.jetbrains.com/display/NETCOM/Tutorial+3+-+How+to+Optimize+Memory+Traffic+with+dotMemory

1 голос
/ 09 февраля 2015

Немного опоздал на вечеринку, но если вы используете .Net, то вы используете управляемый код, что в основном означает, что среда выполнения .Net соответствующим образом удаляет ваши объекты, поэтому у вас нет утечек памяти в отличие от C или C ++.

Сборка мусора - это всякий раз, когда среде выполнения требуется время для управления выделением и освобождением памяти для приложения.В этом случае именно это и происходит.

Пожалуйста, взгляните на этот фильтр, который можно использовать с doTrace (у меня есть версия 6), чтобы вы могли анализировать сборку мусора и определять, когда он может блокировать ваше выполнение.,https://www.jetbrains.com/profiler/help/CLR_Activity.html

...