Delphi - Минимизирует, и Восстановление освобождает память?

Я был обрызгиванием в Дельфи прочь и на в течение многих лет, и я всегда задавался вопросом, почему делает уменьшение, и восстановление приложения заставляют это использовать меньше памяти?

Как пример я использую Дельфи 7, и я создаю новый проект ни с чем на нем кроме незаполненного бланка, с которым начинаются все проекты, и затем я нажимаю F9, чтобы запустить приложение и затем посмотреть на использование памяти для приложения, и он находится на уровне приблизительно 3.5 МБ, я затем минимизирую приложение, и использование памяти снижается приблизительно до 760 КБ, и затем я наконец восстанавливаю приложение, и использование памяти возвращается приблизительно до 1.5 МБ, который является примерно 1/2 того, чем это было, когда он сначала загрузился, и это всегда смущало меня относительно того, что делает, это произойти и даже главный должно там так или иначе запустить приложение с некоторой директивой, которая заставляет его использовать 1.5 МБ памяти вместо 3.5 МБ, которые он обычно использует.

С наилучшими пожеланиями, Dave

9
задан dave 26 July 2010 в 11:22
поделиться

3 ответа

вероятно что-то с управлением памятью Windows. попробуйте то же самое с калькулятором Windows, и поведение будет таким же :))

вот ответ: http://support.microsoft.com/?kbid=293215 и у некоторых возникает тот же вопрос: http://digital.ni.com/public.nsf/allkb/9EA3D4258E037B8A8625763300434D4D

С уважением,

5
ответ дан 4 December 2019 в 21:07
поделиться

Здесь вы можете найти очень четкое объяснение от Яна Мартинса. Когда приложение сворачивает системный вызов SetProcessWorkingSetSize процедуры для освобождения неактивной памяти процесса.

Вы можете сделать то же самое, добавив этот код в свое приложение. В кнопке OnClick вы можете сделать это:

procedure LiberarMemoria;
begin
  if Win32Platform = VER_PLATFORM_WIN32_NT then
    SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
end;

Эффект аналогичен сворачиванию приложения. Если ваше приложение выполняет какую-то задачу, которая в конечном итоге использует большой блок памяти, вы можете принудительно освободить его после использования, используя этот небольшой код.

С уважением

4
ответ дан 4 December 2019 в 21:07
поделиться

См. Ответ Барри Келли на этот вопрос .

1
ответ дан 4 December 2019 в 21:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: