Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как исправить утечку памяти в REST клиенте для macOS в Delphi

Delphi , Синтаксис , Память и Указатели

Об утечке памяти в REST клиенте для macOS в Delphi

При работе с программированием на Delphi и Object Pascal, разработчики могут столкнуться с различными проблемами, в том числе и с утечкой памяти. Особенно это актуально для приложений, работающих под macOS, где поведение программы может отличаться от поведения в Windows. В данной статье мы рассмотрим проблему утечки памяти в REST клиенте для macOS, которая была замечена в среде разработки Delphi XE8, update 1.

Описание проблемы

Разработчик столкнулся с утечкой памяти в клиенте REST на macOS, при использовании простейшего блока кода, демонстрирующего проблему. Код включает в себя создание объекта TRestRequest, выполнение запроса и последующее освобождение ресурсов. На Windows, с использованием MadExcept, утечки не обнаруживались, в то время как на macOS Activity Monitor показывал непрерывный рост используемой памяти приложением.

Исходный код, вызывающий утечку

program mac_REST_leak_test;
{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils, REST.Client, REST.Types, IPPeerClient;

var
   request : TRestRequest;
   ii, iMax : integer;
begin
   iMax := 1; 
   for ii := 0 to iMax do
   begin
      request := TRestRequest.Create(nil);
      // Fake Online REST API for Testing and Prototyping 
      request.Client := TRestClient.Create('http://jsonplaceholder.typicode.com/');
      request.Method := rmPOST;
      request.Execute();

      request.Client.Free();
      request.Free();
   end;
end.

Подтвержденный ответ

После анализа с помощью инструментов разработчика Instruments, было выявлено, что утечка связана с классами, относящимися к URL и HTTP на macOS. Обновление переменной iMax в цикле до 10 показало, что утечка происходит в классе Macapi.ObjectiveC.TConvObjID.XForm. Это было подтверждено и сообщено в Embarcadero под номером RSP-12242.

Альтернативный ответ

Использование последней версии FastMM4 с поддержкой отчетов об утечках для OSX может помочь в анализе утечек памяти. Однако, из-за наличия "глобальных" утечек в пустом FMX приложении, анализ может быть затруднен. Необходимо отделять утечки, связанные с объектами Delphi, от утечек, связанных с Objective-C, для более точного анализа.

Рекомендации по устранению утечки

  1. Обновите FastMM4 до последней версии SVN, чтобы использовать функционал отчетов об утечках для macOS.
  2. Отдельно анализируйте утечки, связанные с объектами Delphi, и утечки, связанные с Objective-C.
  3. Используйте инструменты разработчика Instruments для более глубокого анализа утечек.
  4. Следите за обновлениями в Delphi XE10, так как некоторые утечки уже были устранены.
  5. Сообщайте о найденных утечках в Quality Central и Quality Portal для их устранения в будущих обновлениях.

Заключение

Утечка памяти в REST клиенте для macOS - это серьезная проблема, требующая внимания разработчиков и использования современных инструментов для анализа и устранения утечек. Следуя рекомендациям и используя актуальные версии инструментов, разработчики могут эффективно решать подобные проблемы, делая свои приложения более надежными и эффективными.

Создано по материалам из источника по ссылке.

Проблема утечки памяти в REST клиенте для macOS в Delphi XE8, update 1, выявленная при использовании объектов `TRestRequest`, где на macOS наблюдается рост использования памяти, в отличие от Windows.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Память и Указатели ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 16:56:50/0.0033049583435059/0