![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Искусственный рост потребления памяти в Delphi-приложении на Windows Server 2008 (x64, SP1) и пути его решенияDelphi , Синтаксис , Память и УказателиПроблема, с которой столкнулись разработчики Delphi-приложения, заключается в том, что при работе на Windows Server 2008 (x64, SP1) наблюдается постоянный рост использования памяти. Это поведение не характерно для других версий операционной системы, таких как Windows Server 2003 (x32 или x64), XP и т.д., где память используется нормально, то есть растет и уменьшается в зависимости от потребностей приложения. В ходе исследований было выяснено, что проблема связана с использованием критических секций. Пример кода, который демонстрирует проблему:
При выполнении этого кода в приложении VCL с кнопкой, которое отслеживается с помощью Process Explorer, можно наблюдать, что использование памяти растет с каждым нажатием на кнопку. Это связано с тем, что в Windows Server 2008 (x64, SP1) изменено поведение критических секций, и они не освобождают память отладочной информации до полного завершения работы приложения. Решение проблемыДля решения проблемы необходимо изменить код, чтобы вместо использования функции Пример кода для исправления проблемы:
Этот код необходимо вставить в начало проекта, чтобы он стал первой единицей, обрабатываемой компилятором. Это позволит заменить вызовы ЗаключениеПроблема роста потребления памяти в Delphi-приложении на Windows Server 2008 (x64, SP1) была выявлена как следствие изменений в реализации критических секций операционной системой. Использование функции Проблема заключается в повышенном потреблении памяти в Delphi-приложении на Windows Server 2008 (x64, SP1), вызванном неправильной работой критических секций, и решение состоит в использовании функции InitializeCriticalSectionEx с флагом CRITICAL_SECTION Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Память и Указатели ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |