Утечка памяти dotSpatial MapLineLayer

Я использую объект dotSpatials Map для выполнения некоторых операций с файлом формы. Моя программа съедает память, когда я использую приведенный ниже код для добавления слоя (MapLineLayer), и когда я закончил со слоем, мне нужно вернуть свою память. Я не могу избавиться от объекта «Карта» и его слоев.

        Map map = new Map {Projection = ProjectionInfo.FromEpsgCode(epsgCode)};
        try
        {
            map.AddLayer(filePath);
        }

Как правильно разместить карту dotSpatials?


person haber    schedule 15.07.2015    source источник


Ответы (1)


Попробуйте ClearLayers (). Если объект Map не отключен и по-прежнему вызывает утечку памяти, это может быть ошибкой ... Сказав это, имейте в виду, что сборщик мусора не освободит вашу память сразу же, элемент управления Map выходит за пределы области видимости.

Если вы хотите, вы можете запустить GC.Collect сразу после завершения работы с элементом управления Map (в целях тестирования), но нет необходимости вставлять этот код в ваше приложение, поскольку сборщик мусора управляет им должным образом.

GC.Collect();
GC.WaitForPendingFinalizers();
person CharithJ    schedule 15.07.2015
comment
Я попробовал ваше предложение, но, к сожалению, оно не работает. - person haber; 16.07.2015
comment
@haber: Что ты делал? Как вы меряли память? Вы выполнили свой код несколько раз и вызывали сборщик мусора, как я указал? - person CharithJ; 16.07.2015
comment
Я не использовал GC.WaitForPendingFinalizers (); до. Добавление его освободило память. - person haber; 16.07.2015
comment
@haber: Отлично. Итак, утечки памяти нет. Нет необходимости хранить методы вызова GC в вашем коде. GC освободит память соответствующим образом, когда это потребуется. - person CharithJ; 16.07.2015