На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

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

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 След.
RSS
Утечка памяти
 
Здравствуйте уважаемые сотрудники КБ  Панорама.

Использую "GIS ToolKit Free" v.12.5.2.
Возникла задача последовательного создания большого количества карт (до нескольких сотен).
В процессе создания происходит падение софта по причине переполнения памяти.

Написал небольшой тестовый пример, создающий некоторое количество ПУСТЫХ карт для проверки:
Код
   TMAPREGISTEREX MapReg;
   TLISTREGISTER ListReg;
   TSHEETNAMES SheetNames;

   memset(&MapReg, 0, sizeof(MapReg));
   memset(&ListReg, 0, sizeof(ListReg));
   memset(&SheetNames, 0, sizeof(SheetNames));

   MkDir(GetCurrentDir() + L"//Tresh//");

   for (int MapIndex = 0; MapIndex < 300; MapIndex++) // Попробуем создать подряд 300 карт
   {
      UnicodeString MapPath = GetCurrentDir() + L"\\Tresh\\Map" + static_cast<UnicodeString>(MapIndex) + ".map"; // Путь к создаваемой карте
      UnicodeString MapStc = RSCButtonEdit->Text; // Путь к классификатору
      Maptype::HMAP Map = mapCreateMapPro(MapPath.w_str (), MapStc.w_str(), &MapReg, &ListReg, &SheetNames, L"", L"", 0); // Создаю карту
                // Пустая карта готова
      mapCloseMap(Map); // Закрываю карту
      Map = 0;
   }
В итоге в диспетчере задач чётко виден рост памяти выделенной процессу, следовательно при mapCloseMap ресурсы не освобождаются.
Та же ситуация при открытии карт:
Код
        int MapIndex = 0;
   UnicodeString MapPath = GetCurrentDir() + L"\\Tresh\\Map" + static_cast<UnicodeString>(MapIndex) + ".map"; // Путь для открытия первой карты
   while (FileExists(MapPath)) // Пока файл сущетвует
   {
      Maptype::HMAP Map = mapOpenMapUn(MapPath.w_str()); // Открываю карту
                // Пустая карта открыта
      mapCloseMap(Map);
      Map = 0; // Закрываю карту

      MapIndex++;
      MapPath = GetCurrentDir() + L"\\Tresh\\Map" + static_cast<UnicodeString>(MapIndex) + ".map"; // Путь для открытия на следующей итерации
   }
Диспетчер опять же показывает рост памяти.

Решил проверить тот же код уже на SDK. В SDK такой проблемы не обнаружил, память освобождается корректно.
Изменено: Сергей Алексеев - 26.03.2018 16:05:59
 
Цитата
Сергей Алексеев написал:
Диспетчер опять же показывает рост памяти.Решил проверить тот же код уже на SDK. В SDK такой проблемы не обнаружил, память освобождается корректно.
При формировании района работ из нескольких тысяч листов SXF или при различных видах обработки наборов данных память выделяется обычно в пределах
нескольких сот мегабайт-двух гигабайт за счет закрытия обработанных листов.
Диспетчер памяти не показывает в реальном времени результат освобождения локальной памяти (new/delete).
Менеджер памяти может ее освобождать с запаздыванием.
Изменено: Елена Кузнецова - 23.03.2018 14:25:12
 
Цитата
Решил проверить тот же код уже на SDK. В SDK такой проблемы не обнаружил, память освобождается корректно.
 
Цитата
Елена Кузнецова написал:

Менеджер памяти может ее освобождать с запаздыванием.
Для наглядности ситуации с потреблением памяти приводим скриншоты со статистикой. На них очень наглядно видна проблема. Надеемся, что эта информация поможет в решении данной проблемы.
Скрин GTK
Скрин SDK
 
Цитата
Елена Кузнецова написал:
Использую "GIS ToolKit Free" v.12.5.2.Возникла задача последовательного создания большого количества карт (до нескольких сотен).В процессе создания происходит падение софта по причине переполнения памяти.
Предлагаем обновить версию программы до последней. На данный момент актуальная версия 12.5.7.
Для обновления Вам нужно прислать номер лицензионного ключа на почту Техническая поддержка КБ Панорама <panorama@gisinfo.ru> и написать, чтобы предоставили ссылку  на обновленную версию программы GIS ToolKit Free версия 12.
Изменено: Елена Кузнецова - 23.03.2018 14:50:26
 
Можно для начала обновить библиотеки гис-ядра с сайта.
Вопрос уточняющий: у вас приложение х32 или х64?
 
Цитата
Можно для начала обновить библиотеки гис-ядра с сайта.
Вопрос уточняющий: у вас приложение х32 или х64?
Приложение x32.
 
Цитата
Можно для начала обновить библиотеки гис-ядра с сайта.
Заменил библиотеки на версию 12.5.7, память по прежнему не освобождается.
 
Цитата
Сергей Алексеев написал:
Заменил библиотеки на версию 12.5.7, память по прежнему не освобождается.
Добрый день.
Есть ли какое-нибудь решение данной проблемы?
 
Цитата
Алексей Антонов написал:
Цитата
 Сергей Алексеев  написал:
Заменил библиотеки на версию 12.5.7, память по прежнему не освобождается.
Добрый день.
Есть ли какое-нибудь решение данной проблемы?
Уважаемые господа!
Пожалуйста, помогите решить данную проблему, т.к. для заказчика необходимо в потоковом режиме создать порядка тысячи номенклатур, но из-за утечки памяти софт падает на 30-40%.  
Страницы: 1 2 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности